Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask

Re: Simple Perl print() output redirect to html/webpage.

by bitingduck (Chaplain)
on Sep 03, 2012 at 06:29 UTC ( #991363=note: print w/replies, xml ) Need Help??

in reply to Simple Perl print() output redirect to html/webpage.

Last time I did something like that, I just used a shell script wrapped around my perl scraper, and did the upload with scp:

#!/bin/bash # scrape targets and load files to server . $HOME/.bash_profile cd $HOME/MyBot FILENAME=`date "+scrapefiles/scrapetarget%C%y%m%d.txt"` perl > $FILENAME scp $FILENAME

"templistings" is the remote directory I load my scrapings into, where a cron job looks for them periodically and loads them into a mysql database. In your case you would just specify the directory where you want your file to go in your web structure and just write it as a .html file. You could delete the local copy after, but I keep mine in an archive.

An alternative would be to use something like Net::SCP to do the whole thing from within your perl program. You could probably also have your program ssh in to server2 (with Net::SSH::Perl) and write the file directly without making a local copy, but that seems a little more fragile to me.

If the problem is that you need it to run from inside a PHP page, that's a PHP problem, and there's probably better places to ask (though some here might be able to help).

Replies are listed 'Best First'.
Re^2: Simple Perl print() output redirect to html/webpage.
by hmb104 (Sexton) on Sep 03, 2012 at 06:48 UTC

    Thanks for taking the time to reply bitingduck. Actually my question is about displaying my Perl output to html webpage is on server1 and html page runs on server2. From server2 I can call my Perl script from server2 as following:

    ssh myusername@server1 ./ arg

    The script will display some output. I want to know how I can capture this output on test.html on server2?

    server2 is a pure webserver. All my servers are Unix

      This question really isn't in Perl-land any more, but a CGI question. This CGI script should do it:

      #!/bin/sh echo "Content-Type: text/plain" echo ssh myusername@server1 ./ arg

      I'm not sure why your php solution did not work. Maybe you wanted the passthru function?

        Beware, though. If you want to embed the script's output in HTML (instead of plaintext as I did there), you need to make sure that it doesn't contain any of the following characters: <>& (and maybe '"). Instead, escape them properly. For that, the pass-through function php supplies doesn't work.

      Are you directing your output from the script to the right place? And are the permissions set correctly for you to be able to write there? As anon pointed out, it's not obvious why it's not working for you. When you mention user id problems with it, that suggests that it might be working fine except that you don't have write permission to the web server path from whatever user you're running the script as.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://991363]
NodeReaper recites The Raven over the P.A. again

How do I use this? | Other CB clients
Other Users?
Others scrutinizing the Monastery: (8)
As of 2018-06-22 15:37 GMT
Find Nodes?
    Voting Booth?
    Should cpanminus be part of the standard Perl release?

    Results (124 votes). Check out past polls.