Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам > OpenWRT/LEDE

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 05.03.2019, 10:12   #1
avgsr
Junior Member
 
Регистрация: 05.03.2019
Сообщений: 2
Вес репутации: 0
avgsr is an unknown quantity at this point
По умолчанию Помогите написать скрипт

Не хватает фантазии написать скрипт для шел, помогите пожалуйста.
Вот что получилось, но хотелось бы оптимальнее:

Развернуть для просмотра

PHP код:
#!/bin/sh 
iw phy phy0 interface add fish0 type monitor 
ifconfig fish0 up 
while : 
do 
  
tcpdump -i fish0 --s 0 --c 200 type mgt subtype probe-req or type data subtype null or type mgt subtype assoc-req or type mgt subtype reassoc-req|grep -"SA:[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]"|sed -'/SA:da/d' -'s/SA://g'|sort ->/tmp/t
  
while read line
  
do 
    if ! 
grep -"$line/root/res then
      
echo $line >> /root/res
    fi 
    linenew
="$(grep "$line" /root/know) $(date +'%F %T')"
    
sed "s/$line.*/$line $linenew/" /root/res > /tmp/res
    cp 
/tmp/res /root/res
  done 
< /tmp/t
done 
[свернуть]
avgsr вне форума   Ответить с цитированием
Старый 07.03.2019, 10:59   #2
avgsr
Junior Member
 
Регистрация: 05.03.2019
Сообщений: 2
Вес репутации: 0
avgsr is an unknown quantity at this point
По умолчанию

немного переделал, стало на много лучше, но всё равно не нравится
разбил на два скрипта

fromdump.sh

PHP код:
#!/bin/sh 
#добавим интерфейс для мониторинга
iw phy phy0 interface add fish0 type monitor 
#включим интерфейс
ifconfig fish0 up 
#вечный цикл (tcpdump иногда падает)
while : 
do
#tcpdump -e печатать заголовок пакета (в т.ч. SA)
#        -l буферить построчно (лучше вывод на stdout)
#        -tttt дата время
#sed -n -e '/SA:da/d' -e 's/\(........\).*SA:\([a-f0-9:]*\).*/\2 \1/p'
#-n ничего не выводить (кроме p)
#-e '/SA:da/d' удалим с фейковых маков 
#-e 's/\(.\{19\}\).*SA:\([a-f0-9:]*\).*/\2 \1/p' заменить s/ шаблон1 (первыйе 19 символов (дата время)) .*SA: шаблон2 (мак адрес) .* /на  шаблон2+шаблон1 и показать
#awk '{system( "sh /root/tores.sh "$0)}' запустить скрипт tores с параметрами (мак, дата, время)
tcpdump -i fish0 ---tttt type mgt subtype probe-req or type data subtype null or type mgt subtype assoc-req or type mgt subtype reassoc-req|sed --'/SA:da/d' -'s/\(.\{19\}\).*SA:\([a-f0-9:]*\).*/\2 \1/p'|awk '{system( "sh /root/tores.sh "$0)}'
done 
[свернуть]

tores.sh

PHP код:
#!/bin/sh 

if ! grep -"$1" /www/mdt 
then
echo $>> /www/wh/res
fi 
sed 
"s/$1.*/$1 $2 $3" /www/mdt|sort > /tmp/mdt
cp 
/tmp/mdt /www/mdt 
[свернуть]


awk тормозит пока буфер не заполнится
и объеденить бы в всё в один скрипт
avgsr вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 19:05. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2021, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика