• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> Klick

spawn, expect und send in "normalen" Shell-Script

Otti10

Fießers Erstling
Registriert
08.01.10
Beiträge
124
Hi Leute!

Google jetzt schon ziemlich lange und finde keine Lösung...
Habe ein langes Shellscript, das mit dem Standard beginnt:
Code:
#!/bin/sh

An einer Stelle im Script soll automatisch eine Verbindung per Telnet hergestellt werden. Dabei soll auch das Passwort automatisch eingegeben werden. Habe mir das so ergooglt:
Code:
spawn telnet fritz.box
expect "password: "
send "*************"

Leider kommen die Meldungen:
Code:
./work: line 49: spawn: command not found
couldn't read file "password: ": no such file or directory
./work: line 51: send: command not found

Habe dann die erste Zeile durch
Code:
#!/usr/bin/expect
ersetzt, aber dann tun es andere Befehle nicht.
Und wenn ich beide "#!"s hintereinander schreibe, wird nur das erste "ernst" genommen.

Ich hoffe ihr versteht mein Problem!

Schönen Abend noch,
Andi :)
 

ImperatoR

Roter Astrachan
Registriert
02.12.06
Beiträge
6.261
Mac OS X hat kein spawn-Programm installiert.

Ich kenne mich mit telnet nicht aus, die entsprechenden Parameter musst du dir natürlich suchen. Aber ein automatischer Login als Superuser funktioniert z.B. so:
Code:
sudo su && echo DeinAdminPasswort

Also könnte dein Skript so ähnlich lauten:
Code:
#!/bin/sh

telnet fritz.box && echo DeinFritzBoxPasswort
 

gKar

Maunzenapfel
Registriert
25.06.08
Beiträge
5.362
Habe ein langes Shellscript, das mit dem Standard beginnt:
Code:
#!/bin/sh
Das ist nicht „der Standard“, das ist der sog. „Shebang

./work: line 49: spawn: command not found

Kein Wunder. Gib im Terminal mal nur „spawn“ ein, und Du wirst dieselbe Meldung erhalten. Warum? Weil Dein Mac kein Programm namens „spawn“ im Suchpfad hat. Ich kenne es auch nicht und habe keine Ahnung, was Du das wo „ergoogled“ hast.

Habe dann die erste Zeile durch
Code:
#!/usr/bin/expect
ersetzt, aber dann tun es andere Befehle nicht.

Jetzt wird's ganz wild. Solche Experimente solltest Du vielleicht besser lassen. Damit sagst Du doch dem System nur, dass es nicht „sh“ als Shell benutzen soll, sondern dass das Programm namens /usr/bin/expect die Rolle der Shell übernehmen und alle Kommandos ausführen soll — und das kann es gar nicht. (Vgl. obigen Link zum Shebang)
Und wenn ich beide "#!"s hintereinander schreibe, wird nur das erste "ernst" genommen.
Logo, was sollen auch mehrere Shebangs bedeuten? (Vgl. nochmals obigen Link)

Einfach irgendwelchen Code zusammenzukopieren und ohne Kenntnisse zu verändern, ist nicht sonderlich zielführend. Wenn man überhaupt gefundene Codestücke verwendet, dann erst, nachdem man sie nachvollzogen und verstanden hat — ich persönlich würde nie im Netz gefundene Befehle blind abtippen, ohne mich vorher zu informieren, was ich damit bewirke. Wenn die enthaltenen Programme (wie hier "expect") auf meinem Rechner überhaupt zur Verfügung stehen, schaue ich als erstes in die Manpage (man expect).