redshift
ラップトップにインストールし、起動時に実行するように設定しました。ただし、実行するにはアクティブなインターネット接続が必要です。しかし、問題は私のISPがアクティブな接続を得るためにログインを要求することです。したがって、起動後すぐに接続を使用できないため、redshift を実行できません。
接続がアクティブになるとすぐに自動的にredshiftを実行する方法はありますか?私はKDEを使用しています。
ベストアンサー1
私はあなたが自由に接続できますが、他の場所に要求を送信する前にWeb認証サービスを受ける必要があるこれらのネットワークの1つを使用しているとします。
私の心に浮かんだ最初の解決策は、ラッパースクリプトを作成redshift
し始める前に定期的にインターネット接続を確認することでしたredshift
。次に、redshift
スクリプト自体ではなく起動時に実行するようにスクリプトを設定するだけです。最初の例は次のとおりです。
#!/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.
このソリューションを使用すると、まだ誤検出が発生する可能性があります。 ICMP パケットがブロックされていないが、残りのトラフィックのように (認証サーバーに) リダイレクトされる場合、ECHO 応答を受け取りますが、正しい宛先では受信されません。この問題を解決する簡単な方法は、HTTPを使用することです。リクエストして認証ページを受け取った場合は、ページの内容を確認してください。
#!/bin/bash
while ! wget -qO- http://example.com/ | grep -q Example; do
sleep 5
done
exec /path/to/redshift
どのソリューションを選択しても、スクリプトを実行可能にすることを忘れないでください。
$ chmod +x redshift_at_boot.sh
redshift
その後、起動時にスクリプトを実行するのではなく、スクリプトを実行するだけです。redshift
ルートとして実行する必要がない場合は、KDEでスクリプトをスケジュールできます。環境設定>開始と終了>自動起動。ルートアクセスが必要な場合は、デプロイの開始時にタスクを処理する方法を学びます。 KDE機能を使用するもう1つの方法は、スクリプトの前gksudo
またはpkexec
後に追加することですexec
(パスワードプロンプトを気にしないと仮定して)。