サーバーの状態を確認するシェルスクリプト

サーバーの状態を確認するシェルスクリプト

VMWareサーバーにSSH接続し、仮想マシンが起動していることを確認するスクリプトを作成しています。配線に若干の誤差がありますserver=awk "/$i/{print $2}" /home/dharmit/scripts/vmids。次のエラーが発生します。

./server_notify.sh: line 38: /688/{print }: No such file or directory

私は引用文でいくつかの間違いをしたことを知っています。しかし、エラーが何であるかが見つかりません。

for i in {144,528,544,576,592,624,640,688}
do
        ssh [email protected] vim-cmd vmsvc/power.getstate $i | grep off > /dev/null
        if [ $? -eq 0 ]
        then
                server=awk "/$i/{print $2}" /home/dharmit/scripts/vmids
                echo "$server is Down"
        fi
done

/home/dharmit/scripts/vmidsの内容

144 Web Server
528 N-Zimbra Mail Server
544 Zenoss
576 OTRS Supporting Tool
592 Proconsol
624 SVN
640 SFTP
688 FTP

誰かが私が間違っている部分と解決策が何であるかを指摘できますか?

ベストアンサー1

awkコマンドの周りにバックティックがありません。二重引用符を使用すると、シェルはawkの代わりに$ 2を挿入できます。 server= 行は次のようになります。

server=`awk "/$i/"' {print $2}' /home/dharmit/scripts/vmids`

二重引用符を使用すると、シェルは$ iを挿入できます。これは明らかに必要なものです。一重引用符は、シェルが$2を挿入するのを防ぎます。バックティックを使用すると、awkコマンドが実行され、結果が変数値になるserver文字列に変換されます。

おすすめ記事