Autor |
Nachricht |
|
|
Titel: automatisches auslesen von switchdaten
Verfasst am: 19.06.2009, 08:37 Uhr
|
|
Anmeldung: 10. Jan 2006
Beiträge: 183
|
|
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? |
Zuletzt bearbeitet von brot am 22.06.2009, 09:06 Uhr, insgesamt ein Mal bearbeitet
|
|
|
|
|
|
Titel: automatisches auslesen von switchdaten
Verfasst am: 19.06.2009, 09:11 Uhr
|
|
Anmeldung: 17. Dez 2003
Beiträge: 16790
|
|
Du denkst viel zu kompliziert. Du schreibst das in /etc/hosts und dann geht eh schon das was du willst. |
|
|
|
|
|
|
Titel: automatisches auslesen von switchdaten
Verfasst am: 19.06.2009, 10:22 Uhr
|
|
Anmeldung: 10. Jan 2006
Beiträge: 183
|
|
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. |
|
|
|
|
|
|
Titel: automatisches auslesen von switchdaten
Verfasst am: 19.06.2009, 10:58 Uhr
|
|
Anmeldung: 17. Dez 2003
Beiträge: 16790
|
|
Naja ist trivial
#!/bin/sh
...
expect - <<EOT
...
EOT |
|
|
|
|
|
|
Titel: automatisches auslesen von switchdaten
Verfasst am: 22.06.2009, 09:05 Uhr
|
|
Anmeldung: 10. Jan 2006
Beiträge: 183
|
|
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 |
|
|
|
|
|
|
Titel: automatisches auslesen von switchdaten
Verfasst am: 22.06.2009, 12:02 Uhr
|
|
Anmeldung: 17. Dez 2003
Beiträge: 16790
|
|
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. |
|
|
|
|
|
|
Titel:
Verfasst am: 22.06.2009, 12:54 Uhr
|
|
Anmeldung: 10. Jan 2006
Beiträge: 183
|
|
danke.
ganz klar ist es mir noch nicht, aber ein guter anhaltspunkt um onkel google zu befragen |
|
|
|
|
|
|
Titel:
Verfasst am: 22.06.2009, 13:49 Uhr
|
|
Anmeldung: 17. Dez 2003
Beiträge: 16790
|
|
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. |
|
|
|
|
|
|