web-dev-qa-db-ja.com

PythonからExpectスクリプトを実行する最も簡単な方法

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アプリケーションではありません。

どうすればこれを回避できますか?

8
gortron

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に代わる方法があります。)

18
pyfunc

.expectスクリプトなので、スクリプトの拡張名を変更する必要があると思います。

使用する代わりに

subprocess.call("myexpect.sh", Shell=True)

あなたは使用する必要があります

subprocess.call("myexpect.expect", Shell=True)
0
MaxGu