Pythonインストールに Expect スクリプト "myexpect.sh"を実行するように指示しようとしています:
#!/usr/bin/expect
spawn ssh usr@myip
expect "password:"
send "mypassword\n";
send "./mycommand1\r"
send "./mycommand2\r"
interact
私はWindowsを使用しているので、Expectスクリプトの行をPythonはオプションではありません。何か提案はありますか? "./myexpect.sh"のように実行できるものはありますか? bashシェルからですか?
サブプロセスコマンドである程度の成功を収めました。
subprocess.call("myexpect.sh", Shell=True)
エラーが発生します:
myexpect.shは有効なWin32アプリケーションではありません。
どうすればこれを回避できますか?
pexpectライブラリ を使用します。これは、Expect機能のPythonバージョンです。
例:
child = pexpect.spawn('Some command that requires password')
child.expect('Enter password:')
child.sendline('password')
child.expect(pexpect.EOF, timeout=None)
cmd_show_data = child.before
cmd_output = cmd_show_data.split('\r\n')
for data in cmd_output:
print data
Pexpectには、学ぶべき例がたくさんあります。インタラクション()の使用については、例からscript.py
を確認してください。
(Windowsの場合、pexpectに代わる方法があります。)
.expectスクリプトなので、スクリプトの拡張名を変更する必要があると思います。
使用する代わりに
subprocess.call("myexpect.sh", Shell=True)
あなたは使用する必要があります
subprocess.call("myexpect.expect", Shell=True)