0

Pythonスクリプトを使用してSSH経由で新しいディレクトリを作成しようとしています。Pythonコマンドラインを使用してコマンドを試すと、うまくいきます。しかし、スクリプトで同じことをしようとすると、新しい「テスト」フォルダーが作成されません (スクリプト内のコマンドを Python cmd にコピー/貼り付けして、それらが正しく動作していることを確認します)。では、スクリプトで機能しない理由はありますか?

使用されたコード:

child = pexpect.spawn('ssh 192.168.56.101 -oStrictHostKeyChecking=no')
child.expect=('password:')
child.sendline('MyPwd')
child.sendline('mkdir /home/myUser/Desktop/test')
4

2 に答える 2

0

この問題を解決するために私が通常行っているのは、ホスト マシンとの同期です。何かをマシンに送信した後、通常はマシンのプロンプトで翻訳される応答を期待します。したがって、あなたの場合、私は次のようなものに行きます:

child = pexpect.spawn('ssh 192.168.56.101 -oStrictHostKeyChecking=no')
child.expect('password:')
child.sendline('MyPwd')
child.expect('YourPromptHere')
child.sendline('mkdir /home/myUser/Desktop/test')
child.expect('YourPromptHere')

単一のターゲットでスクリプトを実行している場合は、YourPromptHereをマシンのプロンプトに置き換えるか、正規表現 (例: "(\$ )|(# )|(> )") に置き換えることができます。

tl;dr : 私が言ったことを要約すると、新しいアクションを送信するまで、前のアクションが完了するまで待つ必要があります。

于 2013-05-24T12:52:12.313 に答える