How to log the output from the multiple telnet sessions to separate log file
manjunatha.mahalingappa at gmail.com
manjunatha.mahalingappa at gmail.com
Mon Oct 19 17:48:41 EDT 2015
On Friday, October 16, 2015 at 11:11:58 PM UTC-7, dieter wrote:
> manjunatha.mahalingappa at gmail.com writes:
> > I'm very much new to python.
> > I'm doing the automation for networking device testing , I will be opening the 4 telnet session, and doing some testing operations on each of those telnet sessions and capture or log the respective output in 4 different log files.
>
> Personally, I find it a bit strange that each (telnet) session
> should get its own logfile, but, if that is what you need, I would
> approach it as follows:
>
> * define a class "TelnetSession"; create a logger in its "__init__" method;
> use this logger for all operations inside a "TelnetSession"
>
> * instantiate the class "TelnetSession" for each telnet session you
> want to open.
> Use those objects method to operate on the sessions.
Hello Dieter,
I created the my own class MyLogger and passing log file name to it. I'm seeing no log is being written to passed log file instead everything is written to the logfilename [actually logfilename is variable with file name] I'm trying to create MyLogger object for each telnet session. and use that object.
MyLogger is beeing called inside the Telnetsession class. those are present in PmTelnet3.py file.
class MyLogger():
import logging
def __init__(self,logfilename):
#create logger with 'spam_application'
self.logger = self.logging.getLogger('TelnetSession')
self.logger.setLevel(self.logging.INFO)
# create file handler which logs even debug messages
#self.fh = self.logging.FileHandler(logfile)
print "The log file name is %s\n" % logfilename
self.logging.basicConfig(filename = logfilename,
level = self.logging.INFO ,
format= '%(asctime)s %(name)-12s %(levelname)-8s %(message)s',
datefmt='%m-%d %H:%M',
filemode='w')
# create console handler with a higher log level
self.ch = self.logging.StreamHandler()
def Log(self):
self.logger.setLevel(self.logging.INFO)
self.fh.setLevel(self.logging.INFO)
self.ch.setLevel(self.logging.INFO)
self.fh.setFormatter(self.formatter)
self.ch.setFormatter(self.formatter)
self.logger.addHandler(self.ch)
class TelnetSession:
import telnetlib
import logging
def __init__(self, inHost, inPort, Logname):
self.log = MyLogger(Logname)
self.telnet = self.telnetlib.Telnet(inHost, inPort)
----------------------------------------------------------------------------
def IP_port(file) :
global Testbed_info
Testbed_info = []
F = open(file, 'r')
F.seek(0)
line = F.read()
tuples = re.findall(r'(.+ \d)\s+(.+?)\s+(\d+)', line)
for (dname, ip, port) in tuples :
LogFileName = dname.replace(" ","") + ".log"
#Log = open(logfile, "a")
#Log = MyLogger(LogFileName)
Telnet_handle=PmTelnet3.TelnetSession(ip,port,LogFileName)
tuple = (dname, ip, port, Telnet_handle )
print tuple
Testbed_info.append(tuple)
#T.append(T1)
return(Testbed_info)
#This function is to switch the console
file = '/users/manmahal/MANJU/IP_port.txt'
Testbed_info = IP_port(file)
print "Iam done"
for (dname, ip, port, Telnet) in Testbed_info :
My_handle = Telnet
#My_log = log
My_handle.Write("\n")
My_handle.Write("show config \n")
time.sleep(2)
output = My_handle.ReadBuffer()
#My_fp.write(My_handle.ReadBuffer())
My_handle.log.logger.info(output)
My_handle.log.logger.info("HI THERE")
Kindly let me know how can I fix this..
More information about the Python-list
mailing list