前几天写了一段代码,是用来检查思科设备的端口运行状态的,只是中间有些bug或是存在安全问题,比如密码写在脚本里,对网络不可以达的设备没有进行判断并加以跳过。以下对前两天写的代码进行修改。

#!/usr/bin/python from netmiko import ConnectHandlerfrom netmiko.ssh_exception import NetMikoTimeoutExceptionimport timeimport sysimport getpassclass CiscoNetwork():        def __init__(self,username,password):                 self.username = username                 self.password = password        def CiscoDevice(self,iplist):		 self.device={'device_type':'cisco_ios',                              'username':self.username,                              'password':self.password,                              'ip':iplist                             }		 print('-'*100)                 print "[+]connect to network device... %s" %(iplist)                 self.connect = ConnectHandler(**self.device)	         self.connect.enable()        def gethostname(self):                self.hostname = self.connect.find_prompt()                self.hostname = self.hostname.replace("#","")                print self.hostname                     def show(self,cmd):    	         self.output = self.connect.send_command(cmd)                 for self.line in self.output.split('\n'):                    if 'line protocol is up'  in self.line:                        print (self.line)         def close(self):                if self.connect is not None:                       self.connect.disconnect()                       self.connect = None                        if __name__ == '__main__':	print "[+] This Program is beging done......."        username = raw_input('Username:')        password = getpass.getpass() 	for iplist in open("/opt/other/ip.txt"):                try:                   switch = CiscoNetwork(username,password)                   switch.CiscoDevice(iplist)                   switch.gethostname()                   switch.show('show int')                   switch.close()                except (EOFError, NetMikoTimeoutException):                   print ('Can not connect to Device')

   

   01.png