(uiserver):u61210220:~/pmimage$ ls >1.hound6 (uiserver):u61210220:~/pmimage$ stat 1.hound6 File: ‘1.hound6’ Size: 1151 Blocks: 8 IO Block: 4096 regular file Device: 9405h/37893d Inode: 1021987444 Links: 1 Access: (0604/-rw----r--) Uid: (6042724/u61210220) Gid: ( 600/ftpusers) Access: 2018-11-22 00:23:27.844353135 -0500 Modify: 2018-11-22 00:23:27.844353135 -0500 Change: 2018-11-22 00:23:27.844353135 -0500 Birth: - #### Put file to server(y/n)?: y server dir is perlmonks return1 is Directory perlmonks already exists! path3 is /home/bob/2.scripts/pages/1.hound/template_stuff/1.hound1.css image dir is pmimage return2 is Directory pmimage already exists! Remove file(y/n)?: y you got 35 seconds for process 16757 return3 is 1 1.hound1.pl,16750 -w ./1.hound1.pl |-1.hound1.pl,16757 -w ./1.hound1.pl |-pstree,16758 -Apal 16750 `-ssh,16751 -p 22 -o NumberOfPasswordPrompts=1 -o PreferredAuthentications=keyboard-interactive,password -l u61210220 home349337426.1and1-data.host -s sftp process 16757 executed here 16757 terminated ^C $ #### sub createDir { use 5.011; use Net::SFTP::Foreign; my ( $dirName, $sftp ) = @_; if ( $sftp->test_e($dirName) ) { if ( !$sftp->test_d($dirName) ) { print "Remove file(y/n)?: "; my $prompt1 = ; chomp $prompt1; if ( $prompt1 eq ( "y" | "Y" ) ) { my $start = time; if ( fork() == 0 ) { # arm the alarm clock alarm(35); say "you got 35 seconds for process $$"; # create a child process my $return3 = $sftp->remove($dirName); say "return3 is remove file return: $return3"; createDir( $dirName, $sftp ); say "process $$ executed here"; exit(0); } system("pstree -Apal $$"); while ( ( my $pid = wait() ) != -1 ) { say "$pid terminated"; } say time - $start, " seconds elapsed instead of a year"; } #end if that tests !$sftp->test_d($dirName) next brace } if ( $sftp->test_d($dirName) ) { return "Directory $dirName already exists!"; } else { say "Can't create $dirName because there's a file in the way!"; handleDirCreateError( @_, $sftp->error() ); } } my $success = $sftp->mkdir($dirName) or handleDirCreateError( @_, $sftp->error() ); return $success; } sub handleDirCreateError { use 5.011; use Net::SFTP::Foreign; my ( $dirName, $sftp, $error ) = @_; say "parameter array is @_"; if ( fork() == 0 ) { # arm the alarm clock alarm(10); say "alarm set for ten in process $$ and pinging google"; # create a child process my $trial = system("ping www.google.com"); say "trial is $trial"; exit(0); } print "Bounce wireless(y/n)?: "; my $prompt1 = ; chomp $prompt1; if ( $prompt1 eq ( "y" | "Y" ) ) { if ( fork() == 0 ) { # arm the alarm clock alarm(35); say "alarm set for 35 in process $$ and restarting network"; # create a child process my $trial2 = system("sudo service network-manager restart"); say "trial2 is $trial2"; sleep 30; say "sleeping 30"; exit(0); } } print "Do you think you're ready now(y/n)?: "; my $prompt2 = ; chomp $prompt2; if ( $prompt2 eq ( "y" | "Y" ) ) { my $return2 = createDir( $dirName, $sftp ); say "return2 is $return2"; } else { say "$error was too much this time: ceasing execution"; die; } return "execution shouldn't get here"; } #### (uiserver):u61210220:~/pmimage/1.hound6$ pwd /kunden/homepages/9/d349337426/htdocs/pmimage/1.hound6 (uiserver):u61210220:~/pmimage/1.hound6$