2013-06-03 151 views
2

我有幾個函數的shell腳本。我需要在2臺不同的機器上運行這個n次數。我可以如下所述調用函數並執行它嗎?或者還有其他方法可以做到嗎?在腳本中通過SSH運行遠程服務器上的函數

#!/usr/bash 

execCommand() { 
    #few statements here 
} 

getStatus() { 
    #few statements here 
} 

main() { 
    execCommand 
    getStatus 
} 

$machine1="machine1" 
$machine2="machine2" 
$user="username" 
$n=2 

while [$n -le 2] 
do 
    ssh [email protected]$machine1 'main' 
    sleep 100 
    ssh [email protected]$machine2 'main' 
    n=$n+1 
done 
+0

遠程機器不會知道'main'函數。您必須通過'ssh'連接發送所有內容。您也可以將文件複製到遠程計算機,然後執行ssh執行。 – fedorqui

+0

[Shell腳本:從腳本通過ssh運行函數]的可能重複(http://stackoverflow.com/questions/22107610/shell-script-run-function-from-script-over-ssh) – Thomas8

回答

0

有沒有簡單的方法來做到這一點。但是,你可以提取所有的功能定義,並在遠程命令開始注入他們作爲一個命令:

,你仍然可能與全局變量和其他資源的問題
ssh "[email protected]$machine1" "$(declare -f); main" 

通知。

相關問題