obtendo vários problemas ao criar um script para atualizar os nomes de host no arquivo / etc / hosts?

1

Sou completamente novo nos scripts e, portanto, preciso de ajuda para corrigir isso.

Temos cerca de 3000 VMs e & 450 servidores físicos que são servidores baseados em Linux (poucos do Ubuntu, a partir de 9.x e poucos deles são Susu começando 8.X e maioria deles são RHEL a partir de 4.x até 7.4) em todos eles eu preciso para adicionar algumas entradas de nome de host com detalhes de IP em seus respectivos arquivos / etc / hosts.

Eu tenho usuários diferentes em cada servidor com acesso completo aos sudoers que posso usar Por isso, criei um arquivo CSV com nome de host, nome de usuário & formato de senha. que contém detalhes necessários para efetuar login. O nome do arquivo é "hostname_logins.csv"

Eu preciso fazer upload de um arquivo (por exemplo, hostname_list para cada um desses servidores e, em seguida, atualizar os mesmos detalhes em cada um dos arquivos host dos servidores.

Eu estarei executando este script usando um servidor RHEL 6. (Todos os outros hosts são resolvíveis deste servidor e estão acessíveis, já o confirmei).

portanto, precisamos de ajuda para corrigir esse script.

script não sabe o que está errado, pois sou novo em scripts:

#!/bin/bash

while read hostname_login user_name user_password
do
        scp -p ./hostname_list $user_name:$user_password@$hostname_login:/tmp
        ssh -eS $user_name:$user_password@$hostname_login [bash -c "echo rishee | sudo -S mv /tmp/hostname_list ./hostname_list && cp -p /etc/hosts /etc/hosts.bkp && cat ./hostname_list >> /etc/hosts && rm -f ./hostname_list"]
done < hostname_logins.csv

Eu preciso fazer isso como um script único que funcionará em todos esses servidores. obrigado antecipadamente.

    
por Hrish 17.10.2017 / 16:06

1 resposta

1

é sempre uma boa idéia fazer com que seus scripts sejam executados repetidamente sem efeitos colaterais (idempotente) ... acima você está fazendo um backup do arquivo crítico / etc / hosts, no entanto, você está limpando o mesmo backup próxima execução - muito perigosa se não for letal quando o / etc / hosts for corrompido

execute um script preliminar para simplesmente copiar o / etc / hosts para algum arquivo de trabalho e então execute o seu script em relação a essa cópia de trabalho, depois que ele funcionar bem em algum servidor de brinquedo e emita o script usando / etc / hosts

Seu conjunto acima de comandos combina com o seu userid e sudo, que lhe darão erros de permissão ... Eu sugiro que você scp abaixo do arquivo em cada caixa e execute como sudo em cada caixa remota ... entenda a sintaxe dentro / etc / hosts e confirme se as linhas anexadas estão em conformidade com a boa sintaxe

#!/bin/bash

set -o errexit #  exit on any error
set -o xtrace  #  print command prior to execution

hostname_file=/root/hostname_list

working_hosts=/etc/hosts.working

mv /tmp/hostname_list  $hostname_file 

cp -p /etc/hosts $working_hosts

cat $hostname_file  >> $working_hosts

rm $hostname_file

echo here is contents of file $working_hosts

cat $working_hosts

acima não é o script finalizado, mas levará 90% ao longo de ... em um servidor de brinquedo depois que você alterar acima para usar o arquivo real / etc / hosts, certifique-se de reiniciar o servidor de brinquedo e verificar OK

    
por 17.10.2017 / 17:29