2 things could be happening: 1./ Timeout 2./ size of your descriptors. That is: on a "?nix" platform type limit You see something like: william:/foobar(1)% limit cputime unlimited filesize unlimited datasize unlimited stacksize 10240 kbytes coredumpsize 0 kbytes memoryuse unlimited vmemoryuse unlimited descriptors 1024 memorylocked 4 kbytes maxproc 7168 __________________ William Ampeh (x3939) Federal Reserve Board MNibble <[EMAIL PROTECTED] de> To beginners@perl.org 08/31/2005 10:09 cc AM Subject CGI execute command via ssh Aloha I',m trying to execute a command via ssh on a remote maschien via a perl-cgi script. The app i'm building does this a lot, with 99% of success. The missing 1% i'm trying to understand and after that to solve. I use backstick to run the ssh command something like: my $data = `ssh [EMAIL PROTECTED] /root/somewhere/something $args` This work fine. But the 1% is a command where up to 5 MB are in my $data. --- Only if i run it local on the 192.168.10.8. Remote i only fetch 1.6 MB. While i doesn't matter if i should get 2,3, or 5 MB. Most annoying is that the data are strings .. and the missing one are randomly placed somewhere. After a lot of wasted time with no success i kick that solution and tried to put all the data in a MySQL DB on the remote maschine ( 192.168.10.8 ) again this works better since all data get into that DB. When execute that script from the cgi script, i get an error message. While the error message was generate from within the script from the remote maschine - this error "could no happen". I couldn't get rid of that error so i again tried a different way. This time the remote scripte run as a daemon process, with no report back to the caller, just fire and forget. Again it work direkt from commandline and via commandline call over ssh and again not from within the cgi script. What did i miss? What das CGI what works so nice agains me? here the shorted scripts; CGI Script -------------------------------------------------------------------- use strict; use warnings; use CGI::FormBuilder; use CGI; use CGI::Carp qw(fatalsToBrowser warningsToBrowser); use constant DEBUG => 0; my $host = $ENV{'QUERY_STRING'}; die unless ($host=~/^[\w-]+$/); my $page = CGI->new; print $page->header; print $page->start_html; print `ssh [EMAIL PROTECTED] /root/nodedateien $host`; print $page->end_html; ---------------------------------------------------------------------- Remote script ----------------------------------------------------------------------- #!/usr/bin/perl use strict; use warnings; use IO::Socket; use DBI; use POSIX; my $arg = shift or die ; die "Can't fork" unless defined ( my $child = fork); exit 0 if $child; #parent dies; setsid(); open(STDIN, "</dev/null"); open(STDOUT, ">/dev/null"); open(STDERR, ">&STDOUT"); chdir '/'; #change working directory umask(0); #forget file mod creation mas my $dbh = DBI->connect('dbi:mysql:database=DB;host=localhost:3306','root','pass',{RaiseError => 1, AutoCommit => 1}); my $sth = $dbh->prepare('delete from nodedateien'); $sth->execute(); $sth = $dbh->prepare('insert into nodedateien (HL_Name,LL_Name,Backup_Date) Values ( ?,?,? ) '); open(IN,"/command" |"); my ($val1,$val2,$val3); for (1 .. 12) {<IN>} while(<IN>) { next if (/^\n/); next if (/return code/); if ($_=~/^BACKUP_DATE: (.+)/) { $val3 = $1} if ($_=~/^ HL_NAME: (.+)/) { $val1 = $1} if ($_=~/^ LL_NAME: (.+)/) { $val2 = $1; update($val1,$val2,$val3)} } sub update { my ($HL,$LL,$BD) = @_; $sth->execute($HL,$LL,$BD); } -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response> -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>