Сеть перезапуска с командой без потребности обеспечить пароль

Беспроводная сеть на моем ноутбуке лощины уходит много, времена при возобновлении от 'приостанавливают'. После того как я выполняю 'sudo сервисный перезапуск администратора сети', он начинает работать.

Я задавался вопросом, был ли путь, где я мог перезапустить сеть, в то время как возобновление от приостанавливает и только если беспроводная сеть не была! Каков был бы лучший способ смочь перезапустить сеть, не имея необходимость вводить пароль?

Я не хочу вручную делать это путем осмотра к значку сети и затем взятия некоторых действий мыши. У меня действительно скорее была команда, которую я мог настроить как ярлык. Я пытался создать исполняемый файл удара с содержанием 'сервисный перезапуск администратора сети' и установить setuid на исполняемом файле, а также дать корню владение его, но это не работало.

У меня есть Надежный человек Ubuntu 14.04 ОС.

4
задан 22 September 2015 в 08:10

5 ответов

Я наконец закончил тем, что писал сценарий/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 для их ответов.

0
ответ дан 23 November 2019 в 11:41

Можно внести изменение в sudoers, чтобы позволить учетной записи пользователя выполнять необходимые команды без пароля.

Предупреждение : обязательно не удалите что-либо от sudoers, точно не зная что для! Вы могли потенциально освободить все административные привилегии.

  1. Открывают sudo visudo
  2. In, раздел направился "спецификация псевдонима Cmnd" , добавляют

    Cmnd_Alias NETWORK = /usr/sbin/service network-manager restart
    

    NETWORK, просто псевдоним для группы команд. Дайте ему другое имя, если Вы предпочитаете!

  3. В конце файла, добавьте оператор

    user_name ALL = (ALL) NOPASSWD: NETWORK
    

    , где Вы заменяете своей учетной записью пользователя user_name. Также замена NETWORK с любым именем Вы дали псевдоним. Можно было также обойтись без псевдонима и просто заменить его командой, но я предпочитаю его этот путь. Я нахожу, что это сохраняет вещи более организованными.

  4. Безопасный файл и выход редактор. Сверьтесь sudo -l, что Вам теперь действительно разрешают дать команду.

все еще необходимо предварительно ожидать команду с sudo, но Вам не будут больше предлагать пароль.

5
ответ дан 23 November 2019 в 11:41

Другая возможность состоит в том, чтобы использовать интерфейс командной строки Администратора сети (это не столь "сильно" как перезапуск демона, но это работало на меня). В этом случае операция является точно тем же, как будто Вы взаимодействуете с апплетом, таким образом, Вам не нужно никакое полномочие.

Для перезапуска интерфейса 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.

5
ответ дан 23 November 2019 в 11:41

Необходимо смочь добавить что-то подобное этому:

YourUserName ALL=NOPASSWD: service network-manager restart

в Ваш/etc/sudoers файл и смочь перезапустить администратора сети с Вашим сценарием.

2
ответ дан 23 November 2019 в 11:41

В 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-адрес моего маршрутизатора? (с помощью этого можно обновить «однострочный» сценарий для автоматического получения маршрутизаторов). адрес)

0
ответ дан 2 January 2021 в 15:00

Другие вопросы по тегам:

Похожие вопросы: