当我锁定屏幕时,如何自动停止所有入站和出站的网络活动?包括 http、ftp、ssh 等。
例如,我可以通过播放 Youtube 视频然后锁定屏幕来测试这一点。即使计算机被锁定,视频仍会播放。表示网络活动持续进行。
锁定后,我希望我的 Ubuntu 桌面停止与计算机的所有数据通信,并在我重新登录时从中断的地方恢复。有办法吗?你能帮忙吗?
答案1
这个答案的灵感来自这个答案到如何在屏幕锁定/解锁时运行命令或脚本?
对于 Ubuntu 14.04:
假设您使用默认网络管理器,创建一个脚本(我将它放在 ~/bin 中,并将其命名为 netlock.sh)
以下是内容:
#!/bin/bash
dbus-monitor --session "type='signal',interface='com.ubuntu.Upstart0_6'" | \
(
while true; do
read X
if echo $X | grep "desktop-lock" &> /dev/null; then
nmcli nm enable false;
elif echo $X | grep "desktop-unlock" &> /dev/null; then
nmcli nm enable true;
fi
done
)
该脚本将在锁定时禁用网络并在解锁时重新启用。
如果你希望它在每次启动时运行,请参见如何在启动时运行脚本?
如果你希望它在每次登录时运行,请参阅如何在登录时自动启动应用程序?
对于 Ubuntu 16.04:只需编辑脚本并根据需要更改为nmcli nm enable false
和nmcli networking off
更改为即可nmcli nm enable true
nmcli networking on
nmcli
当然,任何已经下载和缓冲的内容仍会播放,直到缓冲区耗尽为止,因此如果您想要更精确的控制,则必须使用 YouTube 播放器上的暂停按钮。
我无法保证一切都会从您中断的地方恢复,因为服务器可能会丢失非活动的连接,但希望这接近您想要的。