Greetings Monks,
I am attempting to script an automated telnet session that has an overall timeout and will also handle reconnect attempts for dropped sessions.

I'm using an alarm for the global timeout control, which by itself works as expected, but as soon as I add a few Net::Telnet object calls the alarm exception does not seem to propagate.

eval { local $SIG{ALRM} = sub (die "timeout\n"); alarm 5; telnet_connect: #label for later handling of dropped sessions my $t = new Net::Telnet(); # Even with the new() line above the alarm fires # Adding the lines below stop the alarm from working $t->open($host) $t->login($user, $pass); while (1) { # Interact w/telnet session until we're happy # This loop is always reached in testing } $t->close() alarm 0; }; if ($@) { if ($@ =~ /timeout/) { print "Timed out!"; } else { print "Received exception: $@\n"; alarm 0; die; } }
My next intention is to handle dropped connections by receiving Net::Telnet specific exceptions and returning to the telnet_connect label to reconnect and retry, all within the same timeout eval scope.

The first question is why does the alarm fail to trigger with the addition of the Net::Telnet object, even when setting PERL_SIGNALS=unsafe ?

Secondly, is this the best way to handle reconnecting to dropped telnet sessions while being governed by a global timeout?

Thanks in advance for any glimpse of enlightenment!


In reply to Alarm and Telnet issues by pubscout

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.