Schrift
[thread]4437[/thread]

telnet aufruf eines Routers mit Expect

Leser: 1


<< >> 3 Einträge, 1 Seite
Gast Gast
 2006-09-11 18:39
#37357 #37357
Hallo,

ich möchte einen Router mit einem Perlscript aufrufen. Mit dem Expect Modul kann ich Username und Passwort eingeben; das klappt. Danach kappt er aber sofort wieder die Verbindung; wie kann ich das denn verhindern?? Er soll noch ein paar Befehle durchgehen, die ich mit send_slow schicken wollte.Oder geht sowas gar nicht????

das Programm :
Code: (dl )
1
2
3
4
5
my $exp=new Expect->spawn("telnet $server $port");
$exp->expect(5,-re=>'sername:') or die "fehler in username\n";
$exp->send_slow(0,"$usr\n");
$exp->expect(5,-re=>'Password:') or die "No password prompt\n";
$exp->send_slow(0,"$password\n");

--------------------
(ab hier wird gekappt und die folgende Zeile nimmt er nicht mehr)
$exp->send_slow(0,"$show\n");



Gruß,
Andreas\n\n

<!--EDIT|renee|1157986530-->
topeg
 2006-09-11 21:01
#37358 #37358
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
Zu expect kann ich dir nicht direckt helfen aber warum verwendest du nicht "Net::Telnet"?
Hier ein Scriptchen von mir:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#!/usr/bin/perl
use strict;
use Net::Telnet;

my $passwort='12345'; #;-)

# Verbindung zum Router
my $host = new Net::Telnet(Timeout => 30, Prompt => '/^>/');
$host -> open("192.168.1.250");

# Auf Passoworteingabeauffordeung warten
my ($back,$match) = $host -> waitfor('/Passwort:/');
print $back.$match;

# Passwort übertragen
$host -> print("$passwort\n");
print "$passwort\n";

# Loginmeldungen überspringen
my $msg='';
($back,$match) = $host -> waitfor('/>/');
$msg=$back.$match;
($back,$match)= $host -> waitfor('/>/');
$msg.=$back.$match;
print $msg;

# Aktulle Internet-IP des Routers lesen
$host -> print("dir /Status/PPP-Statistik/Rx-Optionen/IPCP\n");
print "dir /Status/PPP-Statistik/Rx-Optionen/IPCP\n";

# IP
($back,$match) = $host -> waitfor('/>/');
print "3:\n---------------\n".$back."\n--------------\n$back\n";

# verbindung zum Router beenden
$host -> close();
print "exit\n";
exit(0);
\n\n

<!--EDIT|topeg|1157994641-->
Dubu
 2006-09-12 01:00
#37359 #37359
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
@Andy: Ich sehe nicht, dass du nach der Passworteingabe noch auf einen Prompt wartest, d.h. du gibst dem System gar keine Chance, nach deiner Passworteingabe wieder auf Eingaben zu warten.

Außerdem: Warum benutzt du send_slow(), aber mit einem Delay von 0? Dann kannst du doch gleich send() (oder print()) benutzen?
<< >> 3 Einträge, 1 Seite



View all threads created 2006-09-11 18:39.