Desconectar modem quando a fila do postfix está vazia

1

em /etc/ppp/ip-up.d/script Eu tenho o seguinte que executa o fetchmail quando a interface ppp0 está ativa (conectada) e quando termina o modem finaliza a conexão à Internet automaticamente.

 #!/bin/sh
 /usr/bin/fetchmail -v -f /etc/fetchmailrc -L /var/log/fetchmail.log
 killall wvdial

isso funciona perfeitamente. agora eu preciso adicionar ao script abaixo da execução do comando fetchmail algo que verifica se a fila de correio do postfix está completamente vazia e se é true, então execute o comando killall wvdial para desligar o modem.

Em teoria eu sei que eu poderia fazer algo usando if, else, do, while, until, etc. mas na prática eu não sei como desenvolvê-lo. Eu gostaria que vocês me ajudassem a programar e completar este script para funcionar corretamente. Eu aprecio os comentários.

    
por nerdhacker 07.11.2011 / 17:40

1 resposta

2

Não sou especialista em bash, mas depois de algum rápido pesquisa Acho que isso vai fazer o que você quer:

while [ 'find /var/spool/postfix/{deferred,active,maildrop}/ -type f | wc -l' -gt 0 ]; do
    sleep 5
done

Isso deve fazer um loop a cada 5 segundos até que as filas do postfix estejam vazias. Ajuste seu caminho para os arquivos postfix de acordo.

Você pode querer deixar a parte deferred fora do comando find , caso contrário, qualquer erro de envio temporário que faça com que um e-mail seja adiado manterá a conexão do modem aberta até que ele tente novamente.

    
por 07.11.2011 / 20:55