Verifica o status de muitos servidores remotos

0

Eu preciso conectar remotamente a 800 servidores usando um usuário que está tendo acesso ao sudo n do points (na ordem 1,2,3)

  1. verificar o status do syslog

    • Se estiver em execução, vá para a etapa 2
    • Se não reiniciar o serviço d
  2. Faça a entrada em /etc/sudoers da máquina remota

    • como sudo echo "ABC" >> /etc/sudoers
  3. Faça uma entrada no arquivo local da máquina local (na qual estou executando o script) do que foi feito no script

Eu consegui criar um script que inicia um serviço remotamente.

for i in 'cat test1'

do 
{
echo "********************************************$i***************************************************"
sshpass -p '<password>' ssh -t abc@$i "sudo /etc/init.d/httpd start
}
done

Nota: Os servidores a serem conectados estão em test1 file

Pls deixe-me saber como integrar acima de três em um único script

    
por Ankush kalra 08.10.2016 / 17:24

3 respostas

1

800 servidores é muito para gerenciar. Você deve considerar investigar outras soluções.

  • Sal que usa um servidor mestre e um processo minion em cada máquina gerenciada
  • Ansible , que é semelhante ao sal.
  • Puppet Outro software de gerenciamento
  • Dependendo da sua distribuição, você pode investigar um pacote deb ou RPM que encerre todas as alterações que deseja fazer e distribuí-lo com um repositório.
  • Um daemon de manutenção como monitora ou runv pode assistir ao sistema e garantir que seu serviço syslogd esteja em execução.

Nota lateral : editar diretamente o /etc/sudoers não é mais uma prática recomendada Em vez disso, você deve descartar arquivos personalizados em /etc/sudoers.d/ e certifique-se de que /etc/sudoers contenha includedir /etc/sudoers.d

    
por 09.10.2016 / 02:07
0

Se (e somente se) os comandos que você está usando implementarem os valores de retorno corretos que os comandos normais do shell esperam, você pode fazê-lo com algo como

sshpass -p '<password>' ssh -t abc@$i "command to check syslog || command to restart service && command to add sudo entry" && local command

A ideia é que em cada estágio você dependa do valor de retorno correto. Se command to check syslog falhar, então command to restart service será executado, se isso for bem sucedido, então command to add sudo entry será executado.

O comando ssh deve retornar o valor do último comando executado e, se estiver tudo bem, o local command será executado.

Claro que isso é muito grosseiro, se fosse mais estável dividir esses comandos em comandos ssh separados, verificando o valor de $? de retorno a cada vez, para que você pudesse fazer eco de qualquer problema no terminal ou em um arquivo de log. / p>     

por 09.10.2016 / 00:36
0

Escreva um script contendo tudo o que você precisa para usar o ssh para executá-lo em um servidor remoto

Referência

ssh root@MachineB 'bash -s' < local_script.sh

O script será executado como se fosse local para o MachineB

    
por 09.10.2016 / 03:25