如何在锁定屏幕上自动关闭和阻止所有网络活动?

如何在锁定屏幕上自动关闭和阻止所有网络活动?

当我锁定屏幕时,如何自动停止所有入站和出站的网络活动?包括 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 falsenmcli networking off更改为即可nmcli nm enable truenmcli networking onnmcli

当然,任何已经下载和缓冲的内容仍会播放,直到缓冲区耗尽为止,因此如果您想要更精确的控制,则必须使用 YouTube 播放器上的暂停按钮。

我无法保证一切都会从您中断的地方恢复,因为服务器可能会丢失非活动的连接,但希望这接近您想要的。

相关内容