shell脚本-多个ssh连接

shell脚本-多个ssh连接

我的脚本有问题。当我运行脚本时,它起作用了。但它连接到单个服务器。 “iplist.txt”正在连接到第一个 IP 地址字段。它没有连接到其他服务器。我不知道我哪里做错了。你能帮助我吗 ?

我研究并应用了以前提出的许多问题。但结果又是一样的。

我想将来将此脚本用于不同的目的。我有140台linux服务器并且有zabbix代理。但是服务器上的 zabbix 代理已经过时了。

我的脚本;

#!/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"

脚本结果;

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

我的 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

答案1

注意到脚本中的exit 1和行了吗?exit 0他们明确停止脚本。您可能从其他地方复制了此文件,打算作为独立文件运行,但在您的情况下,这仅意味着脚本将在连接到第一个 IP 后退出。

当然,这不是您应该实现的目标。

  • 不要使用 sshpass 进行日常操作。使用一次即可设置密钥身份验证
  • 考虑使用 Puppet、Chef 等系统管理工具
  • 考虑使用合适的包,然后您可以使用包管理工具来验证版本。此外,使用包存储库可以轻松进行升级管理

相关内容