Köra script när ethernetnätverk aktiveras i OSX

Permalänk

Köra script när ethernetnätverk aktiveras i OSX

Hej,

Jag vill köra ett backup-script varje gång datorn kopplas upp mot ett fast trådbundet nätverk (alltså inte när WLAN:et används). Finns det något event eller dylikt man kan använda för att uppnå detta på ett någorlunda enkelt sätt?

Visa signatur

"to conquer others is to have power, to conquer yourself is to know the way"

Permalänk
Medlem

Vet inget sätt du kan få såna notifications via ett shellscript, men om du känner för att hacka lite C finns det funktioner i SystemConfiguration.framework för sånt:

http://developer.apple.com/documentation/Networking/Reference...

Permalänk
Inaktiv

Det här kanske kan vara något som du kan bygga vidare på.

#!/bin/bash CONF=$(ifconfig en0 | grep status | awk '{print $4}') if [ $CONF == active ]; then echo "active" else exit fi

Permalänk
Citat:

Ursprungligen inskrivet av m0rris
Vet inget sätt du kan få såna notifications via ett shellscript, men om du känner för att hacka lite C finns det funktioner i SystemConfiguration.framework för sånt:

http://developer.apple.com/documentation/Networking/Reference...

Tänkte mest om det fanns någon hook eller dylikt man kunde kolla med hjälp av AppelScript eller liknande. C orkar jag nog inte ge mig på för denna enkla uppgift, tiden räcker inte till Men skulle vara intressant att testa någon gång när tiden finns.

Citat:

Ursprungligen inskrivet av .mp3
Det här kanske kan vara något som du kan bygga vidare på.

#!/bin/bash CONF=$(ifconfig en0 | grep status | awk '{print $4}') if [ $CONF == active ]; then echo "active" else exit fi

Tänkte aldrig på att man kan kolla ifconfig med ett shellscript, detta får nog bli lösningen för mig. Postar det färdiga scriptet här om jag kommer ihåg det

Edit: Hackade ihop något som verkar fungera (i perl):

#!/usr/bin/perl # This little thingy poll a chosen network interface once every minute to decide if it's active # and if it has a certain IP-adress. If both are true, a second script is executed. A script is # also executed when the interface goes down again. # Script config $interface = 'en0'; $ip_pattern = '192\.168\.0\.\d+'; #Regular expressions FTW! $script_up = '/Users/macke/backup.pl'; #Keep it empty to not run a script $script_down = ''; #Like the one above # Beginning of script $up = 0; #This keeps track of the status of the interface, $script_up/down will only be executed on a change $verbose = 1 if @ARGV[0] eq '-v'; #If -v is passed to the script some status messages will be printed to STDOUT while(1) { #Grabbing the status if the interface $ifconfig = `ifconfig $interface`; if($ifconfig =~ /status: active/ and not $up) { print "Interface is up\n" if $verbose; #Checking if it is the IP-adress we want if($ifconfig =~ /inet $ip_pattern/) { #Interface went up print "IP is matching\n" if $verbose; $up = 1; system($script_up) if $script_up ne ''; } } elsif($ifconfig =~ /status: inactive/ and $up) { #Interface went down print "Interface is down\n" if $verbose; $up = 0; system($script_down) if $script_down ne ''; } #Sleeping for 60 seconds sleep 60; }

Visa signatur

"to conquer others is to have power, to conquer yourself is to know the way"

Permalänk
Medlem

Installera 10.5 och slå på Time Machine...

Visa signatur

Me fail english, thats unpossible!

Permalänk
Citat:

Ursprungligen inskrivet av tva
Installera 10.5 och slå på Time Machine...

Nej, jag har ingen lust att köra time machine. Eller kan jag rsynca upp datan via SSH till en server samt välja vilka mappar som ska åka med? Om inte så passar det inte mig.

Visa signatur

"to conquer others is to have power, to conquer yourself is to know the way"