linux - Bash 脚本不会对 csv 文件的所有条目进行 ssh

标签 linux bash centos shellshock-bash-bug

我正在尝试用最新的修复包给一堆 CENT OS 机器打补丁。我有以下 bash 脚本,它将 csv 文件作为输入,其中包含这些机器的 IP 地址和密码。

代码工作正常,但是它只适用于第一行它似乎不适用于列表的其余部分,因为我的 output.txt 只有第一行主机的条目。

补丁.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

终端输出

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

最佳答案

在 sshpass 命令末尾添加 </dev/null .

关于linux - Bash 脚本不会对 csv 文件的所有条目进行 ssh,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26103962/

相关文章:

routes - HAproxy 透明模式独立设置

centos - 禁用 SELinux 后无法登录服务器

nginx - 无法在 Centos 上启动 NGINX

linux - 如何通过python获取apache服务状态

bash - awk中从数字到字符串的字符串转换

bash - 将脚本的输出作为独立的 bash 命令运行

linux - 使 bash 区分 Ctrl-<letter> 和 Ctrl-Shift-<letter>

linux - 什么是内存映射页和匿名页?

linux - 在 Linux 中查找由可执行程序设置的套接字选项

c - 如何在没有 exec*() 的多进程应用程序中处理 fork() 错误