Execute o trabalho quando você se conectar à rede. A maioria das distribuições tem uma infraestrutura de script que você pode conectar, embora você precise de permissões de root. Se você se conectar com o NetworkManager ou o Wicd, eles também terão sua própria infraestrutura de gancho. Adicione um cron job que só seja executado se a rede estiver disponível (e, opcionalmente, somente se o trabalho não tiver sido executado em um longo período), caso a rede permaneça conectada por um longo tempo.
Você não especifica sua distribuição, então eu darei um exemplo para uma distribuição baseada no Debian. Os scripts em /etc/network/if-up.d
são executados depois que uma interface é ativada; consulte a página do manual interfaces(5)
para obter mais informações. Escreva um script /etc/network/if-up.d/zzzz_balki_git_pull
como este:
#!/bin/sh
su balki -c /home/balki/bin/pull_repository_if_old
com um pull_repository_if_old
que faz algo assim (execute git pull
se a rede estiver disponível, a menos que haja um registro de data e hora com menos de 7 dias):
#!/bin/sh
set -e
if [ -z "$(find /path/to/.repository.pull.timestamp -mtime -7)" ] &&
ping -c 1 -w 1 repository.example.com >/dev/null 2>/dev/null
then
cd /path/to/repository
git pull
touch /path/to/.repository.pull.timestamp
fi
EOF
E uma entrada crontab na sua conta:
28 4 * * * /home/balki/bin/pull_repository_if_old