views:

71

answers:

3

Is it possible to view other devices that are on the same network in Python (or any programming language for that matter)?

Edit: For clarification, what I'd like to do (just to start out) is to display a list of devices connected and their local IP addresses. So on my router, it'll show the info:

family_pc, 192.168.1.2 work_laptop, 192.168.1.3

I'd like to retrieve this info.

+2  A: 

What are you trying to do exactly?

nmap is a pretty common tool for scanning networks, which seems like you want to do. There is also a python-nmap package which lets you use nmap directly from within Python with ease.

Please be more detailed so we can give you a better answer, cheers.

Bartek
original comment has been updated
tipu
nmap will do that for you, so perhaps look into python-nmap as I mentioned.
Bartek
A: 

You have a couple of options here.

You can run port scans over the entire network address space, but that's pretty wasteful and unfriendly. I don't recommend it.

A nicer approach would be to query for devices using a service discovery protocol like DNS-SD / Zeroconf (aka Bonjour). Most Linux and Mac systems will respond, as will many network printers and other network devices. Windows systems don't ship with a DNS-SD agent, but one can be installed.

A pure python implementation of DNS-SD is available here. I have used it on Linux, MacOS, and Windows.

If you prefer a Microsoft approach, you can try the discovery features of UPnP, though I can't vouch for how well it works or how many systems will respond.

Forest
A: 

If you don't mind using a little third party software you could use Netresview which works nicely on windows systems, avoid reinventing the wheel and all that. You could this kind of thing.

os.system('NetResView.exe /DisplayComputers 1 /RetrieveIPAddresses /stext ipfile')
my_file = open('ipfile')
for line in my_file :
    print myfile.readline()
Ryan Jenkins