2017-02-15 81 views
0

我正在做一個ssh到服務器並執行如下的shell腳本。我的shell文件的ssh使用參數執行一個shell腳本

ssh -o 'StrictHostKeyChecking no' [email protected]$some_ip_address sh execute_all.sh '/usr/local/bin/ruby /home/user1/run.rb 2>&1 >> /home/user1/run.log' 

內容有如下

if [ -z "$1" ] 
    then 
    echo "Please supply the command to be executed" 
    exit 1 
fi 
echo "$1" 
COMMAND=$1 
eval $COMMAND 
if [ $? -eq 0 ]; then 
    exit 0 
else 
    exit 1 
fi 

當我跑這一切我在日誌中獲取的是 '在/ usr/local/bin目錄/節點'。我也嘗試了$ *並打印'/ usr/local/bin/ruby​​ /home/user1/run.rb 2'。 很明顯,我的eval命令無法執行。

我想在shell腳本中運行我的整個命令。我怎麼做。

回答

0

引用命令通過SSH運行是棘手的,嘗試通過整個命令作爲一個參數,像這樣:

SSH -o USER1 @ $ some_ip_address「SH execute_all.sh 'StrictHostKeyChecking沒有'「/ USR/local/bin目錄/紅寶石/home/user1/run.rb 2> & 1 >> /home/user1/run.log'」

注意新的雙引號字符。