사용자 이름과 비밀번호를 사용하여 SSH를 통해 여러 서버에 연결하고 싶고 아래 스크립트에 사용자 이름과 비밀번호를 입력하는 옵션을 알아야 합니다.
for HOST in $(cat ping.txt ) ; do ssh $HOST "ping -c 10 google.com" ; done
답변1
sshpass를 사용할 수 있지만 사용하는 것이 더 좋습니다안시푸르. sshpass 사용 예:
# vim server.list
192.168.0.100
192.168.0.101
# apt-get install sshpass
$ vim script.sh
#!/bin/bash
while read -r line
do
echo "running $line"
SSHPASS=PASSWORD sshpass -e ssh-copy-id USERNAME@"$line" -o "StrictHostKeyChecking no"
done < "server.list"
스크립트를 실행합니다:
$ sh script.sh
running 192.168.0.100
...
Number of key(s) added: 1
running 192.168.0.101
...
Number of key(s) added: 1
답변2
설치하다 expect
,
#script.sh
#!/usr/bin/expect -f
username=user
password=pass
for HOST in $(cat $1)
do
echo "ssh $username@$HOST"
expect "Password:"
send "$pass\r"
done
file.txt
1.1.1.1
2.2.2.2
3.3.3.3
4.4.4.4
bash script.sh 파일.txt