我已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 功能的另一种可能性是在脚本中添加gksudo
或pkexec
之后exec
(假设您不介意密码提示)。