我有这个脚本:
#!/bin/bash
./process-list $1
det=$?
echo $det
if [ $det -eq 1 ]
then
echo "!!!"
ssh -n -f 192.0.2.1 "/usr/local/bin/sshfs -r 192.0.2.2:/home/sth/rootcheck_redhat /home/ossl7/r"
rk=$(ssh -n -f 192.0.2.1 'cd /home/s/r/rootcheck-2.4; ./ossec-rootcheck >&2; echo $?' 2>res)
if [ $rk -eq 0 ]
then
echo "not!"
fi
fi
exit;
我 ssh
到系统 192.0.2.1
并在其上运行 sshfs
命令。实际上我想在系统 192.0.2.1
上挂载系统 192.0.2.2
的目录,然后在系统 192.0 上运行一个程序(位于该目录中) .2.1
。所有这些 ssh
和 sshfs
命令都能正常工作。当我手动运行它们并将程序 ossec-rootcheck
的输出写入文件 res
时,但是当我运行此脚本时,挂载已完成但没有输出写入文件 资源
。我猜程序 ossec-rootcheck
运行了,但我不知道为什么没有写输出!
在我不知道突然发生了什么之前,这个脚本曾经正常工作!
最佳答案
据我对程序的理解,远程机器有 stdin>stderr,但是你如何将它传送到正在评估 ssh 的本地机器?
结尾 ' 表示在 rk= 行上, 2>res 发生在本地。 (并且 ssh 没有错误,当 ssh 成功完成时,远程错误(如果有的话)会丢失。)您可以尝试 >res
它会得到 ssh 打印出的任何内容,不幸的是包括非错误。
关于linux - bash 脚本中的命令无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22891297/