1

pexpect、os、sys のインポート

cmd = "sudo su -"

p = pexpect.spawn(コマンド、タイムアウト=60)

pass_expect = ".*assword.*" ("[sudo] password for user" というプロンプトが表示されるため)

p.expect(pass_expect)

print "パスワードが欲しい"

p.sendline("mypassword")

p.logfile = sys.stdout

p.sendline("ログアウト")

p.close()

上記のスクリプトの実行中に次のエラーが発生します

エラー

トレースバック (最新の呼び出しが最後):

p.expect(pass_expect) 内のファイル「test.py」、11 行目

ファイル「/usr/lib/python2.6/dist-packages/pexpect.py」、1311行目、expect

return self.expect_list(compiled_pattern_list, timeout, searchwindowsize)

ファイル "/usr/lib/python2.6/dist-packages/pexpect.py"、1325 行、expect_list 内

return self.expect_loop(searcher_re(pattern_list), timeout, searchwindowsize)

ファイル "/usr/lib/python2.6/dist-packages/pexpect.py"、1409 行目、expect_loop 内

raise TIMEOUT (str(e) + '\n' + str(self))

pexpect.TIMEOUT: read_nonblocking() でタイムアウトを超えました。

バージョン: 2.3 ($改訂: 399 $)

コマンド: /usr/bin/sudo

引数: ['/usr/bin/sudo', 'su', '-']

サーチャー: searcher_re:

0: re.compile(".*assword.*")

バッファ (最後の 100 文字): root@:~#

前 (最後の 100 文字): root@:~#

後:

match: なし match_index: なし exitstatus: なし flag_eof: False pid: 16933 child_fd: 3 closed: False timeout: 60

delimiter: logfile: なし logfile_read: なし logfile_send: なし maxread: 2000 ignorecase: False searchwindowsize: なし delaybeforesend: 0.05 delayafterclose: 0.1 delayafterterminate: 0.1

私は数日からこの問題に悩まされているので、誰かが私を助けてくれませんか.

どんな助けでも大歓迎です。ありがとう !!

4

1 に答える 1

0

スーパーユーザーとしてログインする場合は、root@localhostを配置することを意味します

child = pexpect.spawn("ssh root@localhost")
child.logfile = open("/tmp/mylog", "w")
child.expect(".*assword:")
child.send("guest\r")
child.expect(".*\$ ")
child.sendline("python -V\r")
print child.before

pexpectを使用してリモートホストシステムでスーパーユーザー(root)にログインする方法は?

于 2013-04-06T06:00:05.713 に答える