Bash For Loop - solicita o intervalo de IP e a senha

0

Eu tenho um forro simples para loop que eu uso para verificar as coisas através de um número de servidores que possuem o mesmo conjunto de senhas. Eu quero desenvolver este um forro em um script que faz o login em um cluster de servidores via endereço IP, solicita uma senha e executa um comando. Como reiniciar um serviço. Isso é o que eu uso:

    for i in {1..253}
do sshpass -p PASSWORDHERE ssh -o StrictHostKeyChecking=no [email protected].${i} 'hostname
echo "Checking if foo.log exists: 'ls -lh /var/log/foo.log | wc -l'"
echo "Checking if bar.log is present: 'ls -lh /var/log/bar.log | wc -l'"
' 2>/dev/null; echo ""; done

Meu script-fu é fraco e eu realmente não tenho muita ideia de por onde começar. Aliás, quero conseguir isso com um conjunto básico de ferramentas. Não consigo instalar nada de terceiros.

Qualquer ajuda apreciada.

    
por Moif Murphy 10.11.2015 / 22:45

1 resposta

1
for i in {1..253}
do 
    ip=192.168.1.${i}
    echo "Enter password for: $ip"
    read pswd
    case "$pswd" in
        *) password=$pswd;;
    esac
    sshpass -p "$password" ssh -o StrictHostKeyChecking=no username@$ip 'hostname
    echo "Checking if foo.log exists: 'ls -lh /var/log/foo.log | wc -l'"
    echo "Checking if bar.log is present: 'ls -lh /var/log/bar.log | wc -l'"
    ' 2>/dev/null
done

Isso deve funcionar. Lembre-se, ctrl + c irá matar este loop se você se cansar dele durante o teste, ou apenas usar um intervalo menor para depurá-lo, como 1 a 5.

    
por 11.11.2015 / 01:17