![重定向远程服务器的输出](https://linux22.com/image/117919/%E9%87%8D%E5%AE%9A%E5%90%91%E8%BF%9C%E7%A8%8B%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%9A%84%E8%BE%93%E5%87%BA.png)
我正在尝试从远程 ubuntu 服务器上的 centos 本地计算机运行以下命令。但它没有发生。
ssh -t hostname su - -s /bin/bash bar "/home/bar/get_list.sh >> output-1"
运行上面的命令时,我们收到此错误
Connection to 192.11.13.2 closed.
该脚本位于远程计算机,我们希望将输出重定向到本地计算机。
如果我们运行它,它会询问我密码并显示输出数据
ssh -t HOSTNAME su - -s "/bin/bash USERNAME '/path/to/script.sh'"
但是当使用重定向运行时,>>
它不会询问我密码并显示连接已关闭
故障排除
我在这里做了一些故障排除,我试图重定向,>>
但是当我将其更改为>
正在创建文件时output-1
。
这是该文件的输出
cat output-1
Password:
su: Authentication failure
答案1
这Connection to 10.11.143.72 closed.
作为一个案例,表示命令执行成功,但文件是在本地创建的,remote-host
而不是在本地创建的。
请将重定向输出放在命令之外,以将结果记录在本地主机中。
ssh -t hostname su - -s /bin/bash bar "/home/bar/get_list.sh" >> output-1
另外,最好使用如下语法所示的命令(我概括了该命令):
ssh -t HOSTNAME su - -s "/bin/bash USERNAME '/path/to/script.sh'" >> inlocal.log
答案2
您编辑的问题目前仍然包含双引号内的重定向,这将迫使它在错误的服务器上创建文件(如果有效)。
不过,我建议您研究在脚本文件上设置 SUID 位。假设您有权在 Ubuntu 目标上进行设置,这意味着它将以 root 身份运行,而无需您实际以 root 身份登录。
我不完全明白为什么您当前的解决方案至少没有将“输入密码:”放入输出文件中。它可能检测到它没有与实时 tty 通信,尽管如果它可以通过 ssh 连接并连接到另一个盒子来做到这一点,我会印象深刻。