Seht ihr hier einen Fehler?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
mimocloud
User
Beiträge: 31
Registriert: Freitag 3. Mai 2013, 15:12

Moin,

Bin gerade unterwegs und würde gerne heute Abend wenn ich wieder Zuhause bin mich mit diesem Script hier weiter beschäftigen.
Derzeit wird anhand der MAC Adresse des jeweiligen KVM guest-Systems die IP-Adresse durch die arp-Tabelle rausgefiltert!

Zumindest sollte das so sein!

Code:

Code: Alles auswählen

try:
	from lxml import etree
	
except ImportError:	
	import xml.etree.cElementTree as etree
import libvirt
import argparse
import sys,subprocess,os
import StringIO
debug = False

argument = argparse.ArgumentParser(description='Get ip from KVM Guest.')
parser.add_argument('--hypervisor', '-hv',
                    action='store',
                    help='Sourcepath -hv or --hypervisor')
					
parser = etree.XMLParser()

conn = libvirt.openReadOnly(args.hypervisor)

if conn == None:
    print 'Failed to open connection to the hypervisor'
    sys.exit(1)
domain=conn.lookupByName(args.hypervisor)
desc = etree.fromstring(domain.XMLDesc(0))
macAddr = desc.find("devices/interface[@type='network']/mac").attrib["address"].lower().strip()
if debug:

    print >>sys.stderr,"XMLDesc = %s" % macAddr


output = subprocess.Popen(["arp", "-n"], stdout=subprocess.PIPE).communicate()[0]

lines = [line.split() for line in output.split("\n")[1:]]

if debug:
	print lines

IPaddr = [line[0] for line in lines if (line and (line[2] == macAddr))]

if IPaddr:
	print IPaddr[0]



Würde das so in der Art funkten?



LG
Zuletzt geändert von Anonymous am Dienstag 7. Mai 2013, 10:56, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Code-Tags gesetzt.
koenigssphinx
User
Beiträge: 14
Registriert: Samstag 11. Mai 2013, 10:51
Kontaktdaten:

Erstmal:

Code: Alles auswählen

parser.add_argument('--hypervisor', '-hv',
                    action='store',
                    help='Sourcepath -hv or --hypervisor')
                                       
parser = etree.XMLParser()
kann nicht funktionieren, da der parser nach der Methode erst initialisiert wird.
Den Rest weiß ich nicht.
Aber:
Debug ist IMMER false soll das so sein???

Code: Alles auswählen

Königssphinx die 1. die Python kann
Benutzeravatar
noisefloor
User
Beiträge: 3853
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

das 1. "parser" ist falsch, da willst du bestimmt "argument" schreiben.

Später kommt noch ein paar Mal "args" - das wird aber nirgendwo definiert... da fehlt noch ein

Code: Alles auswählen

args = argument.parse_args()
Gruß, noisefloor
Antworten