Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]7655[/thread]

Probelm mit Telnetzugriff auf Router



<< |< 1 2 3 >| >> 28 Einträge, 3 Seiten
Gast Gast
 2006-01-27 10:47
#62328 #62328
Hi @all,
habe ein kleines Problem. Will per Perl Script auf mehrere Router zugreifen (nach einander). Dabei verwende ich telnet. Weiterhin sollen auf dem Router dann eine Reihe von Befehlen ausgeführt werden. Das alles stellt noch nicht das Problem dar. Ein entsprechendes Script habe ich gebastelt. Jedoch wenn ich einen Befehl auf dem Router ausführe bekomme ich vom Router eine Frag ob ich die Aktion wirklich ausführen will. Hier hat man, wenn man direkt per Console oder Remotezugriff auf dem Router ist, die Auswahl zwischen y/[n]. Da ich den Befehl wirklich ausführen will tippe ich ja y nur wie bekomme ich das in das Script rein??? Hat jemand eine Ahnung. Hier seht ihr den entsprechenden Auszug aus dem Script.

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
sub ripout
{
my $a = "$path/log/".$host."-".$wan."_in.stat";
my $b = "$path/log/".$host."-".$wan."_out.stat";

my $session = Net::Telnet::Netscreen->new(
Host => $wan,
Timeout => "90",
Input_log => $a,
Output_log => $b
);
#einloggen auf der CPE
$session->login('xy', 'zzzzz');
$a="set vrouter trust-vr";
$b="unset protocol rip";
$c="y";
$f="exit";
$d="save";
$e="exit";
$session->cmd($a);
$session->cmd($b);
$session->cmd($c);
$session->cmd($f);
$session->cmd($d);
$session->cmd($e);
$session->close;
}


Wie ihr seht handelt es sich bei dem Router um einen Netscreen. Deswegen habe ich auch das Modul Net::Telnet::Netscreen verwendet. Jedoch sollte das keinen Unterschied zum normalen Net::Telnet Modul darstellen. Mit dem oben gezeigten Code funktioniert es leider nicht. Habt ihr eine Ahnung???
renee
 2006-01-27 11:16
#62329 #62329
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Was heisst "funktioniert nicht"?? Irgendwelche Fehlermeldungen?? Bau mal noch ein paar or die $session->error ein. Z.B. nach dem Login (siehe auch Doku zum Modul)
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
krusty
 2006-01-27 11:29
#62330 #62330
User since
2006-01-27
91 Artikel
BenutzerIn
[default_avatar]
Also das Script funktioniert einwandfrei, mit anderen Kommandos. z.B. get config. Was nicht funktioniert ist wenn der Router dich fragt, ob du eine Aktion wirklich ausführen willst. Habe jetzt schon mal im Internet gesucht und habe was gefunden was vielleicht hätte klappen können.

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$session->login('xy', 'zzzzz');
$a="set vrouter trust-vr";
$b="unset protocol rip";
$c="y";
$f="exit";
$d="save";
$e="exit";
$session->cmd($a);
$session->cmd($b);
$session->waitfor('/deleting RIP instance, are you sure? y\/[n] /') or die " Error getting \"deleting RIP instance, are you sure? y/[n]\" prompt: $!";
$session->cmd($c);
$session->cmd($f);
$session->cmd($d);
$session->cmd($e);
$session->close;


Leider bewirkt der Befehl mit dem waitfor bei mir nichts. Da ich mir ja wie du in dem ersten Scriptschnippsel siehst alles was ich rein bzw. rausbekomme in jeweils eine Datei schreiben lasse, brauche ich sicher keinen weiteren DEBUG. Aber hier ist das was in den Dateinen steht.

Code: (dl )
1
2
3
4
5
6
Herzlich Willkommen, Sie befinden sich auf Router XXXXX
login: xy
password:
9999999999-> set vrouter trust-vr
9999999999(trust-vr)-> unset protocol rip
deleting RIP instance, are you sure? y/[n]

und dann ist schluss. Meine Konsole macht auch nichts mehr, bis man STRG+C drückt. Der bleibt einfach an der Abfrage hängen.\n\n

<!--EDIT|krusty|1138364075-->
renee
 2006-01-27 11:39
#62331 #62331
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Verwende in Zukunft bitte andere Dateinamen ($a und $b sind z.B. fuer sort "reserviert")... Du benutzt auch zweimal $a und $b...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
krusty
 2006-01-27 11:40
#62332 #62332
User since
2006-01-27
91 Artikel
BenutzerIn
[default_avatar]
upps, wuste ich nicht, bin noch recht unerfahren mit perl. :) werde ich ändern.

habe ich geändert, bringt aber leider nix.\n\n

<!--EDIT|krusty|1138355260-->
renee
 2006-01-27 11:52
#62333 #62333
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Was heisst "waitfor" bewirkt nichts?? Sicher das nach [n] noch ein Leerzeichen kommt? Hast Du Dir CPAN:Net::Telnet angeschaut oder - wie vom Autor von CPAN:Net::Telnet::Netscreen empfohlen - CPAN:Net::SNMP...

Wenn Du mehrere or dies einbaust, wirst Du eher sehen, wo es dann hakt...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
krusty
 2006-01-27 12:06
#62334 #62334
User since
2006-01-27
91 Artikel
BenutzerIn
[default_avatar]
so habe jetzt noch ein paar dies eingebaut. Sieht jetzt folgendermaßen aus:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 $session->login('xy', 'zzzzz');
$command1="set vrouter trust-vr";
$command2="unset protocol rip";
$command3="y";
$command4="exit";
$command5="save";
$command6="exit";
$session->cmd($command1) or die " Error giving \"set vrouter trust-vr\" command: $!";
$session->cmd($command2) or die " Error giving \"unset protocol rip\" command: $!";
$session->waitfor('/deleting RIP instance, are you sure? y\/[n]/') or die " Error getting \"deleting RIP instance, are you sure? y/[n]\" prompt: $!";
$session->cmd($command3) or die " Error giving \"y\" command: $!";
$session->cmd($command4) or die " Error giving \"exit\" command: $!";
$session->cmd($command5) or die " Error giving \"save\" command: $!";
$session->cmd($command6) or die " Error giving \"exit\" command: $!";
$session->close;


habe auf cpan schon die entsprechenden module durchgeschaut und nichts gefunden. Vielleicht habe ich auch was übersehen.

Beim Output hat sich auch nichts getan. Bekomme durch die dies auch keine weiteren meldungen auf der Konsole. Bin echt ratlos.
Crian
 2006-01-27 12:12
#62335 #62335
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Falls das eine RE ist, wird [n] Als Zeichenklasse mit dem Zeichen n interpretiert. Hilft \[n\] weiter?

[edit]s~wir~wird~[/edit]\n\n

<!--EDIT|Crian|1138356810-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
renee
 2006-01-27 12:12
#62336 #62336
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Hast Du Dir schonmal die Funktion prompt angeschaut?? Da kann man einen Prompt ersetzen. Und maskiere mal das Fragezeichen bei dem waitfor
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Crian
 2006-01-27 12:14
#62337 #62337
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Stimmt ... auch \?

oder in \Q...\E ^^\n\n

<!--EDIT|Crian|1138356905-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
<< |< 1 2 3 >| >> 28 Einträge, 3 Seiten



View all threads created 2006-01-27 10:47.