shell script - conexão múltipla ssh

0

Estou tendo problemas com meu script. Quando eu executo o script, funciona. Mas ele se conecta a um único servidor. "iplist.txt" está se conectando ao primeiro campo de endereço IP. Não está ligado a outros servidores. Eu não sei onde estou errado. Você pode me ajudar?

Eu estudei e apliquei muitas perguntas que foram feitas antes. Mas o resultado é o mesmo novamente.

Eu quero usar esse script para diferentes propósitos no futuro. Eu tenho um servidor linux de 140 e tenho o agente zabbix. Mas os agentes do zabbix nos servidores estão desatualizados.

Meu script;

#!/bin/bash
#set -x

servers=/Users/spala/works/iplist.txt

#set -u

while read -u140 multiplessh;
do


USER="testuser"
PASS="testpassword"
PORT="55022"
current_ver="3.2.3"

command1="/usr/sbin/zabbix_agentd -V & hostname -f /dev/null"
connection_method='/usr/local/bin/sshpass -p $PASS /usr/bin/ssh -n -p$port -o StrictHostKeyChecking=no $user@$multiplessh $command1'


first_step="$connection_method"

###
result=$(echo $first_step |grep 'zabbix_agentd\|.spala' | awk '{print $1, $5}')
# - 'zabbix_agentd' ---> "zabbix_agent -V" command output..
# - '.spala' my server hostname fqdn..--> test.spala test1.spala test2.spala

hostname=$(echo $result |awk '{print $1}')
version=$(echo $result |awk '{print $2}')


if [[ "$version" == "$current_ver" ]]
then
   echo "$hostname used version ---> $version"
   echo "Version is ok..."
   exit 1
else
   echo "$hostname used version ---> $version"
   echo "Old version.. Need update !"
   exit 1
fi
exit 0

done 140<"$servers"

resultados do script;

sh test.sh
test1.spala used version ---> 3.2.2
Old version.. Need update !

meu arquivo iplist;

cat /Users/spala/works/iplist.txt
1.1.1.1
2.2.2.2
3.3.3.3
4.4.4.4
5.5.5.5
...
total 140 servers
    
por spala 28.12.2016 / 07:52

1 resposta

0

Observe as linhas exit 1 e exit 0 no seu script? Eles explicitamente param o script. Você provavelmente copiou isso de algum outro lugar que deveria ser executado como um arquivo independente, mas no seu caso significa apenas que o script sairá depois de se conectar ao primeiro IP.

Com certeza, não é assim que você deve tentar fazer isso.

  • não use sshpass para operações diárias. Use uma vez para configurar a autenticação de chaves
  • considere o uso de ferramentas de gerenciamento de sistema, como Puppet, Chef e muitas, muitas outras
  • considere o uso de pacotes adequados, então você pode usar as ferramentas de gerenciamento de pacotes para verificar a versão. Além disso, use repositórios de pacotes para facilitar o gerenciamento de atualizações
por 28.12.2016 / 10:25