下面我连接到远程计算机并读取(cat
)文件。输出是这样的:
AIMS_PASS=wreretet
ASAPMSTR_PASS=dfdgdg
CREP_PASS=gfhfh
DSS_PASS=dgfhhfh
ELS_PASS=Rdgdh
EXTAPI_PASS=qadgdbbc
我需要_PASS之前的单词,如AIMS,ASAPMSTR,CREP,..但这些是从远程服务器输出的。我知道如果数据是本地的,cut -d _ -f 1
会起作用。如何在远程服务器的输出上应用此命令。特别是在if loop
。
pswd = re.compile(r'\w_PASS\W')
if conn is None:
print machine +" " + "Successfully Authenticated\n"
stdin, stdout, stderr = ssh.exec_command("""python -c 'import os; \
print os.path.isfile("/a/etc/portal/db/secrets/db.shared") \
'""")
ret_val = stdout.read()
if ret_val:
print "db.shared file is there!"
stdin, stdout, stderr = ssh.exec_command("cat /a/etc/portal/db/secrets/db.shared")
data = stdout.read()
pswd_line = pswd.findall(data)
if pswd_line:
print data
<SOMETHING WHICH JUST GIVES ME THE WORD BEFORE '_PASS'>
#stdin, stdout, stderr = ssh.exec_command("cut -d _ -f 1")
#print stdout.read()
ssh.close()
break
else:
stdin, stdout, stderr = ssh.exec_command("exit")
答案 0 :(得分:1)
如果我理解了您的data
变量的含义:
x = "AIMS_PASS=wreretet\nASAPMSTR_PASS=dfdgdg"
[line.split('_PASS')[0] for line in x.split('\n')]
>>> ['AIMS', 'ASAPMSTR']
我使用Python split方法首先按新行拆分,然后按_PASS
拆分,然后取第一个元素。