« 地下鉄路線図をアートに | トップページ | 中国の内政干渉(またですか... »

2006/08/24

Pexpectで対話型プログラムを自動化

ブックマークに追加する
リンク:Pexpect - a Pure Python Expect-like module

Pythonから対話型プログラムとのやりとりを自動化するためのライブラリ。
シェルアクセス等の大抵のやりとりを自動化できるpython版EXPECT

Python標準ではcommands というライブラリがあるが、Pexpectでは、commandsライブラリよりも細かいコントロールを行うことが可能。

例えば、SSHで他のホストに自動的にアクセスして特定のファイル状況を確認したい場合、
import pexpect
command = 'stat /home/user/logfile.log'
childproc = pexpect.spawn('ssh -l %s %s %s' % (user, host, command), timeout=60)
childproc.expect(pexpect.EOF)
resultstr = childproc.before
とすれば、「resultstr」に「stat」コマンドの結果が入っているため、必要な情報を文字列から切り出せば良い。

特に pexpect の場合、実行プログラムをターミナルから実行した場合とバックグラウンドで実行した場合、cronから呼び出して実行した場合のいずれにおいても改行コードが同じ文字列となっていたので、文字列の切り出しは
split('\r\n')
でリストに分割できる。

昔、commandsを使って同じことをやらせたときには、このバッチ処理か否かによって改行コードが変わってしまい、ちょっとはまったことがあった。

●お探し物は見つかりましたか?まだの方は以下の検索をご利用下さい。
 
当ブログ内 (within this blog) Web
●当ブログのRSSフィードをお手持ちのRSSリーダーにご登録いただくと、エントリ追加時のみ更新通知が届くため、確認の手間が省けます。よろしければ、どうぞ。
当ブログのRSSフィード
●当ブログの更新情報+α(deliciousのブックマーク他)はTwitter経由でも確認できます。是非フォローしてください。(実はRSSフィードよりも更新が早かったりします)

|

Python」カテゴリの記事

blog comments powered by Disqus


●Google広告


●その他の広告



トラックバック

この記事のトラックバックURL:

●トラックバックされる方へのご注意
本文中でこのエントリのアドレスを引用してください。引用(言及リンク)がない場合はスパム(迷惑行為)として削除します。
なお、迷惑行為かどうかを人力で判定しているため、トラックバックが反映されるまでに少々、お時間を頂いています。
For foreigners: If you would like to trackback to this entry, please include permlink of this entry in your entry. If your entry doesn't include this permlink, I will delete your trackback as spam.

この記事へのトラックバック一覧です: Pexpectで対話型プログラムを自動化:

 
Google