Я новичок в bash сценариях. Я просто набрал скрипт, чтобы проверить, есть ли пользователь на удаленном сервере, и напечатал IP-адрес удаленных серверов, на которых этот пользователь существует, в файле с именем exist.txt.
Вывод команды "cat exist.txt" показывает мне IP-адрес, который я ожидал получить.
[root@controlnode script]# cat exist.txt
10.52.85.214
но когда я выполняю команду,
for i in `cat exist.txt` ; do ssh a@$i; done
я получаю сообщение об ошибке ": Имя или служба не известны 10.52.85.214"
Но вручную я могу s sh на сервер 10.52.85.214 и он работает нормально. Может кто-нибудь помочь мне, как решить эту проблему. Я думаю, что есть проблема с файлом, который генерируется из сценария. (exist.txt)
Сценарий как ниже
#!/bin/bash
pass=XXXXXXX
loginuser=a
testuser=jose
#Check whether the user exsists in the remove server and collect a list of servers where the user is available
> exist.txt
> non_exist.txt
for server in `cat serverlist`
do
echo "Checking server" $server
sshpass -p$pass ssh -t $loginuser@$server ' if [[ $(getent passwd' "$testuser"') ]]; then echo `hostname -I`; fi ' >> exist.txt
sshpass -p$pass ssh -t $loginuser@$server ' if ! [[ $(getent passwd' "$testuser"') ]]; then echo `hostname -I`; fi ' >> non_exist.txt
echo "Server $server Checked"
echo ".........................................................................................................................................."
echo " "
done