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
BFKMP1,172.30.2.101
BFKMP2,172.30.2.102
BFKMP3,172.30.2.103

ちなみに対照サーバ側のパスワードはすべてホスト名の小文字である事が前提のScriptですが、弄れば data.csv にパスワード記述して対応する
パスワードでログインするようにすぐに改造できると思います :)