我有一个别名在我的bashrc谁关闭我的VPN等待按下一个键,然后再次启动我的VPN。但有时我忘了按下键重新启动我的VPN,所以我尝试做的是定期(例如每2分钟)我想要一个通知来提醒我我的VPN关闭)。
别名
alias vpnd='sudo net down && read -n1 -p"Press a key to reactivate the VPN..." && sudo net up'
而net命令
#!/bin/bash
[[ ( "$1" == "up" ) || ( "$1" == "down" ) ]] && wg-quick "$1" wg0 &> /dev/null
我知道notify-send命令和sleep命令,但不知道如何将它们合并组合起来使其工作。理想情况下,如果我可以避免外部进程,并在一行别名中包含所有内容,那么必须这样做
谢谢你的任何建议
编辑1:这个别名的目的是暂时停用我的VPN访问一些网站谁阻止你,如果你使用VPN。所以只有几分钟。我喜欢今天的工作方式,只是想加一个提醒
编辑2:感谢@freeman的帮助。现在的别名是这样的:
alias vpnd='sudo net down && echo "Press a key to reactivate the VPN..." && while true; do sleep 120; read -t 1 -n 1 && sudo net up && break || [[ $(ip a | grep -q "wg0") ]] || notify-send -t 2000 -i "/usr/share/icons/Contrast\
High/256x256/status/software-update-urgent.png" "WARNING" "VPN idle"; done'
1条答案
按热度按时间3ks5zfa01#
您可以编辑别名,使其包含每2分钟运行一次的循环,并检查VPN是否处于活动状态,如果未处于活动状态,则发送通知
看看这个
更新根据您的评论,如果您在循环过程中按下1秒内的任何键,它将立即重新启动VPN。否则,如果VPN在2分钟后仍然不活动,它将发送通知
UPDATE 2根据您的评论,别名没有终止的原因是因为while循环设置为无限期运行,因此您可以编辑别名以包含一个条件,一旦VPN重新激活,该条件将中断循环