FreeBSD и rc.d скрипты

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
CrazyPilot
ст. сержант
Сообщения: 321
Зарегистрирован: 2008-08-14 9:17:58
Откуда: Санкт-Петербург
Контактная информация:

FreeBSD и rc.d скрипты

Непрочитанное сообщение CrazyPilot » 2009-06-29 9:07:27

Доброго времени суток. Накатал на основе имеющихся в системе свой скрипт, который конфигурит узлы netgraph для экспорта netflow статистики. Скрипт следующего вида:

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

#!/bin/sh
. /etc/rc.subr

name="ng_netflow_em2"
rcvar=`set_rcvar`
start_cmd="ng_netflow_start"
stop_cmd="ng_netflow_stop"

load_rc_config $name
eval "${rcvar}=\${${rcvar}:-'NO'}"
ngctl="/usr/sbin/ngctl  "


ng_netflow_start() {
        echo "Setup ng_netflow on em2"
        # 1. Create netflow peer and connect lower of em2 to iface0 of netflow
        # 2. Give netflow at em2:lower name - netflow_em2_lower
        # 3. Create netflow peer and connect it's out0 to exsisting netflow out0
        # 4. Name it as netflow_em2_upper
        # 5. Connect iface0 of netflow_em2_upper to em2 upper
        # 6. Create ksocket node and connect export of netflow_em2_lower ot inet/dgram/udp
        # 7. Create ksocket node and connect export of netflow_em2_upper ot inet/dgram/udp
        # 8. Name ksocket nodes as inc and out _socket
        # 9. Configure host of ksockets

        #                     (netflow_em2_lower)
        #em2:lower ---> . <--- iface0:netflow0 ---- > inet/dgram/udp:7777 --> flanker
        #       (incoming traffic)      |
        #                               | out0
        #                               |
        #                               |
        #                               |
        #                               |
        #                               |
        #                               |
        #       (outgoing traffic)      | out0
        #em2:upper ---> . <--- iface0:netflow1 ---- > inet/dgram/udp:7778 --> flanker
        #                      (netflow_em2_upper)

        ${ngctl} -f- <<-SEQ
                mkpeer em2: netflow lower iface0
                name em2:lower netflow_em2_lower

                mkpeer netflow_em2_lower: netflow out0 out0
                name netflow_em2_lower:out0 netflow_em2_upper
                connect netflow_em2_upper: em2: iface0 upper

                mkpeer netflow_em2_lower: ksocket export inet/dgram/udp
                mkpeer netflow_em2_upper: ksocket export inet/dgram/udp

                name netflow_em2_lower:export inc_socket
                name netflow_em2_upper:export out_socket

                msg inc_socket: connect inet/10.10.1.61:7777
                msg out_socket: connect inet/10.10.1.61:7778
        SEQ
}

ng_netflow_stop() {
        echo "Shutting down netflow peers on em2..."
        ${ngctl} -f- <<-SEQ
                shutdown inc_socket:
                shutdown out_socket:
                shutdown netflow_em2_lower:
                shutdown netflow_em2_upper:
        SEQ
        echo "Compeleted"
}

run_rc_command "$1"
Прописал его в rc.conf

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

[root@gw ~]# /usr/local/etc/rc.d/ng_netflow_em2 rcvar
# ng_netflow_em2
ng_netflow_em2_enable=YES
Но при загрузке системы скрипт не отрабатывает, то есть ноды не создаются :-(. В чем косяк, не подскажете?

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
hizel
дядя поня
Сообщения: 9031
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: FreeBSD и rc.d скрипты

Непрочитанное сообщение hizel » 2009-06-29 10:45:02

с debug пускал? :-)
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

CrazyPilot
ст. сержант
Сообщения: 321
Зарегистрирован: 2008-08-14 9:17:58
Откуда: Санкт-Петербург
Контактная информация:

Re: FreeBSD и rc.d скрипты

Непрочитанное сообщение CrazyPilot » 2009-06-29 10:57:05

hizel писал(а):с debug пускал? :-)
Эээ, судя по гуглу

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

