#1
  1. No Profile Picture
    Contributing User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Mar 2008
    Posts
    63
    Rep Power
    7

    Opening a file to read during telnet in perl


    I have a telnet session opened having username and password. I tried to open a file for reading but its giving me an error saying "No such file or directory" whereas i confirmed that file is there in the path by print command. Can we open a file to read during telnet session? or how can i open a file during telnet session? Please help. Here is my code and the file is ab.txt

    Code:
    use Net::Telnet;
    $t = new Net::Telnet (Timeout => undef, Dump_log=>"dump.log");
    $username="sqa";
    $password="4q2013";
    $t->open("xx.xx.xxxx.com");
    $t->login($username, $password);
    $cmd='cd '.'/projects/74/android-rfs/sys
    tem/app';
    my $ldir="/projects/74/Android";
    
    ipadd();
    print $ip_add=@ipadd[2];
    print "Value of \$t is:$t\n";
    @lines=$t->cmd($cmd) or die "Cannot perform cmd:$!";
    print @lines;
    $t->cmd("cp $nmn.apklist.txt $ldir\n");
    
    $cmd1='cd '.'/projects/74/Android';
    @lines1=$t->cmd($cmd1);
    print @lines1;
    $req_apks="/projects/74/Android/ab.txt";
    print "Value of \$req_apks is: $req_apks\n";
    
    ######### Installating APKs ################################
    
            $path="$ldir/latest_apks";
            @b= $t->cmd("cd $path\n");
            print "cd:@b\n";
            $t->cmd("./adb kill-server\n") or die "Cannot kill adb servers:$!";
            sleep(10);
            $t->cmd("./adb start-server\n") or die "Cannot start adb servers:$!";
            sleep(10);
            @line=$t->cmd("./adb devices\n");
            print "adb:@line\n";
            sleep(10);
            @cnt=$t->cmd("./adb connect $ip_add\n") or die "Cannot connect adb to bo
    ard IP Address:$!";
            print @cnt;
            sleep(5);
    open(F2, "$req_apks") or die "Cannot open APK Filelist file $req_apks:$!";
    while (my $req = <F2>)
            {
    
            print "Installing new package $req\n";
            @b= $t->cmd("./adb install $req \n") or die "Cannot install:$!";
            print @b;
           print @b;
            sleep(3);
            }
    #$t->close;
    $t->cmd("./adb disconnect $ip_add\n");
    sleep(6);
    $t->cmd("./adb kill-server\n") or die "Cannot kill adb servers after install:$!"
    ;
    sleep(10);
    close(F2);
    print "Listapk function ended\n";
    
    
    
    
    
    sub     ipadd
    {
            $ip='xx.xxx.xx.xx';
            $ip_port='10005';
            $port  = new Net::Telnet->new( Host=>$ip,Port=>$ip_port);
    
            $port->write("ifconfig eth0\n");
    while (my $line = $port->getline())
            {
                    if ($line=~/flags/)
                    {
                            @ipadd= split(" ",$line);
                            #print $line;
                            #print @ipadd[2];
                            goto ln;
                    }
                    else
                    {}
            }
    ln:
    $port->close;
    }
  2. #2
  3. No Profile Picture
    Contributing User
    Devshed Novice (500 - 999 posts)

    Join Date
    Jun 2012
    Location
    Paris area, France
    Posts
    843
    Rep Power
    496
    You have received some answers on your cross post on Perl Monks.

    The telnet protocol enables you to run commands on the distant machine, so you could run a Perl program on the distant machine, but it is not intended to open a remote file from your local platform.

    Consider the FTP/SFTP protocols to download the file and read it locally.

    You could possibly try to run a telnet remote command (something like my $content_in_1_string = `cat remotefile.txt`; or my @content_in_lines = `cat remotefile.txt`; ) to list the file and get the content locally (I don't know if this really works and can't try it now), but this is essentially equivalent to downloading the file, and FTP/SFTP protocols would be much better suited.
  4. #3
  5. No Profile Picture
    Contributing User
    Devshed Intermediate (1500 - 1999 posts)

    Join Date
    Apr 2009
    Posts
    1,968
    Rep Power
    1225
    Take a look at File::Remote - Read/write/edit remote files transparently

IMN logo majestic logo threadwatch logo seochat tools logo