[英]Multiple SSH to remote server + Multiple remote commands
我列出了可以通過SSH連接到的40台服務器。 我要登錄的每個人都創建一個目錄,並將一個文件從我的計算機復制到所有40台服務器計算機。 我寫了這段代碼,但是它只是打開一個窗口並關閉了它。
#!/bin/bash
filename="$1"
while read -r line
do
name=$line
gnome-terminal -e "ssh -t -t xyz@$name -i ~/.ssh/id_rsa && mkdir test && scp client_google.py xyz@$name:/home/xyz/test"
#sleep 5s
echo "Name read from file - $name"
done < "/home/papps/nodes.txt"
Nodes.txt包含服務器的40個IP地址的列表。
注意:在上面提到的代碼中,我收到一條警告,指出身份文件不可用(id_rsa)。 請幫忙,我哪里出問題了? 謝謝。
應該給ssh提供命令以通過其標准輸入遠程執行。 查看以下方法:
#!/bin/bash
filename="$1"
while read -r line
do
name=$line
gnome-terminal -e "ssh -t -t xyz@$name -i ~/.ssh/id_rsa -n 'mkdir ~/test' && scp client_google.py xyz@$name:/home/xyz/test"
#sleep 5s
echo "Name read from file - $name"
done < "/home/papps/nodes.txt"
SFTP比純SSH更適合處理遠程文件。 這樣的事情應該起作用:
#!/bin/bash
filename="$1"
while read -r line
do
name=$line
gnome-terminal -e "{
echo mkdir test
echo put client_google.py test/client_google.py
} | sftp -b - -i ~/.ssh/id_rsa xyz@$name"
echo "Name read from file - $name"
done < "/home/papps/nodes.txt"
sftp -b - -i ~/.ssh/id_rsa xyz@$name
以批處理模式運行sftp,從標准輸入(-b-)讀取。 這兩個echo
命令為SFTP程序提供輸入。 在批處理模式下,如果mkdir命令失敗,則sftp
將退出。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.