【expect】会話形式のコマンドを自動実行する。

ykarinoexpect,Job,コマンド,自動実行

最近、ゴールデンウィークに何をするか考え中のykarinoです。
久々に、部屋の大掃除をするのもいいかもしれません。

今回は、会話形式のスクリプトを実行したいときに使える、「expect」を軽く触ってみました。

実際に、expectを使用してsftpに接続するサンプルソースを紹介します。

サンプルソース【expect.exp】

#!/usr/bin/expect

# タイムアウト時間指定
set timeout 5
# sftpサーバ接続
spawn sftp 【ユーザ名】@【ホスト名】
# パスワード入力
expect "【ユーザ名】@【ホスト名】's password:"
send "【パスワード】\n"
# quitコマンド実行
expect "sftp>"
send "quit\n"

interact

次に、上記のサンプルソースの実行結果です。

サンプルソース実行結果【expect.exp】
$ ./expect.exp
spawn sftp 【ユーザ名】@【ホスト名】
Connecting to 【ホスト名】...
【ユーザ名】@【ホスト名】's password:
sftp> quit

「expect」は会話形式のコマンドをスクリプト内に組み込んで実行することができるので、
passwdコマンドなどヒアドキュメントで自動実行できないケース等で使えます。

ちなみに、PerlやPHP、Ruby、Pythonなど、他の言語用にExpect的なライブラリがあるようです。
次回は、Expect的なライブラリに関して紹介しようと思います。

ykarinoexpect,Job,コマンド,自動実行

Posted by ykarino