telnet mit netcat automatisieren

Hi,

ich brauche derzeit eine Möglichkeit, um eine Telnet-Sitzung zu automatisieren.

Hintergrund ist folgender:
Es müssen bei recht vielen Routern die IPs geändert werden. Anfangs haben alle eine Standard-IP und die sollen dann neue (fortlaufende) bekommen.

Über das Webinterface dauert das aber bei der Menge, die zu machen ist, viel zu lange. Der Router unterstützt aber auch Telnet, was in einem abgeschlossenen Netz (also nur Notebook und Router ;)) auch kein Problem bzgl. Klartextpasswörtern darstellt.

Ich habe bisher herausgefunden, dass ich unter Windows da wohl Netcat benutzen kann, finde nur leider kein Beispiel, was das mal wirklich zeigt.

Bisher kann ich nur eine ganz normale Telnet-Sitzung damit machen, wo ich also alles selber per Hand eingeben muss, automatisieren funktioniert aber noch nicht.

So, folgende Schritte wären bei einer normalen Telnetsitzung notwendig:

telnet IP
Passworteingabe
lan index 1
lan ipaddr NeueIP SN
lan save

Ich hänge nun bereits bei der Passworteingabe, da ich die nicht automatisiert hinbekomme mit Netcat, obwohl das wohl funktionieren soll.

Kann mir da vielleicht jemand hilfreiche Tipps geben?
 
Unter Windows scheint das mit dem expect so eine Sache zu sein. Ich habe das passende Paket zwar installiert, aber irgendwie scheint das nicht so im Einklang mit der Doku zu sein :(
 
Code:
(echo PASSWORT
sleep 1
echo lan index 1
sleep 1
echo lan ipaddr 1.1.1.1 255.255.255.0
sleep 1
echo lan save
sleep 1
echo exit) | netcat 2.2.2.2 23
klingt erfolgsversprechend, kenne aber die Windows NC funktionalität nicht genau.


Hab gerade etwas herumgespielt und folgendes könnte funktionieren:
1) asdf.txt im Netcat dir anlegen mit folgendem Inhalt:
Code:
PASSWORT
sleep 1
lan index 1
sleep 1
lan ipaddr 1.1.1.1 255.255.255.0
sleep 1
lan save
sleep 1
exit
Danach netcat mittels nc -v 2.2.2.2 23 < asdf.txt aufrufen.
 
Hab gerade etwas herumgespielt und folgendes könnte funktionieren:
1) asdf.txt im Netcat dir anlegen mit folgendem Inhalt:
Code:
PASSWORT
sleep 1
lan index 1
sleep 1
lan ipaddr 1.1.1.1 255.255.255.0
sleep 1
lan save
sleep 1
exit
Danach netcat mittels nc -v 2.2.2.2 23 < asdf.txt aufrufen.

Das hat hier leider nicht funktioniert
 
ich brauche derzeit eine Möglichkeit, um eine Telnet-Sitzung zu automatisieren.

Ich würde dafür perl mir net::telnet benutzen. Für Windows gibt es aber auch noch http://jerrymannel.com/blog/2008/11/11/telnet-scripting-tool-aka-tst10exe/
Syntax ist da der von expect ähnlich.

foo.txt.
Code:
192.168.2.4 23
WAIT "login:"
SEND "<username>\m"
WAIT "Password:"
SEND "<passwort>\m"
WAIT "%"
SEND "ls\m"
WAIT "%"
SEND "/sbin/ifconfig\m"
WAIT "%"
"%" matcht bei mir auf den Prompt.

Code:
ts.exe /r:foo.txt /o:out.txt

Funktioniert hier unter XP. Windows ist aber nicht gerade das OS meiner Wahl. :D

HTH

Micha
 
Wo liegt das Problem?

nc.txt
Code:
username
passwort
/sbin/ifconfig
Erste Zeile ist eine Leerzeile, da netcat die erste Zeile direkt nach dem Verbindungsaufbau ausgibt.

Code:
netcat -i2 -T 192.168.2.4 23 < /tmp/nc.txt
"-T" ist für die TELNET negotiation. "-i" ist "delay interval for lines sent".

Funktioniert hier mit GNU netcat.

Micha
 
Ich konnte das leider noch nicht weiter testen, werde da denke ich im Laufe der Woche nochmal dazu kommen und dann natürlich das Ergebnis nachreichen ;)
 
So, neuer Input, da ich jetzt gerade mal etwas Zeit habe und mir mal so ein Modem zum Testen genommen habe.

Möglicherweise gibt es mit netcat unter Windows ein Problem/Bug, denn es passiert folgendes:
Wenn ich -t (unter Win übrigens ein kleines t) weglasse, dann wird scheinbar das Passwort nicht abgeschickt. Wenn ich die Option -t benutze, dann kommen komische Symbole.

attachment.php


Das war auch genau das Problem, warum ich damals nicht weitergekommen bin.

Die anderen Lösungsvorschläge werde ich mir auch noch ansehen und berichten.
 
So, ohne das -t habe ich es dann doch noch hinbekommen, aber letztendlich hat mir dann tst10.exe genau das erfüllt, was ich brauchte.
 
Zurück
Oben