precisa de lógica de verificação de host / failover crontab portátil no Linux & Cygwin

1

Um teste de ping de host que sempre funciona corretamente a partir da linha de comando interativa bash no Cygwin , está se comportando incorretamente em seu próprio crontab - sempre selecionando o segundo host - e eu posso ' t descobrir porquê:

SHELL=/bin/bash

*/29 7-23 * * *  [ -n "$(pidof unison)" ]  || (partner=5.174.63.120; ping -A -c5 $partner 6 7 |grep -w "ttl" || partner=5.3.172.247; time nice unison-sync  $partner &> /tmp/sync.master.dev.log )
 which ping
/usr/bin/ping

Isso basicamente quer que 5.174.63.120 seja a preferência de host de sincronização de 1ª escolha, no entanto, se ele não voltar no momento, use 5.3.172.247 para esta rodada. Se unison ainda não estiver em execução, isto é.

No entanto, a execução a partir da linha de comando sempre funciona como esperado, ecoando o primeiro endereço IP, se disponível, ou o segundo:

partner=5.174.63.120; ping -A -c5 $partner 6 7 |grep -w "ttl" || partner=5.3.172.247; echo  $partner

No Ubuntu isso funciona tanto em crontab como em cli.

Existe uma maneira melhor de eu conseguir isso, que é ao mesmo tempo compacto e portátil nos dois sistemas operacionais (Linux Ubuntu 11.10 e Cygwin no Windows7,32bit)?

Melhor ainda, gostaria de generalizar minha verificação de host para mais de dois, mas ainda codificá-la em uma linha crontab concisa:

Use A se alcançável, mais use B se acessível, mais use C se acessível, ... senão use Z.

    
por Marcos 28.02.2012 / 14:22

2 respostas

1

No crontab do Cygwin, foi dado o caminho completo /usr/bin/ping e funciona. Bobo eu não considerei isso antes - no shell ele já mostrava precedência sobre a versão do ping do Windows e deixei isso há muito tempo.

Acho que tenho que aturar as peculiaridades desse ambiente cron (como muitas outras coisas no cygwin) incapazes de manter as coisas totalmente idênticas aos meus hosts Linux nativos. No Ubuntu, é /bin/ping btw.

Considerando o andLinux no lugar do Cygwin no futuro.

Se alguém ainda me mostrasse uma lista de failover de vários hosts compactados, a versão A..B..etc..Z agradeceria muito.

    
por 01.03.2012 / 22:21
1

Você já pensou em usar o Balanço ? Seu site indica que funciona no Cygwin. Você pode sincronizar unison para localhost: 5555 e, em seguida, carregar a porta 5555 para múltiplos hosts com RR ou failover.

    
por 12.03.2012 / 04:15