JoeJaz has asked for the wisdom of the Perl Monks concerning the following question:
I applogize for posting a similar post previously. Two people responded with some very good ideas that I am stil working with. Yet, I am still unable to make headway. The above code does not return to the variable @vacation_str what I expect. If I simply run the above 'sed' command in bash, it returns exactly what I am looking for (a vacation message string with all of the '$'s stripped from it). However, Using the Net::Telnet 'cmd' method to send the above command 'sed s/\$SUBJECT/SUBJECT/g /home/$username/.vacation.msg', only the first line of the vacation message shows up. Dispite all the approaches I have tried, I have not found one that returns the full contents of the .vacation.msg file when the file contains a $. My best guess is that I am not escaping something in the 'sed' commnad correctly, though I have tried fruitlessly to modify the expression so that it will work. If anyone has any ideas or resources, I would be very open to what you have to say. Thanks for your time,#!/usr/bin/perl my $SED = "/bin/sed"; my $username = "user1"; my $password = "password"; my $host = "localhost"; &start_login; sub start_login { my $telnet = new Net::Telnet( -host => $hostname, -telnetmode => ''); telnet_login($username,$password,$host,\$telnet); ### This is the the problem area ### @vacation_str=$telnet->cmd("$SED s/\$SUBJECT/SUBJECT/g /home/$usern +ame/.vacation.msg"); ### telnet_close(\$telnet); } sub telnet_login { use Net::Telnet; my ($username, $password, $host, $telnet) = @_; my $error_msg = "Incorrect username or password, please try again" +; my $error_type = "ERROR"; $$telnet = new Net::Telnet ('Timeout'=>'7', 'Prompt'=> '/.*([\$#\%>~]|\\\[\\e\[0m\ +\\] \[0m)\s?/' ); $$telnet->open(Host=>$host); $$telnet->login($username,$password); }
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Net::Telnet, cmd, and sed
by belden (Friar) on Jun 27, 2003 at 21:04 UTC | |
by JoeJaz (Monk) on Jun 30, 2003 at 14:20 UTC |