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

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

Добавлено: 2009-06-29 9:07:27
CrazyPilot
Доброго времени суток. Накатал на основе имеющихся в системе свой скрипт, который конфигурит узлы 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
Но при загрузке системы скрипт не отрабатывает, то есть ноды не создаются :-(. В чем косяк, не подскажете?

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

Добавлено: 2009-06-29 10:45:02
hizel
с debug пускал? :-)

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

Добавлено: 2009-06-29 10:57:05
CrazyPilot
hizel писал(а):с debug пускал? :-)
Эээ, судя по гуглу

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

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

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

Добавлено: 2009-06-29 11:16:52
hizel
оно и при ручном /usr/local/etc/rc.d/script [start|stop] отрабатывает :-)

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

Добавлено: 2009-06-29 11:29:31
CrazyPilot
вот как. Спасибо. Ща буду мучать.

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

Добавлено: 2009-06-29 11:32:33
CrazyPilot
бггг, попробовал, толку только

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

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
И все, видать при загрузке системы нечто иное происходит. Подождём до вечера =)

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

Добавлено: 2009-06-29 11:51:29
paradox
может стоило бы сначала сделать uname -a

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

Добавлено: 2009-06-29 12:19:55
CrazyPilot
хм, 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

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

Добавлено: 2009-06-29 12:38:22
paradox
ну можно попробовать поменять
name="ng_netflow_em2"
на
name="ng_netflow"
и в rc.conf поправить
вдруг сработает

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

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

Добавлено: 2009-06-29 12:43:32
CrazyPilot
Не, менять названия смысла не вижу. По названию скрипта он же находит функцию, так что в скрипт правильный попадает. Мне кажеццо, может система на этапе загрузки не знает что такое просто "echo". Может полный путь надо прописывать...В любом случае, вечером буду экспериментировать.

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

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

Добавлено: 2009-06-29 12:49:17
paradox
ну поставь полный путь к эхо

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