Mar-29-2018, 05:35 PM
Below script is working, however randomly few devices showing as time out, but those devices are reachable to able to telnet.
Thanks for our Moderators/admin and members supporting for this script.
Thanks for our Moderators/admin and members supporting for this script.
#!/usr/bin/python
import threading
import sys
import os
import unidecode
import telnetlib
import time
import re
from time import sleep
start = time.time()
user = 'eciecidslam'
password = 'Hi-FOCuS'
start = time.time()
macfile = open('mumecimac.txt','w')
def open_telnet(host):
#with open('eci.txt','r') as ipfile:
# for sr_no, line in enumerate(ipfile, start=1):
# host = line.strip()
timeout = 120
sr_no = 0
try:
session = telnetlib.Telnet(host, 23, timeout)
time.sleep(2)
session.read_until(b"Login :")
session.write((user+"\r").encode('ascii'))
time.sleep(2)
session.read_until(b"Password :",2)
session.write((password + "\r").encode('ascii'))
time.sleep(2)
session.read_until(b"MCR64A >")
session.write("dishash all".encode('ascii') + b"\r")
output = session.read_until("MCR64A >".encode('ascii'), timeout )
for line in output.decode('utf-8').split('\n')[4:]:
line = line.split('|')
if len(line) == 8:
mac, bport, vlan = map(lambda x: x.strip(), line[:3])
mac_address = mac2norm(mac)
#MyList = host,mac_address, bport, vlan
command = "bportr " +bport
session.write((command +"\r").encode('ascii'))
portoutput = session.read_until("MCR64A >".encode('ascii'), timeout )
for line in portoutput.split('\n'):
if 'Port:' in line:
port = line.replace(' ','').split(':')[1]
#MyList += (port,)
macfile.write('{} {} {} {} {}\n'.format(host,mac_address, bport, vlan, port))
session.write(("logout"+"\r").encode('ascii'))
session.close()
except Exception as excp:
print('time out:- {}\n '.format(host))
def mac2norm(mac):
mac = mac.split(' ')
return '{:0>2}:{:0>2}:{:0>2}:{:0>2}:{:0>2}:{:0>2}'.format(*mac).upper()
def create_threads():
threads = []
with open('mumeci.txt','r') as ipfile:
for sr_no, line in enumerate(ipfile, start=1):
host = line.strip()
time.sleep(2)
th = threading.Thread(target = open_telnet ,args = (host,))
time.sleep(5)
th.start()
threads.append(th)
for thr in threads:
thr.join()
if __name__ == "__main__":
create_threads()
print ("Exiting the program")
#outfile.close()
macfile.close()
print('It took', time.time()-start, 'seconds.')
