Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister
 
PerlMonks  

Re: Net::Telnet, cmd, and sed

by belden (Friar)
on Jun 27, 2003 at 21:04 UTC ( [id://269739]=note: print w/replies, xml ) Need Help??


in reply to Net::Telnet, cmd, and sed

### This is the the problem area ### @vacation_str=$telnet->cmd("$SED s/\$SUBJECT/SUBJECT/g /home/$usern +ame/.vacation.msg"); ###

I'd guess that the problem is that you need to add an extra pair of \ to your sed command in order to escape SUBJECT properly:

### This is the the problem area ### @vacation_str=$telnet->cmd("$SED s/\\\$SUBJECT/SUBJECT/g /home/$use +rname/.vacation.msg"); ###

As is, "\$SUBJECT" will send "$SUBJECT" to the shell that you're talking to; that shell will try to expand $SUBJECT. Since this is actually text within the file you're munging, you need to make the shell see \$SUBJECT. (I'm guessing here but this seems about right.)

Another way of doing it would be to cut sed out of the loop altogether:

@vacation = map { s/\$SUBJECT/SUBJECT/g } $telnet->cmd("cat ~$username/.vacation.msg");

If that doesn't fix it, then the problem might not be the shell interpreting SUBJECT - perhaps the .vacation.msg file you're looking at has a sequence of characters in it that match your Net::Telnet object's prompt() string. You may need to try briefly undefining prompt() within your object, do your cat/sed/whatever, then re-define prompt().

Gosh, I'm just full of ideas. In some places, your code refers to $$telnet, and in others, it refers to $telnet. This might be causing your cmd() some grief. Try tossing a 'use strict; use warnings;' at the top of your code to see what complains :)

When automating Net::Telnet connections to other machines, I've found that I can get away with a very limited range of commands at the remote machine, particularly for file manipulations such as the one you're doing. /bin/echo and /bin/ls can be used to check whether files and directories exist; /bin/cat returns file contents to your program, so you can do whatever complex greps and seds on them using Perl's regexes.

Good luck on your project, sounds like a fun one.

blyman
setenv EXINIT 'set noai ts=2'

Replies are listed 'Best First'.
Re: Re: Net::Telnet, cmd, and sed
by JoeJaz (Monk) on Jun 30, 2003 at 14:20 UTC
    Wow! Thanks for all the ideas. Hopefully this will help me make some progress. I appreciate the help, especially when I am stuck at a stumbling block such as this. Can't wait to try some of this stuff out....

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://269739]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others chanting in the Monastery: (7)
As of 2024-04-18 14:53 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found