dovecotプロセスの110ポート番号にncコマンドで接続し、その接続結果を基に真偽比較し、
dovecotプロセスを再起動させるスクリプトを作成中です。
ncコマンドではなく、PSコマンド実行結果判定でもいいのですが
今回の質問では、ncコマンドで実行結果を判定にしたいと思っています。
下記が作成中のスクリプトです スクリプト名はmonitor.shです
#!/bin/sh CHECK=DOVECOT DOVECOT_PORT=110 DEST=localhost dovecot_nc_result=`echo -n |/usr/bin/nc $DEST 110 |awk '{print $1,$2,$3}'` if [ $dovecot_nc_result -eq "+OK Dovecot ready." ]; then echo "OK" else /usr/bin/systemctl restart dovecot > /dev/null 2>&1 echo `date`|mail -s "alert ${DEST} ${CHECK} NG!" ${MAIL_TO} fi
内容は、
echo -n |/usr/bin/nc smail02.prod.carview.co.jp 110 |awk '{print $1,$2,$3}' +OK Dovecot ready.
ncコマンド実行結果の 「+OK Dovecot ready.」の文字列と
IF文条件内で+OK Dovecot ready.文字列とを比較して
一致していれば、echo "OK"
不一致ならば、
/usr/bin/systemctl restart dovecot
実行するスクリプトになります。
+OK Dovecot ready. はあらかじめ、変数指定でもいいのかとは思っています
sh -x monitor.shでテスト実行すると
monitor.sh: 6 行: [: 引数が多すぎます となりますなります
6行目は if [ $dovecot_nc_result -eq "+OK Dovecot ready." ]; then
になります。
この引数が多すぎますとなる解決をするにはどうすればいいのでしょうか
また、IF文内で+OK Dovecot ready.
の文字列比較する時の記述自体が誤りがあるのでしょうか
ご教示頂けますと幸いです
宜しくお願いします

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/08 13:51