コマンドプロンプト向けの expect を Go 言語で作った。
特徴
- スクリプトは Lua で書く。GopherLua を使ったので、lua53.dll は不要
- 画面のプロンプトを待つ
except()
関数は、本家だと標準出力・標準エラーを監視するが、こちらは「現在カーソルがある行とその上の行」を0.1秒間隔で監視させている - コマンドに入力内容を送信する
send()
関数は、本家だと標準入力に文字列を流し込むが、こちらはキーボードが叩かれたのコンソールイベントを発生させている
使用例
実装した関数は spawn
、expect
、send
だけなんだけど、Lua なのでいろいろ柔軟なことが出来る。
if spawn([[c:\Program Files\Git\usr\bin\ssh.exe]],"foo@example.com") then expect("password:") send("PASSWORD\r") expect("~]$") send("exit\r") end
作った感想
- UNIX/Linux サーバ相手に本気で expect とかやりたい人は、TeraTerm マクロを使う
- Windows での動作の自動化は Command Prompt だけではどうにもならない場合が多い。
使ってもらえるシーンないな!(まだ技術の無駄遣い)