簡體   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