python端末シミュレーションツールpexpect

1922 ワード

Pexpectは純粋なPythonモジュールです.ssh、ftp、passwd、telnetなどのコマンドラインプログラムと自動インタラクティブに使用できます.コマンドラインとのインタラクションの自動化を実現する.
2つの主要なインタフェースrun()関数とspawnクラスを提供した.
run()関数
run機能は比較的簡単で、簡単なインタラクションしか実現できません
run(command,timeout=-1,withexitstatus=False,events=None,extra_args=None, logfile=None, cwd=None, env=None)

runコマンドを実行し、結果をosに返します.System類似
pexpect.run('ls -la')
#    (  ,    )
(command_output, exitstatus) = pexpect.run('ls -l /bin', withexitstatus=1)

spawnクラス
spawnはrunよりも強力で複雑なインタラクションを実現
class spawn 
    __init__(self, command, args=[], timeout=30, maxread=2000, searchwindowsize=None, logfile=None, cwd=None, env=None)

timeoutインタラクションが待機タイムアウト値であることを指定
maxreadはread bufferサイズを設定する.pexpect毎にTTY(Teletype端末)から読み出す最大バイト数を試みる.
searchwindowsizeは入力バッファからモードマッチングを行う位置を指定し、デフォルトではマッチングを開始する.
logfileパラメータログの記録位置を指定する
さぎょうプロセス
#           
child = pexpect.spawn('scp foo [email protected]:.')
#              
child.expect('Password:')
#                  
child.sendline(mypassword)

pxsshクラス
pxsshはpexpectの派生クラスであり、ssh接続を確立するために用いられ、pexpectより使いやすい.
login()ターゲットマシンへのssh接続を確立する
logout()接続を解放する
prompt()待機プロンプトは、通常、コマンド実行の終了を待つために使用されます.
作業プロセスはpexpectと同じです
#    pxssh  
s = pxssh.pxssh() 

hostname = raw_input('hostname: ') 
username = raw_input('username: ') 
password = getpass.getpass('password: ') 
#   ssh  
s.login (hostname, username, password) 
#          
s.sendline ('uptime') # run a command 
#         
s.prompt() # match the prompt 
#         
print s.before  # print everything before the propt. 

#          
s.sendline ('ls -l') 
#         
s.prompt() 
#         
print s.before 

s.sendline ('df') 
s.prompt() 
print s.before 

#   ssh  
s.logout()