8
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Linuxでexpectコマンドを用いたシェルスクリプトを使用できなかった時に代わりに使用したシェルスクリプト

Posted at

概要

私が案件先で、Linux環境で元々は手動で実行していたプロセス起動シェルスクリプトを自動でプロセス起動ができるようID/PWの自動入力シェルスクリプト作成の依頼をされ、expectコマンド(対話シェルを自動化するためのコマンド)を使用したシェルスクリプトを作成しようと思ったが使用できない環境で困っており、その際に代用で使用したシェルスクリプトを記載いたします。

説明

今回は例として以下のシェルスクリプトでID/PWが自動入力できるか確認します。

●start.sh

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

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

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の経験がまだ浅いため、もっと簡単に自動入力できる方法などご存じでしたらコメントください!

8
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?