Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

Re: perl daemon surviving changing ppp-links

by ybiC (Prior)
on Oct 20, 2005 at 13:09 UTC ( #501652=note: print w/ replies, xml ) Need Help??


in reply to perl daemon surviving changing ppp-links

Or to stick with a self-contained-within-your-own-original-script approach...

Have your daemon note which network-interface it used last.   Then before each subsequent iteration, check to see if that same interface is still up.   If not, have the daemon bounce itself.   Of course you'd need some delay or counter or somesuch to avoid flapping.   Or else use an interface that *is* up, perhaps from a configured list of permissable interfaces.

You may find it necessary to think "ip address" instead of "network interface", depending on implementation.

Searching CPAN and searching The Monastery on "network interface" turned up some potentially relevant hits.

  cheers,
  ybiC

  striving toward Perl Adept
  (it's pronounced "why-bick")


Comment on Re: perl daemon surviving changing ppp-links
Re^2: perl daemon surviving changing ppp-links
by raphi72 (Initiate) on Oct 20, 2005 at 21:48 UTC
    Thanks for that hint. I now use IO::Interface to get my local ppp0 ip-address:
    use IO::Socket; use IO::Interface qw(:flags); sub get_local_addr { my $if = shift; my $s = IO::Socket::INET->new(Proto => 'udp'); unless ($s->if_flags($if) & IFF_RUNNING) { return undef; } else { return $s->if_addr($if); } }
    and then in my script I test, if the ip-address of the ppp0 interface changed:
    use Net::Ping; my $addr = get_local_addr("ppp0"); unless(defined $addr) { die "I'm offline\n"; } while (1) { my $p = Net::Ping->new(udp); if $p->ping($host) { print "success\n"; } else { print "failed\n"; my $cur_addr = get_local_addr("ppp0"); if ($addr ne $cur_addr) { die "I'm offline\n"; } } undef $p; sleep 3; }
    There's no need to restart the script, because it will get started by my if-up script.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://501652]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (17)
As of 2014-07-11 15:59 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    When choosing user names for websites, I prefer to use:








    Results (230 votes), past polls