I'm playing with the nmap parser for python located at (http://xael.org/norman/python/python-nmap/). It provides a sample code snippet that I used in a .py script in order to do routine checks, automating some tasks. However I get a error on "Line 25". Can someone please help me..?
import nmap
nm = nmap.PortScanner()
nm.scan('127.0.0.1', '22-2223')
nm.command_line()
nm.scaninfo()
for host in nm.all_hosts():
print('----------------------------------------------------')
print('Host : %s (%s)' % (host, nm[host].
print('State : %s' % nm[host].state())
for proto in nm[host].all_protocols():
print('----------')
print('Protocol : %s' % proto)
lport = nm[host][proto].keys()
lport.sort()
for port in lport:
print ('port : %s\tstate : %s' % (port, nm[host][proto][port]['state']))
print('----------------------------------------------------')
ERROR Below:
root@server:~/python/python# python MyApp.py
----------------------------------------------------
Host : 127.0.0.1 (localhost)
State : up
----------
Protocol : addresses
Traceback (most recent call last):
File "MyApp.py", line 25, in <module>
print ('port : %s\tstate : %s' % (port, nm[host][proto][port]['state']))
TypeError: string indices must be integers
root@damnation:~/python/python#
Line 25, is the second last print line from the bottom. 'port : %s\tstate : %s' % (port, nm[host][proto][port]'.
any advice would be great. thank you .
print('port : '+port+'\tstate : '+ nm[host][proto][port]['state'])? What's that print out? I'm guessing that your state object is not a string.