запустил без параметров, на момент запуска были интерфейсы lo0, eth0, ppp0 и wlan0, в конфиге все закомментировано окромя двух строчек request и require, а он мне взял и всю сеть обвалил. теперь достучаться до компьютера не могу, ни пингами, ни по ssh.
потом, как доберусь до компьютера физически - проблему решу, но если честно я не ожидал, что dhclient с дефолтным конфингом и отсутствием каких-либо настроек вообще способен сломать всю сеть за просто так. если у кого-нибудь есть догадки, в чем может быть проблема - расскажите...
ощщем, чтобы избежать впредь подобных случаев, когда вы случайно iptables -A INPUT -j DROP или еще чего, то при отсутствии сети - система должна ее либо попытаться восстановить, либо радикально ребутнуться.
в связи сетим предлагаю общим разумом наваять скриптик, какие действия рекомендуется совершать.
у меня получилось так:
#!/bin/bash
UPLINK_IS_DOWN="0"
UPLINK_eth0="FALSE"
UPLINK_ppp0="FALSE"
UPLINK_HTTP="FALSE"
UPLINK_ICMP="FALSE"
inet() {
  if wget -O - google.com >/dev/null 2>&1; then
    UPLINK_HTTP="TRUE"
    return 1
  fi
  if ping -w 10 8.8.8.8 >/dev/null 2>&1; then
    UPLINK_ICMP="TRUE"
    return 1
  fi
  return 0
}
main() {
  if pidof -x "uplink.sh" >/dev/null 2>&1; then
    return 0
  fi
  while inet; do
    case "$UPLINK_IS_DOWN" in
      "0"|"2")
        /etc/init.d/network restart
        ;;
      "8")
        /sbin/reboot
        ;;
    esac
    (( UPLINK_IS_DOWN++ ))
  done
}
main "$@"скрипт должен выполняться по крону, каждую минуту (защита от повторного запуска есть, только назовите правильно uplink.sh). пробует wget'ом скачать страничку, если возникла какая-то проблема например с DNS и оно не определяется, то пробует пинговать IP. если и тут неудача, то перезапускает сеть. ждет еще один раз, и пробует перезапустить сеть снова. на восьмой раз выполняется перезагрузка.
ТУДУ: добавить варианты для определения доступа к сети, например проверять $? код выполнения ip link show eth0 - есть ли такой интерфейс вообще, а может сеть просто не запущена и ее надо запустить. то есть, переменные нам будут подсказывать, на каком этапе случается облом с сетью и в зависимости от этого уже скрипт попытается сделать что-то...
ну и плюс, номер попытки, при которой сеть все еще отсутстует нам тоже поможет, так например перезагрузка системы только уже как крайний случай.
вот. чтобы вы добавили в скрипт? и какие ваши идеи чекать доступ к интернету и чинить его, если отвалится?
ой, только не говорите что за вас это делает роутер. вот когда вам даже роутер не потребуется перезагружать - а он это будет делать сам, чего я пытаюсь добиться от скрипта, а в идеале - чтобы пробовал чинить сеть сам, вот тогда и можно будет спокойно закинуть ПК в кладовку и забыть про него.
алсо не забываем, что провайдер тоже может проводить технические работы, вам лень настраивать dhcp, а ip указан вручную, и всякие pppd вам тоже лень разбираться-настраивать для восстановления сети. тогда как гараздо проще и радикальнее всю сеть перезапустить: но для этого нужно корректно определить проблему, по которой сеть недоступна.
Перемещено stave из talks










