ファブリックとパスワードに関していくつか質問があるようです。-I を fabric に渡すと、入力したパスワードが環境変数「password」に渡されることがわかっています。問題は、リモート サーバーで別のリモート サーバーに対して ssh コマンドを実行するときに、パスワードの入力を求められることです。
しかし、パスワードの入力を求められたくありません。何をしようとしても促されます。コードの一部を次に示します。
elif "test" in run('hostname -d'):
print(blue("Gathering Knife info"))
run("ssh mychefserver knife node show `hostname`.test.dmz")
パスワードを入力すると問題なく動作します。問題は、パスワードを入力する必要がないことです。おそらくこれは、別の ssh 接続がリモート ホストで開始され、ファブリックがそれに対して何もできないためです。
スクリプトをリモート ホストから切断し、ローカルで ssh コマンドを実行してから、リモート ホストに再接続してスクリプトを終了することもできますが、それはばかげているようです。提案?
ゲットパス情報:
Python 2.6.6 (r266:84292, Sep 11 2012, 08:34:23)
[GCC 4.4.6 20120305 (Red Hat 4.4.6-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from getpass import getpass
>>> getpass('test: ')
test:
'This is a test'