それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

expect自動入力 を python で実現する

expect 便利ですよね。

expect コマンドがあればターミナルの自動入力が出来ます。

ruby でも使ってました。 でも ruby は gems がもう地獄でちょっとずつ python / javascript に移行しようと思っています。

使い方:import

import pexpect

起動と処理待ちは spawn

import pexpect

prc = pexpect.spawn("find")
prc.expect( pexpect.EOF )

コマンドの終了待ちは EOFで行います。

出力結果がほしい時

sys.stdout につなげます。

import pexpect
import sys

prc = pexpect.spawn("find")
prc.logfile = sys.stdout
prc.expect( pexpect.EOF )

文字列の送信

基本的な使い方が分かったので入力する。

import pexpect
import sys

prc = pexpect.spawn("ssh user@192.168.2.1 ")
prc.logfile = sys.stdout
prc.expect("password:")
prc.sendline("PASSWORD")
prc.expect( pexpect.EOF )

これでパスワードは入力できる。基本的なところが分かった。

spawn は 通常の spawn と同じ

prc = pexpect.spawn("ssh",["user@192.168.2.1 "] )

オプションを使うときは配列で与えてもいいし、パイプも使えるし。

すごく楽ですね。

なぜか、うちの環境にはpexpect が最初から入ってた。。。python 素晴らしい。

参考資料

Core pexpect components — Pexpect 4.1.0 documentation