bash脚本没有通过ssh csv文件的所有条目(Bash script does not ssh

2019-10-21 02:21发布

我试图修补与最新的补丁包了一堆CENT OS的机器。 我有以下的bash脚本,需要csv文件作为对那些机器的IP地址和密码输入。

该代码工作正常不过,也只是第一行工作,它似乎并没有被工作列表的其余部分我只output.txt的只有第一行主入口。

patch.sh

INPUT=hosts_test.cvs
OLDIFS=$IFS
IFS=,
[ ! -f $INPUT ] && { echo "$INPUT file not found"; exit 99; }
while read privateip password
do

sshpass -p$password ssh -t -o "StrictHostKeyChecking no" user123@$privateip "

hostname
hostname -I --all-ip-addresses
sudo yum -y update bash
env x='() { :;}; echo vulnerable' bash -c \"echo If you see the word vulnerable above, then you are vulnerable to shellshock\"
echo ""
exit

" >> output.txt

done < $INPUT
IFS=$OLDIFS

hosts_test.cvs

10.xxx.xx.219,abcd~qY1
10.xxx.xx.226,l4~abcdefg
10.xxx.xx.221,l4@abcdefgh

端子输出

伪终端不会被分配,因为标准输入不是终端。

Answer 1:

添加在您的sshpass命令结束</dev/null



Answer 2:

  1. 添加Defaults:username !requiretty/etc/sudoers配置
  2. 摆脱-t从你的ssh命令
  3. 可选,但建议:设立公共密钥身份验证,所以你不会有你的密码趴在文本文件中周围的人。


Answer 3:

你可以通过SSH另一-t强制分配pty:

ssh -t -t


文章来源: Bash script does not ssh all the entries of a csv file