Suponho que você esteja usando uma dessas redes nas quais você pode se conectar livremente, mas precisa passar por um serviço de autenticação da web antes de poder enviar solicitações em qualquer outro lugar.
A primeira solução que vem à mente é escrever um script de wrapper em torno de redshift
e verificar se há uma conexão com a Internet regularmente, antes de iniciar o redshift
. Tudo o que você precisa fazer depois disso é configurar esse script para ser executado no momento da inicialização, em vez de redshift
em si. Aqui está um primeiro exemplo:
#!/bin/bash
while ! ping -qw1 -c1 8.8.8.8 >/dev/null 2>&1; do
# As long as we can't ping Google's DNS, sleep.
sleep 5
done
exec /path/to/redshift # We exited the loop, we can run redshift.
Agora com essa solução, ainda há uma chance de um falso positivo. Se os pacotes ICMP não forem bloqueados, mas redirecionados como o resto do tráfego (para o servidor de autenticação), você receberá uma resposta ECHO, mas não do destino correto ... Uma maneira fácil de corrigir isso é usar um HTTP em vez disso, e verifique o conteúdo da página caso estejamos sendo alimentados na página de autenticação.
#!/bin/bash
while ! wget -qO- http://example.com/ | grep -q Example; do
sleep 5
done
exec /path/to/redshift
Qualquer solução que você escolher, não esqueça de tornar seu script executável:
$ chmod +x redshift_at_boot.sh
Então tudo que você precisa fazer é executar esse script em vez de redshift
no momento da inicialização. Se você não precisa do redshift
rodando como root, você pode agendar esse script a partir das Configurações do sistema do KDE> > Inicialização & desligamento > Autostart . Se isso requer privilégios de root, então descubra como agendar as coisas no momento da inicialização para sua distribuição. Outra possibilidade de usar o recurso do KDE seria adicionar gksudo
ou pkexec
após exec
no script (supondo que você não se importe com o prompt da senha).