Cha*_*amp 6 network-manager suspend
从“挂起”恢复时,我的戴尔笔记本电脑上的无线网络多次消失。一旦我运行“sudo service network-manager restart”,它就会开始工作。
我想知道是否有一种方法可以让我在从挂起状态恢复时重新启动网络,并且仅当无线网络未启动时!无需输入密码即可重新启动网络的最佳方法是什么?
我不想通过转到网络图标然后执行一些鼠标操作来手动执行此操作。我宁愿有一个可以设置为快捷方式的命令。我尝试创建一个内容为 'service network-manager restart' 的 bash 可执行文件,并在该可执行文件上设置 setuid 以及授予 root 其所有权,但这没有用。
我有 Ubuntu 14.04 Trusty 操作系统。
您可以进行更改以sudoers允许您的用户帐户在没有密码的情况下执行必要的命令。
警告:在sudoers不确切知道其用途的情况下,请务必不要删除任何内容!您可能会失去所有管理员权限。
sudo visudo在标题为“Cmnd 别名规范”的部分中添加
Cmnd_Alias NETWORK = /usr/sbin/service network-manager restart
Run Code Online (Sandbox Code Playgroud)
NETWORK只是一组命令的别名。如果你愿意,给它一个不同的名字!
在文件的末尾,附加语句
user_name ALL = (ALL) NOPASSWD: NETWORK
Run Code Online (Sandbox Code Playgroud)
在那里您将您的用户帐户替换为user_name. 也替换NETWORK为您给别名的任何名称。也可以不使用别名并简单地用命令替换它,但我更喜欢这种方式。我发现它使事情更有条理。
保护文件并退出编辑器。检查sudo -l您现在确实可以发出命令。
您仍然需要在命令前加上sudo,但不会再提示您输入密码。
另一种可能性是使用网络管理器的命令行界面(它不像重新启动守护程序那么“强大”,但它对我有用)。在这种情况下,操作与您与小程序交互完全相同,因此您不需要任何特权。
要重新启动 wifi 接口,请使用以下代码:
nmcli nm wifi off
sleep 5
nmcli nm wifi on
Run Code Online (Sandbox Code Playgroud)
我在网络中断方面遇到了类似的问题(在我的情况下是路由器有问题),所以我使用了这个添加到启动作业的脚本:
#!/bin/bash
PINGTEST=192.168.1.1 # my router, change here. google.com should work anytime ;-)
while /bin/true; do
if ! [ "$(ping -c 1 $PINGTEST)" ]; then
echo "Warning: connection lost at $(date) -- restart" 1>&2
nmcli nm wifi off
sleep 5
nmcli nm wifi on
sleep 60
if ! [ "$(ping -c 1 $PINGTEST)" ]; then
echo "Waiting for connection going up at $(date)" 1>&2
sleep 60
else
echo "Connection on at $(date)" 1>&2
fi
# else
# echo "Connection OK on $(date)" 1>&2
fi
sleep 60
done
Run Code Online (Sandbox Code Playgroud)
它每分钟检查一次连接,如果它不起作用,它会重新启动 wifi。
如果这还不够,您可能必须使用更强大的武器,例如启动/停止网络管理器。即使有时我也失败了,我不得不求助于卸载 ( sudo rmmod) 然后重新加载 ( sudo modprobe) wifi 卡驱动程序模块。
我最终编写了脚本 /etc/pm/sleep.d/0000_custom:
#!/bin/sh
# /etc/pm/sleep.d/0000_custom
# Action script to lock screen and resume wifi properly
PATH=/sbin:/usr/sbin:/bin:/usr/bin
case "$1" in
suspend|hibernate)
#do nothing
;;
resume|thaw)
X_USER=`who| grep ' :0'|cut -f1 -d' '`
# lock screen when resuming from suspend
sudo -u $X_USER xscreensaver-command -lock
# turn wifi on when resuming from suspend
nmcli nm wifi on
;;
esac
exit 0
Run Code Online (Sandbox Code Playgroud)
感谢@RMano 和@Nephente 的回答。
| 归档时间: |
|
| 查看次数: |
2013 次 |
| 最近记录: |