2017-02-15 50 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'”

注意新的双引号字符。