【问题标题】:Run command using rsh on a remote computer在远程计算机上使用 rsh 运行命令
【发布时间】: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]

标签: python subprocess rsh


【解决方案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' 并在主机(本地)上完成了其余的解析,效果很好。
猜你喜欢
  • 2012-07-02
  • 2012-03-21
  • 2011-11-23
  • 2019-10-16
  • 1970-01-01
  • 1970-01-01
  • 2018-01-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多