rc_debug="YES"
rc_info="YES"
в rc.conf и shutdown -r now, после чего парсить /var/log/messages/ на предмет косяков? Я на правильном пути? :) Хочу удостовериться просто, сервак - шлюз, так что перегружать только вечером получится :)

Аватара пользователя
hizel
дядя поня
Сообщения: 9031
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: FreeBSD и rc.d скрипты

Непрочитанное сообщение hizel » 2009-06-29 11:16:52

оно и при ручном /usr/local/etc/rc.d/script [start|stop] отрабатывает :-)
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

CrazyPilot
ст. сержант
Сообщения: 321
Зарегистрирован: 2008-08-14 9:17:58
Откуда: Санкт-Петербург
Контактная информация:

Re: FreeBSD и rc.d скрипты

Непрочитанное сообщение CrazyPilot » 2009-06-29 11:29:31

вот как. Спасибо. Ща буду мучать.

CrazyPilot
ст. сержант
Сообщения: 321
Зарегистрирован: 2008-08-14 9:17:58
Откуда: Санкт-Петербург
Контактная информация:

Re: FreeBSD и rc.d скрипты

Непрочитанное сообщение CrazyPilot » 2009-06-29 11:32:33

бггг, попробовал, толку только

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

Jun 29 12:30:54 gw ArtemK: /usr/local/etc/rc.d/ng_netflow_em2: DEBUG: checkyesno: ng_netflow_em2_enable is set to YES.
Jun 29 12:30:54 gw ArtemK: /usr/local/etc/rc.d/ng_netflow_em2: DEBUG: run_rc_command: doit: ng_netflow_stop
Jun 29 12:30:59 gw ArtemK: /usr/local/etc/rc.d/ng_netflow_em2: DEBUG: checkyesno: ng_netflow_em2_enable is set to YES.
Jun 29 12:30:59 gw ArtemK: /usr/local/etc/rc.d/ng_netflow_em2: DEBUG: run_rc_command: doit: ng_netflow_start
И все, видать при загрузке системы нечто иное происходит. Подождём до вечера =)

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: FreeBSD и rc.d скрипты

Непрочитанное сообщение paradox » 2009-06-29 11:51:29

может стоило бы сначала сделать uname -a

CrazyPilot
ст. сержант
Сообщения: 321
Зарегистрирован: 2008-08-14 9:17:58
Откуда: Санкт-Петербург
Контактная информация:

Re: FreeBSD и rc.d скрипты

Непрочитанное сообщение CrazyPilot » 2009-06-29 12:19:55

хм, sorry

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

root@gw /usr/local/etc/perl_scripts]# uname -a
FreeBSD gw.%domainname%.ru 7.1-RELEASE-p5 FreeBSD 7.1-RELEASE-p5 #0: Mon May  4 16:35:11 MSD 2009     ArtemK@gw.%domainname%.ru:/usr/obj/usr/src/sys/GWSPB-2009-05-04  i386

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: FreeBSD и rc.d скрипты

Непрочитанное сообщение paradox » 2009-06-29 12:38:22

ну можно попробовать поменять
name="ng_netflow_em2"
на
name="ng_netflow"
и в rc.conf поправить
вдруг сработает

хотя лучше конечно включать полный дебаг и смотреть что там происходит и как

CrazyPilot
ст. сержант
Сообщения: 321
Зарегистрирован: 2008-08-14 9:17:58
Откуда: Санкт-Петербург
Контактная информация:

Re: FreeBSD и rc.d скрипты

Непрочитанное сообщение CrazyPilot » 2009-06-29 12:43:32

Не, менять названия смысла не вижу. По названию скрипта он же находит функцию, так что в скрипт правильный попадает. Мне кажеццо, может система на этапе загрузки не знает что такое просто "echo". Может полный путь надо прописывать...В любом случае, вечером буду экспериментировать.

А полный дебаг, это как?

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: FreeBSD и rc.d скрипты

Непрочитанное сообщение paradox » 2009-06-29 12:49:17

ну поставь полный путь к эхо

дебаг уже ж писал
rc_debug="YES"
rc_info="YES"