Posts: 221
Threads: 71
Joined: Dec 2017
#!/usr/bin/python
from easysnmp import Session
# load easysnmp module
community ='public'
#Community for the device
oid ='SNMPv2-MIB::sysDescr.0'
#sysDescr OID
sr_no = 0
with open('DSLAMIP.txt') as ipfile:
line = ipfile.readlines()
# print line
for line in ipfile:
try:
session = Session(hostname=line, community=community, version=2)
snmp_get = session.get(oid)
result = snmp_get.value.encode('ascii')
if 'IES1248-51' in result:
model = 'ZyXEL'
elif 'ECI' in result:
model = 'ECI'
elif 'IP' in result:
model = 'UT'
sr_no += 1
print sr_no+" "+line+ " " +model
except snmp_exceptions as e:
print('Connection timed out ', ipfile['line'], e) would like to print Sr_no IP address Model, but this code is not working
Posts: 12,031
Threads: 485
Joined: Sep 2016
What exactly does not working mean?
Need details like:
Inputs,
Outputs
Error messages
Expected output
Posts: 221
Threads: 71
Joined: Dec 2017
I need to send one ip address at a time from DSLAMIP.txt to check device model, I am able to print line post opening file, however ips are not passed to session to check model type.
Python is not showing any error or output.
thanks
Posts: 12,031
Threads: 485
Joined: Sep 2016
What do you see when you remove comment from the print statement
Does the ip statement look ok?
And (on another subject), why are you using antique version of python?
Posts: 8,160
Threads: 160
Joined: Sep 2016
On line#10 you read the entire txt file in a variable called line. This is actually a list of lines in the file. At that point you are at the end of the file.
Next you want to iterate over the file ipfile line by line, however you are already at the end of the file, thus there is nothing left to iterate over.
To solve the problem just remove line#10 of your code. then you will iterate over the file line by line.
Posts: 221
Threads: 71
Joined: Dec 2017
Thanks Buran,
Changes in code as below
#!/usr/bin/python
from easysnmp import Session
# load easysnmp module
community ='public'
#Community for the device
oid ='SNMPv2-MIB::sysDescr.0'
#sysDescr OID
sr_no = 0
with open('DSLAMIP.txt') as ipfile:
# line = ipfile.readlines()
# print line
for line in ipfile:
# print line
try:
session = Session(hostname=line, community=community, version=2)
snmp_get = session.get(oid)
result = snmp_get.value.encode('ascii')
if 'IES1248-51' in result:
model = 'ZyXEL'
elif 'ECI' in result:
model = 'ECI'
elif 'IP' in result:
model = 'UT'
sr_no += 1
print sr_no+" "+line+ " " +model
except:
print('Connection timed out') easysnmp session is not working,
Output is:- Connection timed out
Connection timed out
Connection timed out
Connection timed out
Connection timed out
Connection timed out
Connection timed out
Connection timed out
Connection timed out
Connection timed out
whereas :- i am able to do this manually
[root@localhost scripts]# snmpwalk -v2c -c public 10.113.1.1 SNMPv2-MIB::sysDescr.0
SNMPv2-MIB::sysDescr.0 = STRING: ECI telecom HiFOCuS broadband access system
Posts: 8,160
Threads: 160
Joined: Sep 2016
Obviously I'm not able to try, but in order to debug I would remove the try/except thus it will show what the actual error is. i.e. Connection time out is something you print, but because you have all-catching except it masks what the actual error is - i.e. it could be simple syntax error for example. Using all-catching except is generally considered bad practice and only acceptable if you actually print what the error description is
also line will have '\n' at the end, so you may need to strip this before supply line as argument hostname
Posts: 221
Threads: 71
Joined: Dec 2017
Hi Buran,
I am able to print Device model now.
changes in code is as below
#!/usr/bin/python
from easysnmp import Session
# load easysnmp module
community ='public'
#Community for the device
oid ='SNMPv2-MIB::sysDescr.0'
#sysDescr OID
sr_no = 0
with open('DSLAMIP.txt') as ipfile:
# line = ipfile.readlines()
# print line
for line in ipfile:
# print line
try:
session = Session(hostname=line, community=community, version=2)
snmp_get = session.get(oid)
result = snmp_get.value.encode('ascii')
if 'IES1248-51' in result:
model = 'ZyXEL'
elif 'ECI' in result:
model = 'ECI'
elif 'IP' in result:
model = 'UT'
sr_no += 1
print (str(sr_no)+' '+str(line)+' '+model)
except:
print(str(sr_no)+' ' +str(line)+' ' +'Connection timed out') But output is printing like 1469 10.16.1.59
UT
model on new line where as i want this like 1469 10.16.1.59 UT --- on same line
Posts: 8,160
Threads: 160
Joined: Sep 2016
as I said line will have new lien - '\n' at the end and you need to strip it.
#!/usr/bin/python
# load easysnmp module
from easysnmp import Session
#Community for the device
community ='public'
#sysDescr OID
oid ='SNMPv2-MIB::sysDescr.0'
with open('DSLAMIP.txt') as ipfile:
for sr_no, line in enumerate(ipfile, start=1):
ip = line.strip()
try:
session = Session(hostname=ip, community=community, version=2)
snmp_get = session.get(oid)
result = snmp_get.value.encode('ascii')
if 'IES1248-51' in result:
model = 'ZyXEL'
elif 'ECI' in result:
model = 'ECI'
elif 'IP' in result:
model = 'UT'
print('{} {} {}'.format(sr_no, ip, model))
except Exception as excp:
print('Something went wrong!')
print(excp)
Posts: 221
Threads: 71
Joined: Dec 2017
|