서버 상태를 확인하는 쉘 스크립트

서버 상태를 확인하는 쉘 스크립트

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변수 값이 되는 문자열로 변환됩니다 .

관련 정보