Como posso fazer o ssh esperar até o comando sair? [fechadas]

1

Eu tenho um script que se parece com isso:

SERVER="RHT372 RHTl373 RHT374 RHTl375"

case $1 in
"stop")
  for SERVER in $SERVER
  do
    echo "================================================"
    echo Stopping $SERVER
    ssh  root@$SERVER /var/tmp/stopServer.sh server1 
  done
;;

Como posso fazer o ssh esperar que o comando termine, vá para o próximo servidor e emita o mesmo comando?

    
por user192506 03.10.2013 / 13:40

2 respostas

1

Para dar um exemplo, veja isto:

    #!/bin/bash

  (( $# != 1 )) && printf "%s\n" "Please provide one parameter"; exit 1;

    servers=( srv1 srv2 srv3 )

    case $1 in
    "stop")
        for srv in "${servers[@]}"
            do
     hostAlive=$(ping -s 64 "$srv" -c 1 | grep packet | awk '{print $(NF-4)}')

                echo "=========="
                echo "Stopping $srv"
        [[ "$hostAlive" == "0%" ]] && ssh root@$srv '/var/tmp/stopServer.sh server1'
            done;;
    "start")
        for srv in "${servers[@]}"
            do
                echo "=========="
                echo "Starting $srv"
                ssh....
            done;;
    *)
        echo "Not a valid option"
        exit 1;;
    esac

O comando ssh será executado apenas se o anterior tiver terminado sua operação. Se você precisar saber mais, consulte o comando wait .

    
por 03.10.2013 / 14:09
0

Quanto tempo demora até que um servidor seja desligado?

Você pode usar sleep entre os encerramentos do servidor.

Uso:

echo "Hi, I'm sleeping for 5 seconds..."
sleep 5
echo "all Done."
    
por 03.10.2013 / 14:09