ssh用参数执行shell脚本

时间:2017-02-15 14:09:30

标签: shell ssh

我正在对服务器执行ssh并执行如下所示的shell脚本。

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

我的shell文件内容如下

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 / node'。我也试过$ *并打印' / usr / local / bin / ruby​​ /home/user1/run.rb 2'。 显然我的eval命令无法执行。

我想在shell脚本中运行我的整个命令。我该怎么做。

1 个答案:

答案 0 :(得分:0)

通过SSH运行引用命令很棘手,尝试将整个命令作为单个参数传递,如下所示:

  

ssh -o'StrictHostKeyChecking no'user1 @ $ some_ip_address“sh execute_all.sh'/ usr / local / bin / ruby​​ /home/user1/run.rb 2>& 1>> / home / user1 / RUN.LOG'“

请注意新的双引号字符。