Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer

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.


  striving toward Perl Adept
  (it's pronounced "why-bick")
  • Comment on Re: perl daemon surviving changing ppp-links

Replies are listed 'Best First'.
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?

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

How do I use this? | Other CB clients
Other Users?
Others examining the Monastery: (5)
As of 2022-01-24 14:12 GMT
Find Nodes?
    Voting Booth?
    In 2022, my preferred method to securely store passwords is:

    Results (64 votes). Check out past polls.