【问题标题】:ssh execute a shell script with argumentsssh 执行带有参数的 shell 脚本
【发布时间】:2017-02-15 23:38:51
【问题描述】:

我正在对服务器执行 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 脚本中运行我的整个命令。我该怎么做。

【问题讨论】:

    标签: shell ssh


    【解决方案1】:

    引用通过 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' "

    注意新的双引号字符。

    【讨论】:

      猜你喜欢
      • 2011-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-29
      • 2014-01-25
      • 1970-01-01
      • 2018-11-18
      • 1970-01-01
      相关资源
      最近更新 更多