X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=source%2Futils.py;h=9efea4d29e8cba4457882b7e4abbb0969d03f924;hb=bd85ea4bb68783a0a58a6ddc6c3cc1dd22715eb1;hp=b9a3746a614628778d5190c552577f20196557ec;hpb=7ab7e9dd797333a9fdc8604554e16e192a32144d;p=bootmanager.git diff --git a/source/utils.py b/source/utils.py index b9a3746..9efea4d 100644 --- a/source/utils.py +++ b/source/utils.py @@ -1,47 +1,18 @@ +#!/usr/bin/python2 + # Copyright (c) 2003 Intel Corporation # All rights reserved. - -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: - -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. - -# * Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following -# disclaimer in the documentation and/or other materials provided -# with the distribution. - -# * Neither the name of the Intel Corporation nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. - -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -# EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF -# YOUR JURISDICTION. It is licensee's responsibility to comply with any -# export regulations applicable in licensee's jurisdiction. Under -# CURRENT (May 2000) U.S. export regulations this software is eligible -# for export from the U.S. and can be downloaded by or otherwise -# exported or reexported worldwide EXCEPT to U.S. embargoed destinations -# which include Cuba, Iraq, Libya, North Korea, Iran, Syria, Sudan, -# Afghanistan and any other country to which the U.S. has embargoed -# goods and services. - +# +# Copyright (c) 2004-2006 The Trustees of Princeton University +# All rights reserved. +# expected /proc/partitions format import os, sys, shutil import popen2 +import socket +import fcntl +import string +import exceptions from Exceptions import * @@ -158,3 +129,32 @@ def removefile( filepath ): return 1 + + +# from: http://forums.devshed.com/archive/t-51149/ +# Ethernet-card-address-Through-Python-or-C + +def hexy(n): + return "%02x" % (ord(n)) + +def get_mac_from_interface(ifname): + """ + given a device name, like eth0, return its mac_address. + return None if the device doesn't exist. + """ + + SIOCGIFHWADDR = 0x8927 # magic number + + s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) + ifname = string.strip(ifname) + ifr = ifname + '\0'*(32-len(ifname)) + + try: + r= fcntl.ioctl(s.fileno(),SIOCGIFHWADDR,ifr) + addr = map(hexy,r[18:24]) + ret = (':'.join(map(str, addr))) + except IOError, e: + ret = None + + return ret +