child = pexpect.spawn ('/bin/bash')
child.sendline('ls')
print(child.readline())
print child.before, child.after
私の出力でこのコードで得られるのは
ls
ls
しかし、私のコードが
child = pexpect.spawn('ls')
print(child.readline())
print child.before, child.after
その後、動作しますが、最初の2枚の印刷のみです。間違った送信コマンドを使用していますか? send、write、sendlineを試しましたが、もう見つかりませんでした。
Pexpectでは、before
およびafter
属性はexpect
メソッドの後に設定されます。この状況で使用される最も一般的なことは、プロンプトを待つことです(したがって、前のコマンドの実行が終了したことがわかります)。したがって、あなたの場合、コードは次のようになります。
child = pexpect.spawn ('/bin/bash')
child.expect("Your bash Prompt here")
child.sendline('ls')
#If you are using pxssh you can use this
#child.Prompt()
child.expect("Your bash Prompt here")
print(child.before)
以下を試してください:
_import pexpect
child = pexpect.spawn('ls')
print child.read() # not readline
_
read()
は、lsの出力全体を提供します。
#!/usr/bin/env python
import pexpect
child = pexpect.spawn("ssh [email protected] -p 2222")
child.logfile = open("/tmp/mylog", "w")
child.expect(".*assword:")
child.send("XXXXXXX\r")
child.expect(".*\$ ")
child.sendline("ls\r")
child.expect(".*\$ ")
ログファイルを開きます:-ターミナルに行きます
$gedit /tmp/mylog
import sys
import pexpect
child = pexpect.spawn('ls')
child.logfile = sys.stdout
child.expect(pexpect.EOF)
必要なものは次のとおりです。
p = pexpect.spawn('ls')
p.expect(pexpect.EOF)
print(p.before)
または
p = pexpect.spawn('/bin/ls')
p.expect(pexpect.EOF)
print(p.before)
または
p = pexpect.spawn('/bin/bash -c "ls"')
p.expect(pexpect.EOF)
print(p.before)
あるいは
print(pexpect.run('ls'))
クラスspawn(SpawnBase)docstringからコピーします。おそらく、example-2が欲しいものです。
ファイルへのログの入出力の例::
child = pexpect.spawn('some_command')
fout = open('mylog.txt','wb')
child.logfile = fout
Stdoutへのログの例::
# In Python 2:
child = pexpect.spawn('some_command')
child.logfile = sys.stdout
# In Python 3, we'll use the ``encoding`` argument to decode data
# from the subprocess and handle it as unicode:
child = pexpect.spawn('some_command', encoding='utf-8')
child.logfile = sys.stdout