Re: execute a command after getting/loosing a IP-Address?
Oliver Fänger <[email protected]> Thu, 27 Nov 2003 17:49:40 +0100
| Newsgroups | gmane.comp.apache.mod-wackamole.general |
|---|---|
| Message-ID | <[email protected]> |
This is exactly what i was looking for.
I've just checked out from the cvs and will try it tomorow.
Btw.: your 'Browsable via web through viewcvs here.' link is broken.
Thanx a lot
Oliver Fänger
Theo Schlossnagle schrieb:
> On Nov 27, 2003, at 10:13 AM, Ryan Caudy wrote:
>
>> So, we don't provide any solutions to this problem within Wackamole.
>> However, I'm sure someone else has had to deal with it, and might
>> answer you with something they've already developed. (This is a big
>> holiday in the US, which means a lot of people on the list probably
>> won't be responding for a few days).
>>
>> The solution you proposed is probably the quickest and dirtiest way to
>> get what you want. If you wanted something more powerful, using the
>> same mechanism to run a pair of shell-scripts "Acquire-script" and
>> "Release-script" would give this to you. However, I'd be a little
>> worried about doing so in a general situation, because of the
>> privileges with which Wackamole is run.
>>
>> I wouldn't recommend adding anything too complicated directly to
>> Wackamole, because of timing concerns. You might consider a
>> long-running daemon to handle this failover, that communicates
>> (something along the lines of "Acquire/Release address") with
>> Wackamole via named pipes or another Unix IPC mechanism.
>
>
> Actually, wackamole in CVS has embedded an embedded perl interpreter in
> it. So you can do crazy stuff like that. It is mostly untested and
> undocumented, but I have used it. It also has the ability to dlopen
> shared objects and run code in those -- if you'd rather write in C.
>
> Perl works something like this in your wackamole.conf:
>
> PerlUseLib .
> PerlUse example
> RunDynamic example::hup_named on up
>
> In the local directory (.) example.pm looks like:
> -- begin --
> package example;
>
> use strict;
> use Data::Dumper;
>
> sub hup_named {
> my $pid;
> open(A,"</var/run/named.pid") && chomp($pid = <A>);
> close(A);
> kill 1, $pid if($pid);
> }
>
> 1;
> -- end --
>
> The following will dlopen funcs.so and run the function returned by
> dlsym("shoutout"):
>
> RunDynamic funcs:shoutout on up
>
> A simple funcs.c is:
> -- begin --
> #include "config.h"
>
> void killhup(struct interface p,
> struct interface *e,
> struct interface r) {
> fprintf(stderr, "I am here with IP %s\n", inet_ntoa(p.ipaddr));
> }
> -- end --
>
> All this being development work -- YMMV.
>
> // Theo Schlossnagle
> // Principal Engineer -- http://www.omniti.com/~jesus/
> // Postal Engine -- http://www.postalengine.com/
> // Ecelerity: fastest MTA on earth
>
>
> _______________________________________________
> wackamole-users mailing list
> [email protected]
> http://lists.backhand.org/mailman/listinfo/wackamole-users
>