Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot
 
PerlMonks  

using backticks to pass commands

by zatarboy (Initiate)
on Jan 22, 2013 at 11:52 UTC ( #1014640=perlquestion: print w/ replies, xml ) Need Help??
zatarboy has asked for the wisdom of the Perl Monks concerning the following question:

Hi Monks,

I would like to pass the string below to shell using backticks and have tried using escape characters in a number of different combinations, but nothing seems to work. I have no problems passing simple commands like ls so I'm guessing I need escape characters in the right place. Your help would be very much appreciated. Thanks

my $snmp_trap = `/usr/bin/snmptrap -v 2c -c public 127.0.0.1 '' .3.5.6.1.4.7.34566.12343.897.0.2 \`

Comment on using backticks to pass commands
Download Code
Re: using backticks to pass commands
by vinoth.ree (Parson) on Jan 22, 2013 at 12:20 UTC

    What is the error message you are getting and why you are escaping last backtick ?

Re: using backticks to pass commands
by Anonymous Monk on Jan 22, 2013 at 14:21 UTC

    If you don't mind installing a small module, capture from IPC::System::Simple works pretty well in my experience:

    use IPC::System::Simple qw/capture/;
    my $snmp_trap = capture '/usr/bin/snmptrap', '-v', '2c',
      '-c', 'public', '127.0.0.1', '', '.3.5.6.1.4.7.34566.12343.897.0.2';
    

    (I hope I got the args you're trying to pass correct.)

    Otherwise, open would work too, although it's not as concise (e.g. open my $fh, '-|', @command or die $!; and then reading from $fh).

      I'm unable to install the modules as I don't have root access on the box.

        Well, installing CPAN modules without root is possible, but maybe it's not necessary to go that far just yet. (I just think IPC::System::Simple::capture is nice because it gives helpful error messages too.)

        1. What are the characters that you think need to be escaped? (I don't see any in the command line you showed.)
        2. Why do you have a backslash before the final backtick? (Are you trying to pass a backtick to the command? If not, maybe that's the problem?)
        3. Is that an empty string you're trying to pass after "127.0.0.1"?
        4. What error message are you getting?
        5. Does running the command from a normal command line work?
        6. What OS are you on / what's your default shell?

        If passing the empty string is the problem (which works on my system), one solution could be the aforementioned piped open. Otherwise, you've got another problem and the above info would help.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://1014640]
Approved by marto
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others having an uproarious good time at the Monastery: (5)
As of 2014-07-22 07:29 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite superfluous repetitious redundant duplicative phrase is:









    Results (106 votes), past polls