我想在多臺機器上運行同一套Unix命令。我知道ssh和下面的東西。我想寫一個shell腳本來做到這一點。我訪問的bash和ksh,我在Linux上的Red Hat 5使用ssh執行Unix命令列表
ssh [email protected] "echo \$HOME"
不過,我有2個問題:
- 我不斷收到提示輸入密碼。我怎麼能不提示我並自動輸入密碼?
- 如何執行多個命令?
我想在多臺機器上運行同一套Unix命令。我知道ssh和下面的東西。我想寫一個shell腳本來做到這一點。我訪問的bash和ksh,我在Linux上的Red Hat 5使用ssh執行Unix命令列表
ssh [email protected] "echo \$HOME"
不過,我有2個問題:
你應該使用key based authentification,可能加上ssh-agent
要記住關鍵密碼。
您可以調用
sh -c
作爲該命令,並向它傳遞一個包含要執行的命令列表的字符串。
ssh
在遠程機器上調用一個shell,所以你可以傳遞一個命令列表作爲一個字符串。
例如:
$ ssh [email protected] "echo 'Hello world'; whoami; cd/; ls"
使用ssh-agent爲所有命令設置身份驗證。或者把你的多個命令放到一個shell腳本中。
發送的命令列表的遠程外殼。可能的解決方案:
使用"
,逃生換行符格式化代碼和結束每個子語句與;
。
缺點:"
應該不是在命令列表中使用。
ssh [email protected] "\
echo 'Hallo sir, how are you doing?';\
whoami;\
cd /;\
ls\
"
使用'
並使用常規換行符格式化代碼。
缺點:'
應該而不是在命令列表中使用。
ssh [email protected] '
echo "Hallo sir, how are you doing?"
whoami
cd/
ls
'
注:使用相應的語句內"
或'
不一定會導致錯誤。雖然你可能會得到不明的結果。
謝謝,這些信息看起來很有幫助。但是,即使在機器1上生成密鑰並將其添加到機器2之後,仍然會提示輸入密碼。你有什麼想法嗎?這裏是我做的: 1.)machine1:ssh-keygen 2.)machine1:ssh-copy-id -i .ssh/id_rsa.pub user @ ip – Matt 2011-03-15 01:25:59
您現在需要啓動ssh-agent並使用ssh-add將其添加到您的鑰匙串,以防止未來的密碼提示。 – MikeK 2011-03-15 13:14:45
請注意,每次登錄時都需要這樣做。你也可以創建一個沒有密碼的ssh密鑰,但要注意安全隱含性(每個可以讀取私鑰的人都可以不用密碼連接)。 – 2011-03-15 13:49:38