Here's some code that works well for us to bounce some apache instances across a
cluster(obviously truncated). 

Notice how you stuff STDOUT from your remote call into an array that you print for
output locally. This module rocks, and is (for us) blistering fast and super
flexible. Also, I used Term::Readkey to prompt for (noecho) passwords so you don't
have them sitting there in your code. 

foreach my $server (@cluster) {
        # Initialze the arrays to make sure they're not holding prev. values...
        my (@stop,@start);

        my $s=Net::Telnet->new(Host=>$server,Input_log=>'telnet.txt') || die
"Problem: $!\n";
         
         my $stop=qq(\./$server\_stop.sh);
         my $start=qq(\./$server\_start.sh);
        ## Connection to telnet service on remote host
        $s->login(Name=> $user,
                Password=>$pass,
                Prompt=>'/root\@.*/',
                Timeout=>8) || die $s->errmsg, "\n";

        @stop=$s->cmd(String=>$stop,Prompt=>'/matt\@.*/') or warn $s->errmsg ,"\n";
        print "Stopping $server: @stop\n";
        sleep 2;
        @start=$s->cmd(String=>$start,Prompt=>'/matt\@.*/') or warn $s->errmsg
,"\n";
        print "Starting $server";
        sleep 1;
        print "@start\n";
    }

The tricky part for me was to match the prompt after the command executed. I
consider myself to be decent with regexes (for a relative beginner) but I had to
fiddle with it for a while to get it happy. 

Hope this helps,
Matt


--------------------------------------------
--- Tom Yarrish <[EMAIL PROTECTED]> wrote:
> Hey all,
> Okay, I'm playing with Net::Telnet, and I've gotten to the point where I
> connect to the other machine.  What I wanted to know is, can I run and
> interact with a program just using the cmd() part of that module?  Or do I
> need to use another module to do that.  Basically what I'm going is
> telnetting to a server, then running a program (perl scripts actually),
> then feeding it some options, and then exiting out of the program.  Sort
> of like this (snipped)
> 
> $session->cmd("/home/export/user/Xmenu.pl");
> $session->cmd("2");   # This is fed to the Xmenu.pl program
> $session->cmd("1");   # and this
> $session->cmd("y");   # and this
> 
> Thanks,
> Tom
> 
> -- 
> #!/usr/bin/perl -w # 526-byte qrpff, Keith Winstein and Marc Horowitz
> <[EMAIL PROTECTED]> # MPEG 2 PS VOB file on stdin -> descrambled output
> on stdout # arguments: title key bytes in least to most-significant order
> $_='while(read+STDIN,$_,2048){$a=29;$c=142;if((@a=unx"C*",$_)[20]&48){$h=5;
> $_=unxb24,join"",@b=map{xB8,unxb8,chr($_^$a[--$h+84])}@ARGV;s/...$/1$&/;$d=
> unxV,xb25,$_;$b=73;$e=256|(ord$b[4])<<9|ord$b[3];$d=$d>>8^($f=($t=255)&($d
> >>12^$d>>4^$d^$d/8))<<17,$e=$e>>8^($t&($g=($q=$e>>14&7^$e)^$q*8^$q<<6))<<9
> ,$_=(map{$_%16or$t^=$c^=($m=(11,10,116,100,11,122,20,100)[$_/16%8])&110;$t
> ^=(72,@z=(64,72,$a^=12*($_%16-2?0:$m&17)),$b^=$_%64?12:0,@z)[$_%8]}(16..271))
> [$_]^(($h>>=8)+=$f+(~$g&$t))for@a[128..$#a]}print+x"C*",@a}';s/x/pack+/g;eval
> 


__________________________________________________
Do You Yahoo!?
Get personalized email addresses from Yahoo! Mail
http://personal.mail.yahoo.com/

Reply via email to