Script shell do Linux para reiniciar algumas máquinas linux

1

Eu sou uma tarefa com algo que nunca fiz antes.

Tenho certeza que é fácil para alguns de vocês:)

Eu preciso executar um script de shell linux de nossa rede que conectará o ssh a esses dispositivos e os reinicializará com 15 minutos de diferença.

Eu imagino que será algo como isto:

#!/bin/bash

USERNAME=someUser
HOSTS="host1 host2 host3"
SCRIPT="pwd; ls"
for HOSTNAME in ${HOSTS} ; do
    ssh -l ${USERNAME} ${HOSTNAME} "${SCRIPT}"
done

Precisa conectar o comando reboot com a conexão ssh

for p in server1 server2 server3
do
  ssh ${p} sudo reboot
  sleep 900 
done

Eu preciso conectar e reiniciar após 15 minutos da primeira máquina reinicializada.

    
por Marcello Zamorano 13.11.2015 / 17:04

1 resposta

0

O que você está perguntando basicamente é algo assim.

#!/bin/bash
for i in 'cat ~/servers.txt'
do
    echo -n $i" "
    ssh -l sudo_user $i "sudo shutdown -r now"
    sleep 900
done

Lembre-se que, com o sono, você está emitindo aproximadamente 15 minutos após ter feito o pedido anterior, e não 15 minutos depois de terminar a reinicialização. O que você precisa pode ser feito com um simples bash shell, eu preferiria usar o Rundeck se estivermos falando de alguns servidores, ou o Ansible se estivermos falando de mais de 100.

O script também é melhor executado usando um usuário sudo; é uma boa prática não usar root para administração atual, e muito menos sobre ssh. Para funcionar perfeitamente, você teria que preencher o usuário antecipadamente com as chaves RSA ssh corretas em cada servidor e adicioná-lo ao grupo sudo.

    
por 13.11.2015 / 17:19