bashのみで対話的なtelnetを自動実行する
目次
- はじめに
- サンプル
はじめに
telnet , ftp 等の対話的に使用するように作られたプログラムをスクリプト中に組み込んで定型的な作業を自動実行したい場合には expect を用いる方法等がメジャーですが、限定的な環境でexpectを使用できない場合はbashのみで行わなければなりません。
以下対話式Scriptです、簡単なんで説明は無しです :)
サンプル
- autocheck.sh
#!/bin/bash # # NOTE: autocheck.sh #******************************************************* targetdata() { cat <> result.log commandline() { sleep 1; echo "root" sleep 1; echo "$TARGETPASSWD" sleep 1; echo "hostname" sleep 1; echo "uname -a" sleep 2; echo "exit" } for DATA in `cat data.csv` do #Variable TARGETNAME=$(echo $DATA | cut -d , -f 1) TARGETADDRESS=$(echo $DATA | cut -d , -f 2) TARGETPASSWD=$(echo $TARGETNAME | tr "[A-Z]" "[a-z]") #target data information targetdata #autocheck core commandline | telnet $TARGETADDRESS | tee -a result.log done
- data.csv
BFKMP1,172.30.2.101 BFKMP2,172.30.2.102 BFKMP3,172.30.2.103
ちなみに対照サーバ側のパスワードはすべてホスト名の小文字である事が前提のScriptですが、弄れば data.csv にパスワード記述して対応する
パスワードでログインするようにすぐに改造できると思います :)