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.
michaelbierenfeld
User
Beiträge: 10 Registriert: Mittwoch 19. Juli 2006, 09:36
Freitag 28. Juli 2006, 14:03
Hallo
ab und zu darf ich auch mal wieder programmieren. Also wie kann ich denn den String aus einem snmp request
.1.3.6.1.4.1.2562.1.1.8.1.1.8.3.85.67.52.1871.1201184.4 = STRING: JOBS.UNIX.C2.INFODB
in den Tupel
(oid, typ, value)
zerlegen. Wobei in diesm Beispiel
oid = 1.3.6.1.4.1.2562.1.1.8.1.1.8.3.85.67.52.1871.1201184.4
type = STRING:
value = JOBS.UNIX.C2.INFODB
ist.
Beste Gruesse
Michael
Nirven
User
Beiträge: 130 Registriert: Mittwoch 10. Mai 2006, 08:18
Wohnort: Bremerhaven
Freitag 28. Juli 2006, 14:16
mit split(' ') trennst du nach Leerzeichen, dann hast du zwar noch das Leerzeichen im Tupel aber der Rest passt schonmal. Das Leerzeichen kann man dann auch entfernen, und fertig (das entfernen geht doch bestimmt auch kürzer?).
>>> x = '1.3.6.1.4.1.2562.1.1.8.1.1.8.3.85.67.52.1871.1201184.4 = STRING: JOBS.UNIX.C2.INFODB'
>>> y = x.split(' ')
>>> z = y[0],y[2],y[3]
>>> z
('1.3.6.1.4.1.2562.1.1.8.1.1.8.3.85.67.52.1871.1201184.4', 'STRING:', 'JOBS.UNIX.C2.INFODB')
michaelbierenfeld
User
Beiträge: 10 Registriert: Mittwoch 19. Juli 2006, 09:36
Freitag 28. Juli 2006, 14:23
Hi,
ja so was ähnliches geht in die Richtung. Nur mir schwebt so was wie
vor. Gehen wuerde
Code: Alles auswählen
# split zeugs
(oid, typ, val) = (splitted [0], splitted [1], splitted [3])
Ich hätte es nur gerne eleganter um bei den Java Leuten angeben zu können
Grüße
Michael
DatenMetzgerX
User
Beiträge: 398 Registriert: Freitag 28. April 2006, 06:28
Wohnort: Zürich Seebach (CH)
Freitag 28. Juli 2006, 14:39
Code: Alles auswählen
x =".1.3.6.1.4.1.2562.1.1.8.1.1.8.3.85.67.52.1871.1201184.4 = STRING: JOBS.UNIX.C2.INFODB"
x = x.replace(' = ', ';').replace(': ', ';').lstrip('.')
oid, typ, value = x.split(';')
print '%s\n%s\n%s' % (oid, typ, value)
Oder
Code: Alles auswählen
x =".1.3.6.1.4.1.2562.1.1.8.1.1.8.3.85.67.52.1871.1201184.4 = STRING: JOBS.UNIX.C2.INFODB"
oid, typ, value = x.replace(' = ', ';').replace(': ', ';').lstrip('.').split(';')
print '%s\n%s\n%s' % (oid, typ, value)
Resultat bei beiden
Code: Alles auswählen
1.3.6.1.4.1.2562.1.1.8.1.1.8.3.85.67.52.1871.1201184.4
STRING
JOBS.UNIX.C2.INFODB
BlackJack
Freitag 28. Juli 2006, 22:27
michaelbierenfeld hat geschrieben: ja so was ähnliches geht in die Richtung. Nur mir schwebt so was wie
vor. Gehen wuerde
Code: Alles auswählen
# split zeugs
(oid, typ, val) = (splitted [0], splitted [1], splitted [3])
Ich hätte es nur gerne eleganter um bei den Java Leuten angeben zu können
Wenn Du magische Einzeiler elegant findest, dann solltest Du Dir mal Perl anschauen. In Python ist es eleganter eine Funktion zu schreiben, die robust ist und bei der man verstehen kann was sie tut.
CrackPod
User
Beiträge: 205 Registriert: Freitag 30. Juni 2006, 12:56
Samstag 29. Juli 2006, 11:17
BlackJack hat geschrieben: michaelbierenfeld hat geschrieben: Wenn Du magische Einzeiler elegant findest[...]
Was is denn daran magisch?
Code: Alles auswählen
x =".1.3.6.1.4.1.2562.1.1.8.1.1.8.3.85.67.52.1871.1201184.4 = STRING: JOBS.UNIX.C2.INFODB"
oid, typ, value = x.replace(' = ', ';').replace(': ', ';').lstrip('.').split(';')
print '%s\n%s\n%s' % (oid, typ, value)
Das is auch nur ne ganz normale Pythonanweisung, nur dass sie halt - nich wirklich übersichtlich - in eine Zeile geschrieben wurde.
Greetz
BlackJack
Samstag 29. Juli 2006, 11:41
CrackPod hat geschrieben: BlackJack hat geschrieben: michaelbierenfeld hat geschrieben: Wenn Du magische Einzeiler elegant findest[...]
Was is denn daran magisch?
Da steht das an der Stelle des Kommentars eine magische Python-Anweisung stehen soll.
Mad-Marty
User
Beiträge: 317 Registriert: Mittwoch 18. Januar 2006, 19:46
Montag 31. Juli 2006, 00:29
Öhm anstelle von dieser funktionalität zu schreiben schlage ich vor du verwendest die methoden der snmp library.
Strings zerlegen ... aber doch bitte nicht bei sowas.
z.b. bei pysnmp kriegst du automatisch den wert mit dem richtigen datentyp.
auch wunderbar mit oid:value tupeln.
michaelbierenfeld
User
Beiträge: 10 Registriert: Mittwoch 19. Juli 2006, 09:36
Montag 31. Juli 2006, 09:42
Hallo,
pysnmp habe ich mir angeschaut. In meinem Fall ist das wie mit Kanonen auf Spatzen geschossen. Besten Dank aber
Michael