连接互联网后立即运行 redshift

连接互联网后立即运行 redshift

我已redshift安装在我的笔记本电脑中,并配置为在启动时运行它。但是,它需要有效的互联网连接才能运行。但问题是,我的 ISP 要求我先登录,然后才能获得活动连接。因此,启动后连接不立即可用,因此 redshift 无法运行。

有什么方法可以在获得活动连接后立即自动运行 redshift?我在 KDE。

答案1

我假设您正在使用这些网络之一,您可以在其中自由连接,但需要先通过 Web 身份验证服务,然后才能向其他地方发送请求。

我想到的第一个解决方案是编写一个包装脚本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以 root 身份运行,您可以从 KDE 安排该脚本系统设置>启动和关闭>自动启动。如果它确实需要 root 权限,那么请了解如何在您的发行版启动时安排事情。使用 KDE 功能的另一种可能性是在脚本中添加gksudopkexec之后exec(假设您不介意密码提示)。

相关内容