16.09.2014, 11:04 UhrDeutsch | English
Hallo Gast [ Registrierung | Anmelden ]

Neues Thema eröffnen   Neue Antwort erstellen
Vorheriges Thema anzeigen Druckerfreundliche Version Einloggen, um private Nachrichten zu lesen Nächstes Thema anzeigen
Autor Nachricht
brot
15 Titel: automatisches auslesen von switchdaten  BeitragVerfasst am: 19.06.2009, 08:37 Uhr



Anmeldung: 10. Jan 2006
Beiträge: 182

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 Winken
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 Auf den Arm nehmen

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
 
 Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen  
Antworten mit Zitat Nach oben
Kano
Titel: automatisches auslesen von switchdaten  BeitragVerfasst am: 19.06.2009, 09:11 Uhr



Anmeldung: 17. Dez 2003
Beiträge: 16248

Du denkst viel zu kompliziert. Du schreibst das in /etc/hosts und dann geht eh schon das was du willst.
 
 Benutzer-Profile anzeigen Private Nachricht senden  
Antworten mit Zitat Nach oben
brot
Titel: automatisches auslesen von switchdaten  BeitragVerfasst am: 19.06.2009, 10:22 Uhr



Anmeldung: 10. Jan 2006
Beiträge: 182

Hi Kano,
das wäre viel zu einfach Auf den Arm nehmen
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 Winken) und beinhaltet ein paar tausend komponenten.
 
 Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen  
Antworten mit Zitat Nach oben
Kano
Titel: automatisches auslesen von switchdaten  BeitragVerfasst am: 19.06.2009, 10:58 Uhr



Anmeldung: 17. Dez 2003
Beiträge: 16248

Naja ist trivial

#!/bin/sh
...
expect - <<EOT
...
EOT
 
 Benutzer-Profile anzeigen Private Nachricht senden  
Antworten mit Zitat Nach oben
brot
Titel: automatisches auslesen von switchdaten  BeitragVerfasst am: 22.06.2009, 09:05 Uhr



Anmeldung: 10. Jan 2006
Beiträge: 182

Moin,
ich melde mich noch mal kurz, das script läuft mittlerweile so, wie ich es will Winken
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
 
 Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen  
Antworten mit Zitat Nach oben
Kano
Titel: automatisches auslesen von switchdaten  BeitragVerfasst am: 22.06.2009, 12:02 Uhr



Anmeldung: 17. Dez 2003
Beiträge: 16248

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.
 
 Benutzer-Profile anzeigen Private Nachricht senden  
Antworten mit Zitat Nach oben
brot
Titel:   BeitragVerfasst am: 22.06.2009, 12:54 Uhr



Anmeldung: 10. Jan 2006
Beiträge: 182

danke.
ganz klar ist es mir noch nicht, aber ein guter anhaltspunkt um onkel google zu befragen Winken
 
 Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen  
Antworten mit Zitat Nach oben
Kano
Titel:   BeitragVerfasst am: 22.06.2009, 13:49 Uhr



Anmeldung: 17. Dez 2003
Beiträge: 16248

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.
 
 Benutzer-Profile anzeigen Private Nachricht senden  
Antworten mit Zitat Nach oben
Beiträge vom vorherigen Thema anzeigen:     
Gehe zu:  
Alle Zeiten sind GMT + 1 Stunde
Neues Thema eröffnen   Neue Antwort erstellen
Vorheriges Thema anzeigen Druckerfreundliche Version Einloggen, um private Nachrichten zu lesen Nächstes Thema anzeigen
PNphpBB2 © 2003-2007 
 
Deutsch | English
Logos and trademarks are the property of their respective owners, comments are property of their posters, the rest is © 2004 - 2006 by Jörg Schirottke (Kano).
Consult Impressum and Legal Terms for details. Kanotix is Free Software released under the GNU/GPL license.
This CMS is powered by PostNuke, all themes used at this site are released under the GNU/GPL license. designed and hosted by w3you. Our web server is running on Kanotix64-2006.