从远程机器的输出中进行模式匹配和提取数据。
Pattern matching and extracting data from a remote machine's output.
下面我连接到远程机器并读取 (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")
如果我理解正确你的 data
变量包含什么:
x = "AIMS_PASS=wreretet\nASAPMSTR_PASS=dfdgdg"
[line.split('_PASS')[0] for line in x.split('\n')]
>>> ['AIMS', 'ASAPMSTR']
我用的是Python split的方法,先换行分割,再按_PASS
分割,然后取第一个元素。
下面我连接到远程机器并读取 (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")
如果我理解正确你的 data
变量包含什么:
x = "AIMS_PASS=wreretet\nASAPMSTR_PASS=dfdgdg"
[line.split('_PASS')[0] for line in x.split('\n')]
>>> ['AIMS', 'ASAPMSTR']
我用的是Python split的方法,先换行分割,再按_PASS
分割,然后取第一个元素。