[CentralOH] SheevaPlug - Python app right out of the box!

Andrew Watts andrewwatts at gmail.com
Thu Apr 1 18:50:24 CEST 2010


fwiw, netifaces works well with Linux, but i've have had issues with BSD distros, most notably, for me, OS X.  It's been a while and I don't remember exactly but I think I had issues with getting the broadcast address on all interfaces. I worked around them using struct, fcntl and ioctl after digging through socket.h, types.h and maybe a couple other header files.



On Apr 1, 2010, at 10:48 AM, Eric Floehr wrote:

> A little more on how the results are returned from
> netifaces.ifaddresses('eth0')...
> 
> The result is a dictionary keyed by the address family type.  The
> types are defined by the constants in the netifaces module.  On my
> machine example below, there are three address families: AF_INET,
> AF_INET6, and AF_LINK.  AF_INET is your IPv4 addresses, AF_INET6 is
> IPv6, and AF_LINK is the physical link (i.e. MAC address).
> 
> Each address family value is an array, with one dictionary entry per
> address.  On my machine there is only one NIC, so there is just one
> address in each address family.  Then within each dictionary are the
> particulars of the address.
> 
> So in the example:
> netifaces.ifaddresses('eth0')[netifaces.AF_INET][0]['addr']
> 
> It is saying, for interface 'eth0', get me the first IPv4 address.  If
> I wanted the MAC address of that interface, I could replace AF_INET
> with AF_LINK.  If I wanted the loopback address, I could just:
> 
> In [11]: netifaces.ifaddresses('lo')[netifaces.AF_INET][0]['addr']
> Out[11]: '127.0.0.1'
> 
> -Eric
> 
> 
> 
> On Thu, Apr 1, 2010 at 10:31 AM, Eric Floehr <eric at intellovations.com> wrote:
>> There is also a third-party module called netifaces (available on the
>> cheeseshop (so just "easy_install netifaces") which wraps it all up
>> and makes it cross-platform:
>> 
>> http://pypi.python.org/pypi/netifaces
>> 
>> Example from my machine:
>> 
>> In [1]: import netifaces
>> 
>> In [2]: netifaces.interfaces()
>> Out[2]: ['lo', 'eth0', 'vmnet1', 'vmnet8']
>> 
>> In [3]: netifaces.ifaddresses('eth0')
>> Out[3]:
>> {2: [{'addr': '192.168.13.13',
>>      'broadcast': '192.168.13.255',
>>      'netmask': '255.255.255.0'}],
>>  10: [{'addr': 'fe80::224:e8ff:fe45:87a4%eth0',
>>       'netmask': 'ffff:ffff:ffff:ffff::'}],
>>  17: [{'addr': '00:24:e8:45:87:a4', 'broadcast': 'ff:ff:ff:ff:ff:ff'}]}
>> 
>> In [4]: netifaces.ifaddresses('eth0')[netifaces.AF_INET][0]['addr']
>> Out[4]: '192.168.13.13'
>> 
>> -Eric
>> 
>> 
>> 
>> 
>> On Thu, Apr 1, 2010 at 10:12 AM, Jon Miller <jonebird at gmail.com> wrote:
>>> I felt bad for supplying a shell version... another trick you can do
>>> is to use the 'socket' module. If you happen to have a host which you
>>> can connect to on the network, then this trick might be good for you.
>>> In my example, I'll connect to a  fictious server named 'jumpbox' on
>>> port 22:
>>> 
>>> import socket
>>> s1 = socket.socket()
>>> s.connect(('jumpbox', 22))
>>> print 'My IP is %s' % s.getsockname()[0]
>>> 
>>> -- Jon Miller
>>> 
>>> On Thu, Apr 1, 2010 at 9:36 AM, Jon Miller <jonebird at gmail.com> wrote:
>>>> This is what I do to determine my frontend IP:
>>>>  INTERFACE=$(/sbin/ip route list default | sed -n '/^default /s/.*
>>>> dev \([a-z0-9]*\) $/\1/p' | head -1)
>>>>  /sbin/ip addr show dev $INTERFACE primary | sed -n '/inet /s/.*inet
>>>> \([^ ]*\) .*$/\1/p' | sed 's|/24||g'
>>>> 
>>>> -- Jon
>>>> 
>>>> On Thu, Apr 1, 2010 at 9:03 AM, Mark Erbaugh <mark at microenh.com> wrote:
>>>>> Has anyone in the COhPy messed with a SheevaPlug? This is a "plug computer" that comes preloaded with a version of Ubuntu 9.04 and, more importantly, Python 2.5 is installed. I have a small (but useful) web-based app written using webpy. I simply copied the files to a USB memory stick. Once I mounted the memory stick on the SheevaPlug, I issued the command 'python main.py' and my app was off an running. Pretty cool!
>>>>> 
>>>>> I have a question related to my webpy app.  Is there some python code for determining the IP address on which it is listening?  When the webpy app runs, it always displays http://0.0.0.0:8080/.  I end up having to use ifconfig to get the IP address.
>>>>> 
>>>>> Mark
>>>>> _______________________________________________
>>>>> CentralOH mailing list
>>>>> CentralOH at python.org
>>>>> http://mail.python.org/mailman/listinfo/centraloh
>>>>> 
>>>> 
>>> _______________________________________________
>>> CentralOH mailing list
>>> CentralOH at python.org
>>> http://mail.python.org/mailman/listinfo/centraloh
>>> 
>> 
> _______________________________________________
> CentralOH mailing list
> CentralOH at python.org
> http://mail.python.org/mailman/listinfo/centraloh



More information about the CentralOH mailing list