Re: [Forum] Telnet script

From: Martin Filtenborg <martin.filtenborg@mail1.stofanet.dk>
Date: Mon Sep 17 2001 - 15:35:23 CEST

Jeg antager, at du er ved at få din maskine på f.eks. Stofanet.

Vedlagt finder Du en stump Perl-kode som gør lige netop dét du ønsker.

Ret userid, password og serveradresse/port.
chown filen til dig selv.
chmod filen så den er executable
Kør filen med parameteren "on" eller "off"

That's it.

Alternativt kan du søge på nettet efter "SLIC", som er en
netværks-logon-off-daemon-lignende ting. Den logger selv på og af efter
behov, og har den fordel at den er en binær fil som ikke kan "sniffes"
for password mv.

MVH/Martin Filtenborg

Kasper Kamp Simonsen wrote:

> Hejsa...
>
> Jeg skal have lavet et telnet script, og til det har jeg brug for et
> hint.
>
> scriptet skal når det køres gøre følgende.
>
> 1: telnet en_ip-addresse
> 2: sende username når der bruger spurtg om det
> 3: sende password når der bliver spurgt om det.
>
> nogen der har et hint til en commando man kan bruge her?
>
>

#! /usr/bin/perl -w
# A script to get stofa connection up
# Also, a test to do sockets in perl

require 5.002;
use strict;
use Socket;

my $ID = "<username>\n" ; # Your connection id, and a newline
my $pwd = "<password>\n" ; # Your password, and a newline

my $cmd = 2; # Get the net down unless "on" is specified
if (
$ARGV[0] eq "on") { # Only execute if parameter is "on"
    $cmd = 1; # All right then, here goes...
    }

my $host="192.168.10.2"; # The telnet-machine address
my $serviceport = "259"; # The telnet-machine port
my $iaddr = gethostbyname('localhost');
my $proto = getprotobyname('tcp');
my $paddr = sockaddr_in(0,$iaddr);
my $hisiaddr = inet_aton( $host ) || die "unknwon host";
my $hispaddr = sockaddr_in($serviceport,$hisiaddr);
my $choice = "$cmd \n" ; # 1= up, 2 = down

socket(SOCKET, PF_INET, SOCK_STREAM, $proto) || die "socket: $!";
connect (SOCKET, $hispaddr ) || die "connect: $!";

# One might insert a piece of code to direct six garbage-chars to null??

my $ch = " "; # Search for "Login:"
while ($ch ne ":" ) # in the stream of chars
    { # emitted by the telnet server
    read(SOCKET, $ch, 1); # while copying to screen
    print $ch;
    }

my $result = send(SOCKET,$ID,0); # Enter username

$ch = " ";
while ($ch ne ":" ) # Search for "Password:"
    {
    read(SOCKET, $ch, 1);
    print $ch;
    }

$result = send(SOCKET,$pwd,0); # Enter password

$ch = " ";
while ($ch ne ":" ) # Search for "Choose:"
    {
    read(SOCKET, $ch, 1);
    print $ch;
    }

$ch = " ";
while ($ch ne ":" ) # Search for "Choice:" once more
    {
    read(SOCKET, $ch, 1);
    print $ch;
    }

$result = send(SOCKET,$choice,0); # Enter choice

$ch = " "; # Finish up...
while ($ch ne "." )
    {
    read(SOCKET, $ch, 1);
    print $ch;
    }

while ($ch ne "\n" )
    {
    read(SOCKET, $ch, 1);
    print $ch;
    }

print "\n"; # Just for pretty looks

close SOCKET or die "couldn't close cocket: $!"; # - and terminate session
Received on Mon Sep 17 15:38:34 2001

This archive was generated by hypermail 2.1.8 : Tue Jul 19 2005 - 16:02:37 CEST