Беспроводная сеть на моем ноутбуке лощины уходит много, времена при возобновлении от 'приостанавливают'. После того как я выполняю 'sudo сервисный перезапуск администратора сети', он начинает работать.
Я задавался вопросом, был ли путь, где я мог перезапустить сеть, в то время как возобновление от приостанавливает и только если беспроводная сеть не была! Каков был бы лучший способ смочь перезапустить сеть, не имея необходимость вводить пароль?
Я не хочу вручную делать это путем осмотра к значку сети и затем взятия некоторых действий мыши. У меня действительно скорее была команда, которую я мог настроить как ярлык. Я пытался создать исполняемый файл удара с содержанием 'сервисный перезапуск администратора сети' и установить setuid на исполняемом файле, а также дать корню владение его, но это не работало.
У меня есть Надежный человек Ubuntu 14.04 ОС.
Я наконец закончил тем, что писал сценарий/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
Благодаря @RMano и @Nephente для их ответов.
Можно внести изменение в sudoers
, чтобы позволить учетной записи пользователя выполнять необходимые команды без пароля.
Предупреждение : обязательно не удалите что-либо от sudoers
, точно не зная что для! Вы могли потенциально освободить все административные привилегии.
sudo visudo
In, раздел направился "спецификация псевдонима Cmnd" , добавляют
Cmnd_Alias NETWORK = /usr/sbin/service network-manager restart
NETWORK
, просто псевдоним для группы команд. Дайте ему другое имя, если Вы предпочитаете!
В конце файла, добавьте оператор
user_name ALL = (ALL) NOPASSWD: NETWORK
, где Вы заменяете своей учетной записью пользователя user_name
. Также замена NETWORK
с любым именем Вы дали псевдоним. Можно было также обойтись без псевдонима и просто заменить его командой, но я предпочитаю его этот путь. Я нахожу, что это сохраняет вещи более организованными.
Безопасный файл и выход редактор. Сверьтесь sudo -l
, что Вам теперь действительно разрешают дать команду.
все еще необходимо предварительно ожидать команду с sudo
, но Вам не будут больше предлагать пароль.
Другая возможность состоит в том, чтобы использовать интерфейс командной строки Администратора сети (это не столь "сильно" как перезапуск демона, но это работало на меня). В этом случае операция является точно тем же, как будто Вы взаимодействуете с апплетом, таким образом, Вам не нужно никакое полномочие.
Для перезапуска интерфейса Wi-Fi используйте этот код:
nmcli nm wifi off
sleep 5
nmcli nm wifi on
у меня были подобные проблемы с отбрасыванием сети (это был неисправный маршрутизатор в моем случае), таким образом, я использовал этот сценарий, добавленный к задания запуска :
#!/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
это проверяет соединение каждую минуту и если это не работает, это перезапускает Wi-Fi.
, Если это не достаточно, вероятно, необходимо применить более сильное оружие, как запуск/остановка Администратора сети. Даже это когда-то перестало работать на мне, и я должен обратиться, чтобы разгрузиться (sudo rmmod
) и затем перезагрузить (sudo modprobe
) модуль драйвера карты Wi-Fi.
Необходимо смочь добавить что-то подобное этому:
YourUserName ALL=NOPASSWD: service network-manager restart
в Ваш/etc/sudoers файл и смочь перезапустить администратора сети с Вашим сценарием.
В Ubuntu MATE 20.10 я использую:
nmcli n off
sleep 5
nmcli n on
Вот мой «однострочный» способ мониторинга и перезапуска сети после 6 последовательных неудачных попыток проверки связи с маршрутизатором (иногда соединение восстанавливается само по себе после нескольких неудачных попыток):
cc=0; date; echo "monitoring network connection"; while true ; do ( ! ping -c1 192.168.88.1 >/dev/null ) && { date; cc=$((cc+1)); echo "connection lost times: $cc"; } || { [ $cc -ne 0 ] && { date; echo "connection ok"; }; cc=0; }; [ $cc -gt 5 ] && { notify-send "network restarting"; nmcli n off; sleep 5; nmcli n on; cc=4; sleep 10; }; sleep 10; done
Примечание. : 192.168.88.1
— это IP-адрес моего маршрутизатора. Измените для своих нужд (8.8.8.8
должно быть достаточно, если вы не знаете IP-адрес маршрутизатора).
Примечание. Чтобы узнать IP-адрес вашего маршрутизатора, см. Как показать (просто) IP-адрес моего маршрутизатора? (с помощью этого можно обновить «однострочный» сценарий для автоматического получения маршрутизаторов). адрес)