簡體   English   中英

多個SSH到遠程服務器+多個遠程命令

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM