Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Обнаружить отключение сетевого кабеля  (Прочитано 10765 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Serguntii
Помогающий

ru
Offline Offline

« : 01-03-2014 12:04 » 

Как сделать такое действие, подскажите пожалуйста.
Нужно обнаружить когда отключается сеть ethernet (разъем вынули, или питание маршрутизатора исчезло, потом опять появилось).
После когда снова появилась связь нужно выполнить netctl restart ethernet-myset можно что то придумать?
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 01-03-2014 12:40 » 

sergeyan, проверяй сеть по таймеру.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Serguntii
Помогающий

ru
Offline Offline

« Ответ #2 : 01-03-2014 12:45 » 

Нужно писать программку, или скрипт?
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 01-03-2014 13:11 » 

ОС, версия?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Serguntii
Помогающий

ru
Offline Offline

« Ответ #4 : 01-03-2014 14:12 » 

Операционка  archlinux  вот сайт https://www.archlinux.org/
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #5 : 01-03-2014 14:18 » 

Судя по тому, как быстро реагирует NetworkManager, Существует сигнал. Тут либо DBus сигнал. Либо сигнал от доайвера. Нужно копать в эту сторону.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Михалыч
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #6 : 01-03-2014 14:44 » 

Не оно?  Быть такого не может
http://manpages.ylsoftware.com/ru/ifplugd.8.html
Записан

Поживем - увидим... Доживем - узнаем... Выживу - учту  Улыбаюсь
Serguntii
Помогающий

ru
Offline Offline

« Ответ #7 : 01-03-2014 15:04 » 

Да кажется то что надо сейчас почитаю   Да-да
Записан
Михалыч
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #8 : 01-03-2014 16:01 » 

Думаю это тоже будет полезно Улыбаюсь
http://stackoverflow.com/questions/808560/how-to-detect-the-physical-connected-state-of-a-network-cable-connector
Записан

Поживем - увидим... Доживем - узнаем... Выживу - учту  Улыбаюсь
Serguntii
Помогающий

ru
Offline Offline

« Ответ #9 : 03-03-2014 08:44 » new

По идеи мне нужно вот это
Цитата
Для проводных соединений: netctl-ifplugd@interface.service. Профиль измненятся при отключении и подключении кабеля
https://wiki.archlinux.org/index.php/Netctl_%28%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9%29
Мне нужно не менять профиль на другой, а нужно выполнить команду netctl restart ethernet-myprof
Я что то не понимаю как это сделать (
Думаю нужно настроить где то здесь
netctl.action
Код:
#!/bin/bash
#
# ifplugd.action script for netctl

. /usr/lib/network/globals

PROFILE_FILE="$STATE_DIR/ifplugd_$1.profile"

case "$2" in
  up)
    # Look for a dhcp based profile to try first
    # dhcp can actually outright fail, whereas
    # it's difficult to tell if static succeeded
    # Also check profile is same iface and is right connection
    echo "up"
    declare -a preferred_profiles
    declare -a dhcp_profiles
    declare -a static_profiles
    while read -r profile; do
        (
          echo "Reading profile '$profile'"
          source "$PROFILE_DIR/$profile"
          [[ "$Interface" == "$1" && "$Connection" == "ethernet" ]] || continue
          is_yes "${AutoWired:-no}" && exit 1 # user preferred AUTO profile
          [[ "$IP" == "dhcp" ]] && exit 2 # dhcp profile
          exit 3 # static profile
        )
        case $? in
          1) preferred_profiles+=("$profile");;
          2) dhcp_profiles+=("$profile");;
          3) static_profiles+=("$profile");;
        esac
    done < <(list_profiles)
    if [[ ${#preferred_profiles[@]} > 1 ]]; then
        echo "AutoWired flag for '$1' set in more than one profile (${preferred_profiles[*]})"
    fi
    for profile in "${preferred_profiles[@]}" "${dhcp_profiles[@]}" "${static_profiles[@]}"; do
        if ForceConnect=yes "$SUBR_DIR/network" start "$profile"; then
            mkdir -p "$(dirname "$PROFILE_FILE")"
            printf "%s" "$profile" > "$PROFILE_FILE"
            exit 0
        fi
    done
  ;;
  down)
    if [[ -e "$PROFILE_FILE" ]]; then
        if ForceConnect=yes "$SUBR_DIR/network" stop "$(< "$PROFILE_FILE")"; then
            rm -f "$PROFILE_FILE"
            exit 0
        fi
    fi
  ;;
  *)
    echo "Wrong arguments" >&2
  ;;
esac

exit 1


# vim: ft=sh ts=4 et sw=4:

« Последнее редактирование: 03-03-2014 09:02 от sergeyan » Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines