PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : an telnetverbindung befehle senden?



[CCCB]m0p
01.09.05, 13:03
ist es irgendwie möglich an eine telnetverbindung befehle zu senden und diese dann auch noch zu bestätigen?

vorhaben:

ich will die internetverbindung vom router z.b per cronjob 22:00 neu aufbauen lassen...
vorgehen:

telnet zum router aufbauen in der console

script: [z.b als conjob]
Eingabe [ZAHL] [ENTER] ->Router
Eingabe [ZAHL] [ENTER] ->Router
Eingabe [ZAHL] [ENTER] ->Router

p.s.: es ist kein zweiter pc oder so sondern ein standalonerouter
verbindung nur über telnet möglich!

michael.sprick
01.09.05, 13:10
ich habe sowas immer in Perl gemacht, aber ich glaube, man kann das relativ einfach mit expect machen...
kannst ja mal die man-page checken

[CCCB]m0p
01.09.05, 14:23
hast du vlt ein perlscript da?

mg-zurich
01.09.05, 14:59
man expect

[CCCB]m0p
01.09.05, 15:25
sehr konstruktiv .... lesen kann ich schon selber :eek: schau mal 2 beiträge höher!

michael.sprick
01.09.05, 15:31
per Perlskript ginge das so:



#!/usr/bin/perl

use warnings;
use strict;
use Net::Telnet;


my $Remotehost = 'localhost';
my $Remoteusername = 'user';
my $Remotepassword = 'pass';
my $Prompt = '/# $/'; # Pattern das auf das Shellprompt passt
my $Timeout = 20; # Sekunden


my @Commands = (
'cat /etc/xinetd.d/telnetd',
'who',
'cat /etc/passwd',
'ls -la /'
);

my $Output;
my $Session = Net::Telnet->new(Timeout=>$Timeout,Prompt=>$Prompt);
$Session->open($Remotehost);
$Session->login($Remoteuser,$Remotepass);

foreach my $cmd (@Commands)
{
$Session->cmd(String=>"$cmd",
Output=>\$Output);
print $Output;
print "\n\n";
}
$Session->close();




Wichtig ist:

a) dass das Modul Net::Telnet installiert ist.
b) dass Du das Prompt des Routers kennst.
In diesem Fall handelt es sich um ein '#' gefolgt von einem Leerzeichen.

In @Commands kannst du einfach die ganzen Befehle reinsetzen, die ausgeführt werden sollen....

[CCCB]m0p
01.09.05, 16:35
danke für das script :)

aber der promt ist genau das problem, was ich auch bei expect habe :(

sobald es z.B.
Pasword: ist passt es, wenn es aber

Menüpunkt auswählen ist geht es nicht mehr

habe dann mal expect freigelassen, aber er braucht dann für den nächsten schritt ca 5 sekunden - das dauert mir zu lange :/ kann man das irgendwie verkürzen - in den manpages habe ihc nichts gefunden :(


edit://
set timeout 0 hat es gebracht :)