Python如何通过ssh使用变量grep到远程机器

2024-09-27 19:26:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图通过ssh执行远程命令。 所有这些都可以从ssh连接以及其他简单的cmd命令(如“ls”)中正常工作。 但是,我想使用ls和grep来存储变量(ptrn)中的值 但我总是失败。 我尝试使用:

  • cmd=“ls-ltrd/export/home | grep%s ptrn”
  • cmd=“ls-ltrd/export/home | grep”+ptrn
  • cmd=“ls-ltrd/export/home | grep”,ptrn

但运气不好):

我的代码:

BuildServer = 1.2.3.4
ptrn = "abc"
cmd="ls -ltrd /export/home| grep ptrn"
ssh = subprocess.Popen(["ssh", "%s" % BuildServer, cmd],shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
print (ssh)

有人能帮我吗?在

谢谢大家。在


Tags: 代码命令cmdhome远程exportlsgrep
2条回答

如果我没看错,您需要grep获取ptrnPython变量的内容,因此需要将其传递给grep,而不是它的名称,这在上下文中没有任何意义。在

#!/usr/bin/env python
import subprocess
from pipes import quote

BuildServer = "1.2.3.4" # you pass it as a string to ssh
ptrn = "abc"
cmd="ls -ltrd /export/home| grep " + quote(ptrn) # Don't forget the space after grep.
ssh = subprocess.Popen(["ssh", "%s" % BuildServer, cmd], shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
print ssh.communicate()[0]

至于quotethisanswer提到它引用shell参数,因此{}将其视为单个参数。在

^{}从进程中读取输出并等待它结束。在

你可以试试这些:

  • cmd=“ls-ltrd/export/home | grep%s”%ptrn
  • cmd=“ls-ltrd/export/home | grep”+ptrn#注意空格

相关问题 更多 >

    热门问题