[英]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.