2016-12-27 4 views
0

배너에서 일련 번호를 가져 오려고합니다. 나는 배너 내용을 파일에 저장하여 성공적으로 처리했지만 이제 파일에 저장하지 않고 시도하고 싶습니다. 다음 코드 조각은 다음과 같습니다Python을 사용하여 배너에서 일련 번호 가져 오기

import argparse 
import logging 
import paramiko 

def grab_banner(ip_address, port): 
    client = paramiko.SSHClient() 
    client.load_system_host_keys() 
    client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
    try: 
     client.connect(ip_address, port=port, username='username', password='bad-password-on-purpose') 
    except: 
     return client._transport.get_banner() 
def GetSerialNo(ip_address,Banner): 
    fp1=open("Baner","w") 
    fp1.write(Banner) 
    fp1.close() 
    fp2=open("Baner","r") 
    for line in fp2: 
     if re.search("System S/N", line): 
      Serial = line.split() 
     return Serial[2] 
    fp2.close() 


if __name__ == '__main__': 

    logger = logging.getLogger(__name__) 

    parser = argparse.ArgumentParser(description='This is a demo script') 
    parser.add_argument('-s','--ipsetups', help='IP Address') 
    args = parser.parse_args() 
    Setup_File=args.ipsetups 
    fp=open(Setup_File,"r") 
    for line in fp.readlines(): 
     IP = line.strip() 
     logger.info("================================ WORKING on %s ===================================",IP) 
     Banner = grab_banner(IP, 22) 
     serial = GetSerialNo(IP, Banner) 
    logger.info("Serial Number is -> %s",serial) 
    fp.close() 

위의 코드는 잘 작동하지만, 지금은 약간의 변수에 저장 한 후 일련 번호를 잡아서 그것을 할 노력하고 있어요. 그러나 나는 그렇게 할 수 없다. 아래는 내가 할 노력하고 무엇 : 당신은 당신의 원본 코드에 GetSerialNo를 단순화 할 수

def get_ip(Setup_File): 
    IPS = [] 
    with open(Setup_File, 'r') as f: 
    for line in f: 
     IPS = line.split() 
     return IPS 

def grab_banner(ip_address, port): 
    client = paramiko.SSHClient() 
    client.load_system_host_keys() 
    client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
    try: 
     client.connect(ip_address, port=port, username='username', password='bad-password-on-purpose') 
    except: 
    return client._transport.get_banner() 

if __name__ == '__main__': 

parser = argparse.ArgumentParser(description='This is a demo script by Mangesh Pardhi.') 
parser.add_argument('-s','--ipsetups', help='PD-Setup IP Address') 
args = parser.parse_args() 
Setup_File=args.ipsetups 
print Setup_File 
IPS = get_ip(Setup_File) 
for IP in IPS: 
logger.info("================================ WORKING on %s ===================================",IP) 
    Banner = grab_banner(IP, 22) 
if "System S/N" in Banner: 
    XXXXXXXXXXHow To procees XXXXXXXXXXx 
    serial = Serial[2] 
logger.info("Serial Number is -> %s",serial) 

답변

0

.

def GetSerialNo(ip_address, Banner): 
     for line in Banner.split('\n'): 
      if re.search("System S/N", line): 
       Serial = line.split() 
       return Serial[2] 

는 (분명히 당신은 이미 당신이 매개 변수 ip_address을 필요로하지 않는다는 것을 알고있다.)

관련 문제