在远程计算机上使用 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 提供多个命令
CUDA - 在远程计算机上运行 NVVP,在没有启用 CUDA 的设备的本地计算机上显示结果