当我在这个bash脚本中运行一个C程序时,它会返回错误。
ssh -n -f *.*.*.* "cd /home/sth/remote && echo "$1" && det=$(./ossec-rootcheck)">/home/sthh/res
错误:
./ossec-rootcheck: No such file or directory
我想ssh到远程计算机,然后在其上运行程序。我知道这个文件位于该路径中,因为当我看到它时,它可以正常工作。
ssh -n -f *.*.*.* "cd /home/sth/remote && echo "$1" && ./ossec-rootcheck">/home/sthh/res
和echo $1
一样,我可以看到cd /home/sth/remote
正确。但我希望该程序的返回值存储在变量中,例如det
。
答案 0 :(得分:2)
ssh -n -f *.*.*.* "cd /home/sth/remote; echo "$1"; ./ossec-rootcheck || do_your_work">/home/sthh/res
您不必将其存储在变量中。
||如果ossec-rootcheck!= 0
的退出状态,则执行do_your_work如果您想将数字退出状态存储在变量中,或者回显它,您可以(通过适当的转义):
./ossec-rootcheck; ecode=$?; echo $ecode
答案 1 :(得分:1)
获取远程代码的返回码或退出代码:
ssh -n -f *.*.*.* "cd /***/***/remote && echo \"$1\"; ./ossec-rootcheck; echo \$?">/home/ossl7/res
也可以捕获错误:
ssh -n -f *.*.*.* "exec 2>&1; cd /***/***/remote && echo \"$1\"; ./ossec-rootcheck; echo \$?">/home/ossl7/res
此外,当您发现它已经正常工作时,您可能需要省略&& echo \"$1\"
。你可以使用单引号:
ssh -n -f *.*.*.* 'cd /***/***/remote; ./ossec-rootcheck; echo $?' >/home/ossl7/res
或者
ssh -n -f *.*.*.* 'exec 2>&1; cd /***/***/remote; ./ossec-rootcheck; echo $?' >/home/ossl7/res