쉘 스크립트 - 다중 SSH 연결

쉘 스크립트 - 다중 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와 같은 시스템 관리 도구 사용을 고려해보세요.
  • 적절한 패키지 사용을 고려한 다음 패키지 관리 도구를 사용하여 버전을 확인할 수 있습니다. 또한 패키지 저장소를 사용하면 업그레이드 관리가 쉽습니다.

관련 정보