我正在对服务器执行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脚本中运行我的整个命令。我该怎么做。
答案 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'“
请注意新的双引号字符。