I have a functional Net::SFTP program, however, Net::SFTP->new(...) does not have a built in TIMEOUT parameter.
I have not used $Sig{ALRM} before. After researching / reading ALOT of resources I have hacked the following code.
What I want to do ... Capture a no-response situation from the remote host after XXX seconds, notify user of error (page, email) and end program.
Are there other situations that my example may not be catching ?
Is there a better use of $SIG{ALRM} when compared to my example ?
#notify user attempting connection writeLog( "Connecting to host : $host as user : $user" ); #open connection eval { #timeout if no response within 120 seconds $SIG{ALRM} = sub {die "Net::SFTP timed out\n"}; alarm(120); $sftp = Net::SFTP->new($host, user=>$u password=>$p debug=>1); alarm(0); }; if ( $@ ) { #handle error opening connection alarm(0); chomp( $@ ); writeLog( "Error: $@ trying to connect to remote $host"); sendEmail(); sendPage(); die("\n"); } alarm(0); writeLog("Connected to host : $host as user : $user");
In reply to ??? proper use of $SIG{ALRM} with SFTP ??? by mikedshelton
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |