概要
私が案件先で、Linux環境で元々は手動で実行していたプロセス起動シェルスクリプトを自動でプロセス起動ができるようID/PWの自動入力シェルスクリプト作成の依頼をされ、expectコマンド(対話シェルを自動化するためのコマンド)を使用したシェルスクリプトを作成しようと思ったが使用できない環境で困っており、その際に代用で使用したシェルスクリプトを記載いたします。
説明
今回は例として以下のシェルスクリプトでID/PWが自動入力できるか確認します。
●start.sh
#!/bin/sh
echo "IDを入れてください"
read ID
if test ${ID} = hogehoge >dev/null 2>&1 ; then
echo "IDを確認しました"
else
echo "IDが違います"
exit 1
fi
echo "PWを入れてください"
read PW
if test ${PW} = hugahuga >dev/null 2>&1 ; then
echo "PWを確認しました"
else
echo "PWが違います"
exit 1
fi
echo "ID:$ID/PW:$PWの入力を確認しました"
次にID/PWを自動入力するためのシェルスクリプトを作成します。
●ID_PW_Autofill.sh
#!/bin/sh
while read XXXX ; do ※1
eco "XXXX:$XXXX" 1>&2
case $XXXX in
*"IDを入れてください"*) ※2
;;
*"PWを入れてください"*) ※3
;;
esac
done
※は注意書きですので実際は必要ありません。
※1「XXXX」は変数の値を指しています。(好きな値入れても大丈夫です)
※2「IDを入れてください」の中身はstart.shでIDを求められる時の文言を記載します。(文言を間違えるとIDの自動入力ができないので注意)
※3「PWを入れてください」の中身はstart.shでPWを求められる時の文言を記載します。(文言を間違えるとPWの自動入力ができないので注意)
次にID/PWを記載したファイルを作成します。
●ID_PW.txt
hogehoge
hugahuga
今回IDをhogehoge、PWをhugahugaにしてます。
これでID/PWを自動入力するための材料は集まりました。
後は以下コマンドを実行します。
#cat IW_PW.txt | sh start.sh | sh ID_PW_Autofill.sh
XXXX:IDを入れてください
XXXX:IDを確認しました
XXXX:PWを入れてください
XXXX:PWを確認しました
xxxx:ID:hogehoge/PW:hugahugaの入力を確認しました
#
IP_PW.txtのID/PWの値をID_PW_Autofill.shの「XXXX」変数の値として代入しているので、IDは"IDを入れてください"の後に自動入力され、PWは"PWを入れてください"の後に自動入力されるようになりました。
おわりに
最後まで読んでいただきありがとうございました。
expectコマンドが使用できなかったときは焦りましたが、代用できて本当に良かったです。
Linuxの経験がまだ浅いため、もっと簡単に自動入力できる方法などご存じでしたらコメントください!