繁体   English   中英

在bash中将数组填充到ssh

[英]Populate array to ssh in bash

只是有些背景,我有一个文件包含1000台服务器,其中一行换了一行。 我必须将它们读入数组,通过SSH运行约5条命令。 我一直在使用heredoc表示法,但这似乎失败了。 目前,我收到一条错误消息,指出无法识别主机。

    IFS='\n' read -d '' -r -a my_arr < file
    my_arr=()
    for i in "${my_arr[@]}"; do
            ssh "$1" bash -s << "EOF"
            echo "making back up of some file"
            cp /path/to/file /path/to/file.bak
            exit
    EOF
    done

我得到的输出列出了第一个服务器,但随后列出了阵列中的所有服务器。 我知道我错过了导致这种情况的STDIN重定向。

谢谢您的帮助。

您需要数组吗? 出什么问题了:

while read -r host
do
  ssh "$host" bash -s << "EOF"
  echo "making back up of some file"
  cp /path/to/file /path/to/file.bak
EOF
done < file

明确地说-这里的问题以及问题中实际包含的代码中存在的唯一问题是,您在循环内使用了$1 ,而您将$i指定$i包含要在其上进行迭代的条目的变量循环的每次调用。

这就是说: ssh "$1"需要代替ssh "$i"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM