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

Скрипт перезапуска интерфейса.

Добавлено: 2009-05-06 11:12:15
kos_fist
Добрый день!
У меня возник следующий трабл... :unknown: На сервере по непонятной причине залипает интерфейс который смотрит в локальную сеть. Сервер под управлением FreeBSD 5.4. После запуска команды ifconfig em0 down up все подымается. Вопрос: можно ли как то автоматизировать этот процесс? На сайте лисяры нашел следующий скрипт для похожей задачи но с vtun, пытался его переделать...помогите пожалуйста, замучался уже я с ним...
Воть что у меня получился за скрипт:

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

#!/bin/sh

# Скрипт перезапуска интерфейса em0, на случай падений

# переменные
ping="/sbin/ping"
grep="/usr/bin/grep"
wc="/usr/bin/wc"

if [ `${ping} -c 4 192.168.0.0 | ${grep} "Host is down" | ${wc} -l` -lt 1 ]
    then
    ifconfig em0 down up #> /dev/null 2>&1
    else
fi
exit

Буду очень благодарен за помощь! :"":

Re: Скрипт перезапуска интерфейса.

Добавлено: 2009-05-06 11:16:02
D_CPU350
Можно поинтересоваться?
как залипает?
есть ли какие-нибудь изменения в sysctl?

Re: Скрипт перезапуска интерфейса.

Добавлено: 2009-05-06 11:23:31
kos_fist
Та вообщем то он падает ни с того ни с сего. Просто в один момент локальная сеть перестает видеть шлюз (em0) не отвечает на пинги, так же как и он с своей стороны не видит сеть, такое ощущение что сетевушку отключили, но при выводе ifconfig состояние пишет active
В sysctl если честно даже незнаю, я его конфиг не трогал, как то не приходилось...

Re: Скрипт перезапуска интерфейса.

Добавлено: 2009-05-06 11:42:38
kos_fist
D_CPU350 писал(а):Можно поинтересоваться?
как залипает?
есть ли какие-нибудь изменения в sysctl?
Меня в принципе интересует сам скрипт, у меня есть подозрение что это падения сетвушки происходят на апаратном уровне.
Поэтому хочу написать скрипт для автоматизации процедуры перезапуска интерфейса...
Я так понимаю, что в скрипте ошибка в этой строке

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

if [ `${ping} -c 4 192.168.0.15 | ${grep} "Host is down" | ${wc} -l` -lt 1  ] 
а именно -lt 1 Не пойму как правильно задать параметр если Host is down больше 1, то выполнить ifconfig em0 down up

Re: Скрипт перезапуска интерфейса.

Добавлено: 2009-05-06 11:53:28
D_CPU350

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

#!/bin/sh

ping -c 4 -t 5 192.168.0.0  || ifconfig em0 down up

Re: Скрипт перезапуска интерфейса.

Добавлено: 2009-05-06 12:04:05
kos_fist
D_CPU350 писал(а):

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

#!/bin/sh

ping -c 4 -t 5 192.168.0.0  || ifconfig em0 down up
а как же условие? после чего он должен перезапускаться? :unknown:

Re: Скрипт перезапуска интерфейса.

Добавлено: 2009-05-06 12:10:49
D_CPU350
в конце работы команда ping выдает код завершения - 0 если все ок, не ноль, если есть ошибки
|| - логическое "или"

Передергивать интерфейс - неправильный подход.
Нужно все-таки определить аппаратная проблема или нет (заменить сетевуху)
У меня была аналогичная проблема, оказалось не в железе :smile:

Re: Скрипт перезапуска интерфейса.

Добавлено: 2009-05-06 12:15:37
kos_fist
D_CPU350 писал(а):в конце работы команда ping выдает код завершения - 0 если все ок, не ноль, если есть ошибки
|| - логическое "или"

Передергивать интерфейс - неправильный подход.
Нужно все-таки определить аппаратная проблема или нет (заменить сетевуху)
У меня была аналогичная проблема, оказалось не в железе :smile:
Ну заменить я ее пока и не могу, по причине лагов днк директора :-D
Поэтому и взялся за скрипт... А в чем у тебя была проблемма тогда?

Re: Скрипт перезапуска интерфейса.

Добавлено: 2009-05-06 12:23:53
D_CPU350
дооптимизировал через sysctl. К сожалению не смог выяснить какая конкретно опция убивала сеть, т.к. просто все снес оттуда и прописал только нужное.

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

security.bsd.see_other_uids=0
security.bsd.see_other_gids=0
security.bsd.hardlink_check_uid=1
security.bsd.hardlink_check_gid=1
#kern.ipc.somaxconn=1024
#kern.ipc.maxsockbuf=16777216
kern.coredump=0
#net.link.ether.inet.max_age=1200
#net.inet.icmp.icmplim=50
#net.inet.icmp.drop_redirect=1
#net.inet.icmp.log_redirect=1
#net.inet.icmp.bmcastecho=0
#net.inet.icmp.maskrepl=0
#net.inet.ip.redirect=0
#net.inet.ip.sourceroute=0
#net.inet.ip.accept_sourceroute=0
#net.inet.udp.blackhole=1
#net.inet.tcp.blackhole=2
#net.inet.tcp.nolocaltimewait=1
#net.inet.tcp.msl=7500
net.inet.tcp.delayed_ack=0
net.inet.tcp.drop_synfin=1
net.inet.tcp.rfc1323=1
#net.inet.tcp.sendspace=1048576
#net.inet.tcp.recvspace=1048576

security.bsd.hardlink_check_uid=1
security.bsd.hardlink_check_gid=0
одна из закоментированных опций убивала

Re: Скрипт перезапуска интерфейса.

Добавлено: 2009-05-06 12:32:04
kos_fist
Так дело в том что раньше такого небыло, и конфиг sysctl никто не трогал...Ладно, я только что прописал конфиг в крон, будем смотреть, спасибо огромное! :) Теперь хоть знаю если что куда копать :good:

Re: Скрипт перезапуска интерфейса.

Добавлено: 2009-05-06 12:33:41
D_CPU350
ну это у меня было, у Вас может быть что угодно;)))

Re: Скрипт перезапуска интерфейса.

Добавлено: 2012-02-02 19:45:41
5chme1
У меня такая же фигня. интерфейс падает ни с того ни с сего. FreeBSD 8.2
При этом стабильно работало несколько месяцев, конфиги никто не трогал. Уже и не знаю, что делать...

Re: Скрипт перезапуска интерфейса.

Добавлено: 2012-02-02 20:42:46
5chme1
только через некоторое время в консоли появляется такое сообщение:
named[767]: could not listen on UDP socket: permission denied
named[767]: creating IPv4 interface igb0 failed; interface ignored
И все, пинги с него не идут, хотя он сам пингуется 0_о

UPD: Нашел подлеца, прописавшего статический IP. Проблема решена