Страница 1 из 1

Перезагрузка сетевого интерфейса по расписанию

Добавлено: 06 окт 2022, 19:10
Your1ch
Помогите пожалуйста, в линуксоводстве новичок. Нужен рецепт как настроить следующее. Интернет подключен к пк проводом, это Ростелеком pppoe. Ночью в разное время интернет отваливается, в ifconfig интерфейс поднят и есть ip но Пинги на 8.8.8.8 не проходят. Мне очень важно, чтоб комп был в сети все время, перезагрузка сетевого интерфейса помогает. Будьте любезны дайте скрипт проверки сети с периодичностью 5 минут и если пинга нет то перезагрузить сетевой интерфейс. Как этот скрипт выполнять в кроне без моего участия? Дополнительно Как перезагрузить сеть в кроне каждое утро в 7:00? Заранее благодарю.

Перезагрузка сетевого интерфейса по расписанию

Добавлено: 06 окт 2022, 19:33
rogoznik

Код: Выделить всё

#!/bin/bash

TARGET_HOST='google.com'

count=$(ping -c 3 $TARGET_HOST | grep from* | wc -l)

if [ $count -eq 0 ]; then
    ip link set интерфейс down
    sleep 3
    ip link set интерфейс up
fi
интерфейс заменить на имя своего интерфейса
Посмотреть список интерфейсов Ну и типа такого задания в cron

Код: Выделить всё

*/5 * * * * /path/to/script.sh
Ну и не забыть дать скрипту права на выполнение

На правильность не претендую.
Наверняка есть способ получше и поизящней

Перезагрузка сетевого интерфейса по расписанию

Добавлено: 06 окт 2022, 19:36
Your1ch
rogoznik, вот с правами как то не сталкивался. Подскажите как выдать права?

Перезагрузка сетевого интерфейса по расписанию

Добавлено: 06 окт 2022, 19:37
rogoznik
Your1ch, в терминале

Код: Выделить всё

chmod +x script_name

Перезагрузка сетевого интерфейса по расписанию

Добавлено: 06 окт 2022, 19:41
Your1ch
rogoznik, спасибо, до пк доберусь только завтра. Проверю, отпишусь. Еще вопрос как убедиться что скрипт выполняется? Может логи где то есть

Перезагрузка сетевого интерфейса по расписанию

Добавлено: 06 окт 2022, 19:44
rogoznik
Your1ch, прям в скрипте сделай запись в файл и проверяй

Перезагрузка сетевого интерфейса по расписанию

Добавлено: 06 окт 2022, 20:34
Your1ch
rogoznik, я не знаю как. Спасибо еще раз.

Перезагрузка сетевого интерфейса по расписанию

Добавлено: 06 окт 2022, 21:35
madesta
А под обычными правами в cron сработает? У меня как-то была проблема отваливающейся связи с роутером и лечившейся перезапуском интерфейса (down и up), но отрабатывалось это у меня только через sudo, в результате чего вынужден был добавить соответствующую запись в /etc/sudoers.

Перезагрузка сетевого интерфейса по расписанию

Добавлено: 06 окт 2022, 21:58
Your1ch
madesta, кстати хорошее замечание, повторюсь я новичок в этом деле. Команды service network restart выполняются от Рута (не знаю чем принципиально отличается от up down). chmod +x script_name это права на исполнение, но не от суперпользователя.
Думаю что если залогиниться от рута в консоли, а потом создать задание крону должно выполнять от Рута.
sudo crontab e

И еще
rogoznik писал(а):
06 окт 2022, 19:33
ip link set интерфейс down
Разве не ip link set dev enp0s3 down?

Перезагрузка сетевого интерфейса по расписанию

Добавлено: 07 окт 2022, 07:03
rogoznik
Your1ch писал(а):
06 окт 2022, 21:58
Разве не ip link set dev enp0s3 down?
Нет.
Ты хоть бы попробовал саму команду, а потом спрашивал

Перезагрузка сетевого интерфейса по расписанию

Добавлено: 07 окт 2022, 09:47
Your1ch
rogoznik, в общем добрался до пк. доустановил утилиту pppoeconf и удалил соединение в network manager. Настроил соединение через pppoeconf. У этой утилиты есть команды для установки соединения "pon dsl-provider" и завершать с помощью "poff".
скрипт создал такой: wd.sh

Код: Выделить всё

#!/bin/bash
TARGET_HOST='8.8.8.8'

count=$(ping -c 3 $TARGET_HOST | grep from* | wc -l)

if [ $count -eq 0 ]; then
    poff dsl-provider
    sleep 10
    pon dsl-provider
fi
и второй скрипт чтоб каждое утро в 7:00 перезагружал nr.sh

Код: Выделить всё

#!/bin/bash
    poff dsl-provider
    sleep 10
    pon dsl-provider
засунул в крон под рутом,
*/5 * * * * /root/scripts/wd.sh
0 7 * * * /root/scripts/nr.sh

вроде бы работает.

не могу найти логи крона, может подскажете как организовать логгирование?

Перезагрузка сетевого интерфейса по расписанию

Добавлено: 07 окт 2022, 09:59
rogoznik
Your1ch, прям в скрипте в нужном месте организуй запись в файл
например так

Код: Выделить всё

echo 'какой-то текст' >> /var/log/file_name.log

Перезагрузка сетевого интерфейса по расписанию

Добавлено: 07 окт 2022, 10:41
Your1ch
Всем большое спасибо, буду тестировать.

Перезагрузка сетевого интерфейса по расписанию

Добавлено: 11 окт 2022, 07:34
Your1ch
Скрипты работают, всем еще раз большое спасибо.