kanotix.com
Scripte - automatisches auslesen von switchdaten
brot - 19.06.2009, 08:37 Uhr
Titel: automatisches auslesen von switchdaten
guten morgen zusammen,
ich sitz hier grade auf der arbeit und bin dabei, mir ein kleines script zu basteln, dass sich mit einem switch verbindet, einen befehl absetzt und die verbindung wieder trennt, der einfachheit halber
bei meinen ersten versuchen bin ich auf das programm expect gestoßen, funktioniert auch wunderbar, momentan sieht men script in etwa so aus:
Code:
#!/usr/local/bin/expect
spawn telnet [lindex $argv 0]
expect "Username: "
send "[benutzername]\r"
expect "Password: "
send "[passwort]\r"
send [lindex $argv 1]
send "\n bla \n exit\n"
interact
der erste parameter ist die ip, der zweite der befehl. das "bla" am ende ist nur dafür da, einen fehler auszugeben wenn die seite zu lang wird und ich hätte enter drücken müssen, wodurch das "exit" nicht funktioniert hätte
jetzt würde ich meinen script gern so erweitern, dass ich anstatt der ip den namen des switches mitgebe. dazu habe ich eine einfache textdatei (mehr oder weniger nen auszug aus der datenbank) mit zuordnung name, ip und beschreibung.
die ip bekomme ich mit dem befehl
/usr/bin/grep -i [lindex $argv 0] /pfad-zur-datei.txt | cut -d ' ' -f2
raus. nur bekomm ich es nicht auf die reihe, diesen befehl in meinen script zu integrieren, zumindest nicht wenn ganz oben
#!/usr/local/bin/expect
steht. änder ich es auf #!/bin/sh, funktioniert der befehl, das expect aber nicht mehr.
irgendwelche ideen?
Kano - 19.06.2009, 09:11 Uhr
Titel: automatisches auslesen von switchdaten
Du denkst viel zu kompliziert. Du schreibst das in /etc/hosts und dann geht eh schon das was du willst.
brot - 19.06.2009, 10:22 Uhr
Titel: automatisches auslesen von switchdaten
Hi Kano,
das wäre viel zu einfach
ich bin ganz normaler user auf der kiste und habe keine schreiberechtigung auf /etc/hosts. davon ab wird wird die o.g. datei automatisch generiert (ist recht dynamisch ) und beinhaltet ein paar tausend komponenten.
Kano - 19.06.2009, 10:58 Uhr
Titel: automatisches auslesen von switchdaten
Naja ist trivial
#!/bin/sh
...
expect - <<EOT
...
EOT
brot - 22.06.2009, 09:05 Uhr
Titel: automatisches auslesen von switchdaten
Moin,
ich melde mich noch mal kurz, das script läuft mittlerweile so, wie ich es will
hier mal mein code, falls es jemanden interessieren sollte/könnte:
Code:
#!/bin/bash
ip=`grep -i $1 [pfad-zur-datei] | head -n 1 | tr -s " " " " | cut -d" " -f2`
expect - <<EOT
spawn telnet $ip
expect "Username: "
send "[benutzername]\n"
expect "Password:"
send "[passwort]\r"
expect "#"
send "$2 \n"
send "\n exit\n"
expect eof
was das "expect - << EOT" und das "expect eof" allerdings macht, hab ich kein schimmer, wär klasse wenn ihr noch ne kurze erklärung hättet, google ist nicht wirklich ergiebig
Kano - 22.06.2009, 12:02 Uhr
Titel: automatisches auslesen von switchdaten
Du hast das EOT nicht drin. Das ist ein Marker, kann auch ein anderes Wort sein z.b.
cat > filename <<EndeDesTextes
...
EndeDesTextes
Das würde eine Textdatei schreiben, wo alles bis zum Marker drinsteht, wobei variablen ausgewertet werden. Hab man z. B. patches und will NICHT, dass man alle stellen mit $ mit \ Escapen muss nimmt man:
patch -p1 << 'Marker'
...
Marker
Das geht praktisch mit jedem Befehl, hoffe es wird nun klar. Die gross/kleinschreibung MUSS identisch sein vom Marker.
brot - 22.06.2009, 12:54 Uhr
Titel:
danke.
ganz klar ist es mir noch nicht, aber ein guter anhaltspunkt um onkel google zu befragen
Kano - 22.06.2009, 13:49 Uhr
Titel:
Dein Beispiel ist falsch, nur weil dein expect am Ende aufhört und du danach keine weiteren Befehle hast kommt keine Fehlermeldung, korrekt ist es noch lange nicht.
Alle Zeiten sind GMT + 1 Stunde
PNphpBB2 © 2003-2007