Script de shell para verificar o estado do servidor

0

Estou escrevendo um script que seria ssh no servidor VMWare e verifique se as VMs estão ativas ou não. Há algum erro na linha server=awk "/$i/{print $2}" /home/dharmit/scripts/vmids . Estou recebendo o seguinte erro

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

Eu sei que cometi algum erro ao citar. Mas não consigo encontrar qual é o erro.

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

Conteúdo de / 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

Alguém por favor pode me apontar onde estou cometendo um erro e qual é a solução?

    
por Dharmit 27.02.2012 / 05:38

1 resposta

1

Você está perdendo backquotes em torno do comando awk e as aspas duplas estão permitindo que $ 2 sejam interpolados pelo shell ao invés do awk. O servidor = linha deve ler:

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

As aspas duplas permitem que $ i seja interpolado pelo shell, que é o que você aparentemente deseja. As aspas simples impedem a interpolação de shell de $ 2. As backquotes fazem com que o comando awk seja executado e seu resultado seja transformado em uma string que se torna o valor da variável server .

    
por 27.02.2012 / 05:49