LINUX.ORG.RU

подскажите по скрипту


0

0

bsd#cat /root/netflow
#!/bin/sh
#
# $Id$
#
ext_if=fxp0
int_if0=em0
case "$1" in
start)
/sbin/kldload ng_netflow
/sbin/kldload ng_ksocket
/sbin/kldload ng_ether
/usr/sbin/ngctl -f- <<-SEQ
mkpeer ${ext_if}: tee lower right
name ${ext_if}:lower ext_tee
connect ${ext_if}: ext_tee: upper left

mkpeer ${int_if0}: tee lower right
name ${int_if0}:lower int_tee0
connect ${int_if0}: int_tee0: upper left


mkpeer ext_tee: netflow right2left iface0
name ext_tee:right2left netflow

connect ext_tee: netflow: left2right iface1
connect int_tee0: netflow: left2right iface2
connect int_tee0: netflow: right2left iface3


mkpeer netflow: ksocket export inet/dgram/udp
msg netflow:export connect inet/127.0.0.1:4567

SEQ

;;
stop)
/usr/sbin/ngctl shutdown netflow:
/usr/sbin/ngctl shutdown ext_tee:
/usr/sbin/ngctl shutdown int_tee0:
/usr/sbin/ngctl shutdown ${int_if0}:
/usr/sbin/ngctl shutdown ${int_if1}:
;;
*)
echo "Usage: `basename $0` {start|stop}" >&2
;;
esac

exit 0
при запуске выдает ошибку, но такой строки не существует.
bsd#/root/netflow start
/root/netflow: 50: Syntax error: end of file unexpected (expecting ";;")

anonymous

Ответ на: комментарий от quasi

покажи код (нормально отформатированный, а не ту порнографию что ты вверху наложил). И скопипасть вывод

dilmah ★★★★★
()
Ответ на: комментарий от cvv

#!/bin/sh
#
# $Id$
#
ext_if=fxp0
int_if0=em0
case "$1" in
start)
       /sbin/kldload ng_netflow
       /sbin/kldload ng_ksocket
       /sbin/kldload ng_ether
       /usr/sbin/ngctl -f- <<-"SEQ" # <<"-SEQ" - ак тоже не хотит
               mkpeer ${ext_if}: tee lower right
               name ${ext_if}:lower ext_tee
               connect ${ext_if}: ext_tee: upper left

               mkpeer ${int_if0}: tee lower right
               name ${int_if0}:lower int_tee0
               connect ${int_if0}: int_tee0: upper left

               mkpeer ext_tee: netflow right2left iface0
               name ext_tee:right2left netflow

               connect ext_tee: netflow: left2right iface1
               connect int_tee0: netflow: left2right iface2
               connect int_tee0: netflow: right2left iface3

               mkpeer netflow: ksocket export inet/dgram/udp
               msg netflow:export connect inet/127.0.0.1:20001

     <<-"SEQ"

      ;;
stop)
       /usr/sbin/ngctl shutdown netflow:
       /usr/sbin/ngctl shutdown ext_tee:
       /usr/sbin/ngctl shutdown int_tee0:
       /usr/sbin/ngctl shutdown ${int_if0}:
     ;;
*)
       echo "Usage: `basename $0` {start|stop}" >&2
      ;;
esac

exit 0
*******************************************************************
/root/netflow: 47: Syntax error: end of file unexpected (expecting ";;")

quasi
()
Ответ на: комментарий от quasi

>      <<-"SEQ"

почитай man про here-document.  А то ощущение что ты пытаешься сделать магическое заклинание..


должно быть так:

      /usr/sbin/ngctl -f- <<-SEQ
               .......blah - blah - blah
               SEQ

Но!  перед blah-blah и SEQ должны стоять табы (не пробелы).  Потому что минус перед SEQ стриппает табы, а не пробелы.

dilmah ★★★★★
()
Ответ на: комментарий от quasi

Еще непонятно почему ты ставишь SEQ в кавычки. Если ты ставишь его в кавычки то шелл не будет делать экспансию документа -- то есть не будет первращать ${ext_if} в значение. Но по моему твои намерения -- как раз сделать такое превращение, нет?

dilmah ★★★★★
()
Ответ на: комментарий от anonymous

>А где можно прочитать что такое SEQ и как оно работает?

SEQ тут не причем, точнее там может быть любое слово, уже сказали, читай man sh, там должен быть раздел Here document.

mky ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.