2015-09-15 53 views
-1

下面我連接到遠程機器並讀取(cat)文件。輸出是這樣的:模式匹配和從遠程機器的輸出中提取數據。

AIMS_PASS=wreretet 
ASAPMSTR_PASS=dfdgdg 
CREP_PASS=gfhfh 
DSS_PASS=dgfhhfh 
ELS_PASS=Rdgdh 
EXTAPI_PASS=qadgdbbc 

我喜歡AIMS,ASAPMSTR,CREP,_PASS之前需要的話。但這些都是從遠程服務器輸出。如果數據是本地的,我知道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("https://stackoverflow.com/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") 

回答

1

如果我理解正確的話你的data變量保存:

x = "AIMS_PASS=wreretet\nASAPMSTR_PASS=dfdgdg" 
[line.split('_PASS')[0] for line in x.split('\n')] 
>>> ['AIMS', 'ASAPMSTR'] 

我使用Python split方法首先由新行分割,然後通過_PASS分裂,然後在第一個元素。

+0

非常感謝! –