Shell‑скрипты, Ansible, deployment‑сценарии и другие подходы к автоматизации задач администрирования.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
densan
- ст. сержант
- Сообщения: 370
- Зарегистрирован: 2007-12-06 10:02:02
- Откуда: Penza
-
Контактная информация:
Непрочитанное сообщение
densan » 2012-07-02 20:01:54
Здравствуйте.
Пытаюсь реализовать пакетное добавление данных в визуализатор нетфлоу данных nfsen.
Код: Выделить всё
# Задаем константы и пути
nfsen="/usr/local/bin/nfsen"
group="Penza"
office="YP"
net="172.22.36.192/27"
k="'net $net'"
echo $k
$nfsen --add-profile $group/$office description=$office shadow=1
l="$nfsen --add-channel $group/$office/All filter=$k colour='#336600'"
echo $l
$nfsen --add-channel $group/$office/All filter=$k colour='#336600'
скрипт отрабатывает с ошибкой:
Код: Выделить всё
sh /usr/local/etc/nfsen.sh
'net 172.22.36.192/27'
# YP
name YP
group Penza
tcreate Mon Jul 2 20:48:43 2012
tstart Mon Jul 2 20:30:00 2012
tend Mon Jul 2 20:30:00 2012
updated Mon Jul 2 20:25:00 2012
expire 0 hours
size 0
maxsize 0
type continuous / shadow
locked 0
status new
version 130
/usr/local/bin/nfsen --add-channel Penza/YP/All filter='net 172.22.36.192/27' colour='#336600'
Unknown option: '172.22.36.192/27''
ERR Filter syntax error: 1
хотя вывод
Код: Выделить всё
echo $l
/usr/local/bin/nfsen --add-channel Penza/YP/All filter='net 172.22.36.192/27' colour='#336600'
говорит о том, что скрипт правильно подставил переменные и ручное выполнение
Код: Выделить всё
/usr/local/bin/nfsen --add-channel Penza/YP/All filter='net 172.22.36.192/27' colour='#336600'
отрабатывает правильно.
Подскажите где может быть ошибка?
densan
-
Хостинг HostFood.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/
-
kpp
- лейтенант
- Сообщения: 613
- Зарегистрирован: 2009-08-05 16:10:46
- Откуда: Украина Днепропетровск-Киев
-
Контактная информация:
Непрочитанное сообщение
kpp » 2012-07-02 21:01:12
Подозреваю дело в
Сделайте так
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.
kpp
-
densan
- ст. сержант
- Сообщения: 370
- Зарегистрирован: 2007-12-06 10:02:02
- Откуда: Penza
-
Контактная информация:
Непрочитанное сообщение
densan » 2012-07-02 22:11:19
заменил k="'net $net'" на k="\'net $net\'"
Код: Выделить всё
sh /usr/local/etc/nfsen.sh
\'net 172.22.36.192/27\'
# YP
name YP
group Penza
tcreate Mon Jul 2 23:08:21 2012
tstart Mon Jul 2 23:00:00 2012
tend Mon Jul 2 23:00:00 2012
updated Mon Jul 2 22:55:00 2012
expire 0 hours
size 0
maxsize 0
type continuous / shadow
locked 0
status new
version 130
/usr/local/bin/nfsen --add-channel Penza/YP/All filter=\'net 172.22.36.192/27\' colour='#336600'
Unknown option: '172.22.36.192/27\''
ERR Filter syntax error: 1
densan
-
kpp
- лейтенант
- Сообщения: 613
- Зарегистрирован: 2009-08-05 16:10:46
- Откуда: Украина Днепропетровск-Киев
-
Контактная информация:
Непрочитанное сообщение
kpp » 2012-07-02 22:40:54
А если в выражение:
Код: Выделить всё
$nfsen --add-channel $group/$office/All filter=$k colour='#336600'
вместо $k подставить
отработает нормально?
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.
kpp
-
rayder
- лейтенант
- Сообщения: 661
- Зарегистрирован: 2008-12-18 16:29:43
- Откуда: Ukraine/Kiev
-
Контактная информация:
Непрочитанное сообщение
rayder » 2012-07-03 0:30:58
Код: Выделить всё
l="$nfsen --add-channel $group/$office/All filter=$k colour='#336600'"
echo $l
если я правильно понял, то вы хотите выполнить команду $l...
если да, то попробуйте так:
иначе, то почему бы кавычки рисовать не в переменной, а непосредственно при выполнении команды?
ЗЫ: уже давно научился(на собственных граблях) все переменные брать в {}, т.е. не $param, а ${param} - в будущем избавит от многих проблем
Человеку свойственно ошибаться, но для нечеловеческих ляпов нужен компьютер.
rayder
-
densan
- ст. сержант
- Сообщения: 370
- Зарегистрирован: 2007-12-06 10:02:02
- Откуда: Penza
-
Контактная информация:
Непрочитанное сообщение
densan » 2012-07-03 6:59:48
если вместо $k в выражение
Код: Выделить всё
$nfsen --add-channel $group/$office/All filter=$k colour='#336600'
подставить
то все выполняется без ошибок.
Для эксперимента изменил фильтр с
на
Код: Выделить всё
#!/bin/sh
#
# Задаем константы и пути
nfsen="/usr/local/bin/nfsen"
group="Penza"
office="YP"
net="172.22.36.192 255.255.255.192"
k="'net $net'"
echo ${k}
${nfsen} --add-profile ${group}/${office} description=${office} shadow=1
l="${nfsen} --add-channel ${group}/${office}/All filter=${k} colour='#336600'"
echo ${l}
exec ${l};
$nfsen --add-channel $group/$office/All filter=${k} colour='#336600'
#$nfsen --commit-profile $group/$office
Результат выполнения
Код: Выделить всё
'net 172.22.36.192 255.255.255.192'
# YP
name YP
group Penza
tcreate Tue Jul 3 07:56:08 2012
tstart Tue Jul 3 07:45:00 2012
tend Tue Jul 3 07:45:00 2012
updated Tue Jul 3 07:40:00 2012
expire 0 hours
size 0
maxsize 0
type continuous / shadow
locked 0
status new
version 130
/usr/local/bin/nfsen --add-channel Penza/YP/All filter='net 172.22.36.192 255.255.255.192' colour='#336600'
Unknown option: '172.22.36.192'
ERR Filter syntax error: 1
возможно проблема в пробелах, т.к. ругается на выражение следующее после пробела в фильтре
densan
-
kpp
- лейтенант
- Сообщения: 613
- Зарегистрирован: 2009-08-05 16:10:46
- Откуда: Украина Днепропетровск-Киев
-
Контактная информация:
Непрочитанное сообщение
kpp » 2012-07-03 10:04:47
А если так:
Код: Выделить всё
eval $nfsen --add-channel $group/$office/All filter=${k} colour='#336600'
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.
kpp
-
rayder
- лейтенант
- Сообщения: 661
- Зарегистрирован: 2008-12-18 16:29:43
- Откуда: Ukraine/Kiev
-
Контактная информация:
Непрочитанное сообщение
rayder » 2012-07-03 12:36:44
kpp писал(а):А если так:
Код: Выделить всё
eval $nfsen --add-channel $group/$office/All filter=${k} colour='#336600'
бес попутал, хотел написать eval, а написал exec

Человеку свойственно ошибаться, но для нечеловеческих ляпов нужен компьютер.
rayder
-
densan
- ст. сержант
- Сообщения: 370
- Зарегистрирован: 2007-12-06 10:02:02
- Откуда: Penza
-
Контактная информация:
Непрочитанное сообщение
densan » 2012-07-03 16:27:14
Заработала конструкция с eval.
Рабочий скрипт
Код: Выделить всё
#!/bin/sh
# Задаем константы и пути
nfsen="/usr/local/bin/nfsen"
group="Penza"
office="YP"
net="172.22.36.192/27"
k="'net $net'"
${nfsen} --add-profile ${group}/${office} description=${office} shadow=1
eval $nfsen --add-channel $group/$office/All filter=${k} colour='#336600'
$nfsen --commit-profile $group/$office
Большое спасибо за помощь.
densan