The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Перенаправление на вход bash скрипта, !*! Susanin_, 05-Ноя-06, 01:34  [смотреть все]
Добрый день.
Наверное простой вопрос, но никак не могу его решить.
Нужно направить на вход скрипта содержимое файла.
Скрипт, для урощения:

#cat /var/_echo
#!/bin/bash
echo [$1-$2-$3]
exit 0

Содержимое файла:

#cat /var/test.txt
1162629715 0 5
1162629715 0 5
1162629715 0 5
1162629715 0 5

Пробую запускать:
# /var/_echo < /bin/cat /var/test.txt
[/var/arpwatch/test.txt--]

Если так:
# /var/_echo < /var/test.txt
[--]

А само содержимое, построчно, так и не передаеться.
Как выполнить задачу ?

  • Перенаправление на вход bash скрипта, !*! allez, 08:04 , 05-Ноя-06 (1)
    • Перенаправление на вход bash скрипта, !*! Susanin_, 13:53 , 05-Ноя-06 (2)
      >P. S. А вы вообще хоть что-нибудь по предмету читали или только
      >пиво пили да лекции
      >прогуливали? ;-)
      >Сюда вот загляните: http://gazette.linux.ru.net/rus/articles/index-abs-guide.html

      За ссылку спасибо.
      По поводу лекций - так и не было у меня программирования (10 лекций паскаля не в счет...)

      Можно еще вопрос:
      В общем виде ситуация следующая. Есть arpwatch, сидящий на многих интерфейсах сервера ( в основном на вланах). Каждый экземпляр arpwatch выдает свою инфу, иногда они дублируеться. Я написал скрипт, который обрабатывает инфу от arpwatch и пишет все в один файл. Но есть проблема, как запустить arpwatch, перенаправив все с stdout на обработку моему скрипту.
      Я запускаю arpwatch с параметрами:

      # /usr/local/sbin/arpwatch -i eth0 -p -m 2 -f /var/arpwatch/arp0.dat
      # Format: timestamp,delta,action,hostname,ip,mac,oldmac,vendor
      # actions: 0=new activity,1=new station,2=reused old mac,3=changed mac,4=dec flipflop,5=bogon,6=ether broadcast,7=ether mismatch,8=ether too short,9=ether bad format,10=ether wrong type_ip,11=ether bad length,12=ether wrong op,13=ether wrong RARP,14=ether wrong type,
      1162722918,0,5,<UNKNOWN>,192.168.28.7,0:6:29:f1:13:57,0:6:29:f1:13:57,IBM
      1162722918,0,5,<UNKNOWN>,192.168.28.7,0:6:29:f1:13:57,0:6:29:f1:13:57,IBM
      1162722919,0,5,<UNKNOWN>,192.168.28.7,0:6:29:f1:13:57,0:6:29:f1:13:57,IBM
      1162722919,0,5,<UNKNOWN>,192.168.28.7,0:6:29:f1:13:57,0:6:29:f1:13:57,IBM
      1162722919,0,5,<UNKNOWN>,192.168.214.241,0:6:29:f1:13:57,0:6:29:f1:13:57,IBM
      1162722919,0,5,<UNKNOWN>,192.168.214.241,0:6:29:f1:13:57,0:6:29:f1:13:57,IBM
      1162722919,0,5,<UNKNOWN>,192.168.214.247,0:11:95:63:fe:d2,0:11:95:63:fe:d2,D-Link
      1162722919,0,1,<UNKNOWN>,172.18.7.24,0:b:5d:72:38:34,0:0:0:0:0:0,Fujitsu Limited
      1162722919,0,5,<UNKNOWN>,192.168.28.10,0:13:d4:80:29:a7,0:13:d4:80:29:a7,Asustek Computer
      1162722919,0,5,<UNKNOWN>,192.168.28.10,0:13:d4:80:29:a7,0:13:d4:80:29:a7,Asustek Computer
      ...
      Вот этот вывод мне и надо направить на обработку моему скрипту.
      Пробовал:
      #/var/arpwatch/arpwatch_compare < /usr/local/sbin/arpwatch -i eth0 -p -m 2 -f /var/arpwatch/arp0.dat
      Record not exist. Add it  [ -p - 2 - -f ]
      Т.е. он первый ключ оставляет для arpwatch (-i eth0) а следующий уже в скрипт переправляет. А нужно с этими параметрами запустить arpwatch и пока он будет работать, весь вывод направлять в скрипт.

      Пробовал:
      #/var/arpwatch/arpwatch_compare < `/usr/local/sbin/arpwatch -i eth0 -p -m 2 -f /var/arpwatch/arp0.dat`

      процесс работает, но никаких данных в скрипт не передает.
      Буду очень признателен, если подскажите какое-то решение :)


      • Перенаправление на вход bash скрипта, !*! allez, 20:38 , 05-Ноя-06 (3)
        • Перенаправление на вход bash скрипта, !*! Susanin_, 20:52 , 05-Ноя-06 (4)
          >Покажите, пожалуйста, текст скрипта. Для большей ясности.

          Не вопрос:
          -------------------------------------------
          # cat ./arpwatch_compare
          #!/bin/bash
          LOG="/var/arpwatch/arp.log"
          echo -----------$1 >> $LOG

          STRING=`echo $1 | sed 's/,/ /g'`
          STRING=`echo $STRING | sed 's/<//g'`
          STRING=`echo $STRING | sed 's/>//g'`
          set $STRING
          cur_date=`date \+\%Y_\%m_\%d_\%H_\%M`
          PID="/var/arpwatch/arp.pid"
          timestamp=$1
          delta=$2
          action=$3
          hostnam=$4
          ip=$5
          mac=$6
          oldmac=$7
          vendor=$8


          #Функция проверяет наличие файла arp.pid. Если такой есть - значит не отработал еще предыдущий вызов скрипта и нужно подождать, что бы не было дублированных записей
          func_check_pid () {
          if [ ! -f $PID ]       # Проверка существования файла.
          #echo   $1 $2 $3 $4 $5 $6 $7 $cur_date $8 $9
          then
              func_work
          else
              echo "wait 1 second..." >> $LOG
              sleep 1
              func_check_pid
          exit
          fi
          }

          # В общем виде Уникальным являеться составной ключ MAC+IP. По нему и делаеться выборка, #если такой записи нет - то добавляем.
          #В любом случае любой результат пишем в лог и на консоль.

          func_work () {
              echo "pid" > $PID
              file="/var/arpwatch/arp.txt"
              REC_EXIST=`cat $file | awk '{if ($5 == "'$ip'" && $6 == "'$mac'") {print $1} }'`
              if [ "$REC_EXIST" != "" ]
              then
                  echo  "Record exist" [ $action - $ip  - $mac ] >> $LOG
                  echo  "Record exist" [ $action - $ip  - $mac ]
              else
                  echo  "Record not exist. Add it "  [ $action - $ip - $mac ] >> $LOG
                  echo  "Record not exist. Add it "  [ $action - $ip - $mac ]
                  echo   $timestamp $delta $action $hostnam $ip $mac $oldmac $cur_date $vendor  >> $file
              fi
              echo -n ""
              # удаляем файл PID, что бы другой вызов скрипта отработал.
              rm $PID
              exit 0
          }

          func_check_pid
          --------------------------------------------------------

          Скрипт - черновик. Еще доделывать и оптимизировать. Но прежде хотелось запустить всю связку. В том числе и обработку входных параметров на правильность и целостность нужно добавить обязательно.

          Приму любые советы.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру