Demorou mas sempre consegui arranjar um processo de reiniciar a ligação do modem/router após a uma da manhã para que o tráfego desde essa altura até as oito da manhã seja considerado pelo meu ISP (a Clix) como dentro das happy hours.

O único pré-requisito é que o modem tenha uma interface Web de administração.

Usei duas aplicações facilmente obtíveis:

ProxyTrace

Trata-se de uma proxy que permite inspeccionar os conteúdos das comunicações HTTP que sejam efectuadas.

WGet

GNU Wget is a free software package for retrieving files using HTTP, HTTPS and FTP, the most widely-used Internet protocols. It is a non-interactive commandline tool, so it may easily be called from scripts, cron jobs, terminals without X-Windows support, etc.

Processo:

  1. Fazer download da última versão do ProxyTrace
  2. Configurar no browser o ProxyTrace como sendo a proxy em uso e utilizar a interface Web do router para terminar a ligação à Internet iniciando-a novamente logo de seguida. O ProxyTrace deverá ter registado o tráfego produzido durante essas operações devendo ser fácil identificar os dois registos que provocaram a queda e o restauro da ligação; no meu caso tratam-se de dois pedidos POST que submetem quatro valores cada um.
  3. Fazer download da última versão do WGet.
  4. Usar as informações que o ProxyTrace nos deu para compor um comando wget. No meu caso, com um WAG354G, o comando final para desligar a ligação foi algo deste género (as mudanças de linha servem só para melhor legebilidade, o comando deveria estar numa única linha):
    wget --user="admin" --password="password_do_router"
    -O httpOut.txt -o wgetOut.txt --tries="1"
    --post-data="
        submit_button=Status_Router&
        submit_type=disconnect&
        change_action=gozila_cgi&
        wan_proto=dhcp"
    
    http://192.168.1.1/apply.cgi
    
    

    O nome de utilizador e a password do modem são utilizados no comando para passar na autenticação HTTP do modem.

  5. Configurar uma tarefa que corra diariamente, à hora pretendida, um script (bat, bash, ou outro qualquer) com os comandos de fecho e início da ligação. Para correr a tarefa diariamente pode ser usado o Cron em Linux e o Task Scheduler em Windows.

De notar que não tive em particular atenção questões de segurança. A password de acesso ao modem ficou hardcoded no script e devem ser tomadas outras precauções para que esse ficheiro não possa ser lido por qualquer um.