linux - bash 脚本中的命令无法正常工作

标签 linux bash ssh

我有这个脚本:

#!/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。所有这些 sshsshfs 命令都能正常工作。当我手动运行它们并将程序 ossec-rootcheck 的输出写入文件 res 时,但是当我运行此脚本时,挂载已完成但没有输出写入文件 资源。我猜程序 ossec-rootcheck 运行了,但我不知道为什么没有写输出! 在我不知道突然发生了什么之前,这个脚本曾经正常工作!

最佳答案

据我对程序的理解,远程机器有 stdin>stderr,但是你如何将它传送到正在评估 ssh 的本地机器?

结尾 ' 表示在 rk= 行上, 2>res 发生在本地。 (并且 ssh 没有错误,当 ssh 成功完成时,远程错误(如果有的话)会丢失。)您可以尝试 >res 它会得到 ssh 打印出的任何内容,不幸的是包括非错误。

关于linux - bash 脚本中的命令无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22891297/

相关文章:

c - forkpty - 套接字

linux - 如何在 Bash 中的 If 语句中更改变量值?

linux - mobaXterm 如何知道 x11 转发是否在远程服务器上工作?

python - 使 su 非交互式

linux - 只要子进程仍在运行,就在父进程中每 90 秒在 perl 中记录一次消息

Linux USB驱动probe()问题

linux - 允许 ssh 传入/传出并阻止除特定端口外的所有传出

linux - 使用排除从 jar 存档中删除文件

python - SSH连接成功后执行命令

c - 了解代码 Linux 设备驱动程序 m25p80.c