expectって便利だね!

こんにちは、有村です!
寒くなりましたね、冬ですね!!

さて今日は、「expectって便利だね!」がテーマです!
翻訳すると「期待」になりますが…いったい何を期待するんだ……

私の場合、会社のサーバに自宅から繋ごうとする際にシェルを実行するんですけど、それは

みたいな内容で書いていたんですよね。
そうすると、

と毎回パスワードを聞かれる。そして打つ。そう、毎回。

このパスワードはその度に異なるのかというとそうではなく、固定。
つまり、変化するのはIPだけなので、自分で入力するのもIPだけにしたかったんです。

何が起こっているのかと流れを追うと、
1. シェルで接続しようとする
2. 相手が「パスワードはなに?」と聞いてくる
3. パスワードを答える
4. 繋がる
ですね。
2と3は、「聞かれて答える」ということから対話形式と言うそうです。

毎回パスワード打つの面倒やんな〜と愚痴ってたら、「じゃあこれあげる」と素敵なシェルをいただきました!
それは…

というもの!

先ほどのシェルとの違いは、
・パスワードが定数になってる
expectっていうのが出てきた!
が大きいと思います!

spawnは、expect内で使える「プロセスの生成」です。
SSH接続のプロセスを開始するよ〜と言ってるんですね!

で、上に出てきたexpectが今回のポイントで、こいつは「マシンからの応答(対話)を読み取ってくれるやつ」です!

は、ダブルクォートで囲まれた部分を自動対話処理するよということ。
また、

では、「passwordを聞かれる」という対話の読み取りが期待されているんですね!

sendは、文字列を送信するコマンド。
つまり、「パスワードくれくれ」に対して、「これやで〜」と自動的に答えを返してくれているんです!

interactは、対話の終了。もうおしまいということ。

ほぉ〜!聞かれることが既に分かっているなら、expectを活用したほうが断然便利ですね!
私の場合はパスワードだけだからよかったものの、もっと複雑なことをやろうとすると、
「何回対話させんねん」ってくらい打ち込む項目が増えたりしそうですし…

それでは、きょうはこのへんで。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です