在远程计算机上使用 rsh 运行命令

Posted

技术标签:

【中文标题】在远程计算机上使用 rsh 运行命令【英文标题】:Run command using rsh on a remote computer 【发布时间】:2012-02-25 13:40:09 【问题描述】:

我正在尝试运行 python 脚本,我需要从脚本中 Rsh 一个命令,我要运行的命令是:df -Pk|grep "sd\|md"|gawk 'print $2'

我这样做是-

cmd2='df -Pk|grep \\\"sd\|md\\\"|gawk \'print $2\''
process = subprocess.Popen(['rsh',ip,cmd2],stdout=subprocess.PIPE)
output = process.communicate()[0]

但是,当我运行脚本时,我没有得到任何输出。

我是 python 新手,据我所知,这是转义字符的问题。

任何帮助都会很棒。

注意: 我只能使用 Rsh,不能使用 ssh

谢谢

【问题讨论】:

你没有错过一个反斜杠来逃避 sd 之后的那个 您是否尝试过使用更简单的命令(例如 ls)来验证通信?您是否尝试过在本地执行 df/grep 命令? @Sid 抱歉,打错了。 @ScottHunter 是的,我已经在本地运行了命令并检查了通信。有用。以下也适用 - cmd = 'df -Pk' process = subprocess.Popen(['rsh',ip,cmd],stdout=subprocess.PIPE) output = process.communicate()[0] 【参考方案1】:

用三引号将命令用适当的 shell 引号括起来:

"""df -Pk|grep "sd\|md"|gawk 'print $2'"""

另请参阅 Python 教程的 bit on strings。

【讨论】:

@jdi:你删除了` before |, which changes the grep` RE 的含义。 撤回了哈哈。我只考虑自己的字符串格式而忘记考虑子流程:-) @larsmans 感谢您的链接。然而,三引号并没有帮助。 @sudologin:“它没有帮助”是什么意思?您是否尝试通过sh 而不是rsh 运行命令? @larsmans 是的,我做到了。但是我现在开始工作,只使用 'df -Pk' 作为 'cmd' 并在主机(本地)上完成了其余的解析,效果很好。

以上是关于在远程计算机上使用 rsh 运行命令的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 psexec 向远程计算机上启动的 cmd.exe 提供多个命令

在 Java 中通过 SSH 隧道运行远程命令

CUDA - 在远程计算机上运行 NVVP,在没有启用 CUDA 的设备的本地计算机上显示结果

如何在sbt脚本中运行远程ssh命令?

计算机无法连接到远程计算机上的另一个控制台会话,您正在运行一个控制台会话

计算机无法连接到远程计算机上的另一个控制台会话,您正在运行一个控制台会话,怎么办?