RU/2: Форум. Общение пользователей и разработчиков OS/2 (eCS). : Rexx и Netstat


Список сообщений | Написать новое | Ответить на сообщение | Домой Поиск:
Предыдущее сообщение | Следующее сообщение
From : Alexey Bezditko
To : dgv
Subj : Rexx и Netstat

> > > > Добрый день!
> > > > Крутится у меня маленький rexx-скрипт, который использует "netstat -t|rxqueue". Сейчас потребовалось уменьшить интервал опроса, но такая комбинация слишком ресурсоемкая. Подскажите, нет ли такой длл-ки, с помощью которой, можно добиться того-же.. Меня итересует(пока) только количество отправленных и принятых байт по TCP/IP ..
> > >
> > > Зукин IPSTAT ?
> > >
> > так он еще требует установки SFF. Или я чего-то не понял....
> Или требует запускать специального демона ipstatd - который по словам самого
> Зуки сильно грузит машину...
Машина машине рознь. Достаточно попробовать. Для инетного сервера с процессором от целерона 1г и выше - не думаю, что это возможно обнаружить...

имхо, чтоит попробовать ipstat|rxqueue.
Пример (от фонаря):

/***********************************************************************
* Программа вызывает аварийку при нулевом траффике на указанном *
* интерфейсе в течение указанного периода времени. *
* Предполагается, что демон ipstat предварительно стартован с режимом *
* pipe. *
***********************************************************************/

Call rxfuncadd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs'
Call SysLoadFuncs /* activate rexxutil pack */

Parse arg interface abend time
If interface='' then interface='lan0'
If time='' then time=1
If abend='' then abend=sayer
If right(time,1)='S' then time=left(time,length(time)-1)
If right(time,1)='M' then time=left(time,length(time)-1)*60
If right(time,1)='H' then time=left(time,length(time)-1)*60*60
If right(time,1)='D' then time=left(time,length(time)-1)*60*60*24

Do forever
call SysSleep time
Address cmd '@ipstat.exe stat' interface '|rxqueue'
If queued()=0 then interpret 'call' abend ',"no traffic on" interface time "sec."'
s=0
p=0
do queued()
Parse pull line
Parse var line YYYYMMDD HHMMSS YYYYMMDD HHMMSS iface src_ip dst_ip protocol src_port dst_port bytes packets
if packets='' then say line
else do
s=s+bytes
p=p+packets
end
end
SAy date('e') time()':' s 'bytes' p 'packets.'
end


Fri 24 Mar 2006 20:28 Mozilla/5.0 (Windows; U; Win98; en-US; rv:1.4) Gecko/2003062




Programmed by Dmitri Maximovich, Dmitry I. Platonoff, Eugen Kuleshov.
25.09.99 (c) 1999, RU/2. All rights reserved.
Rewritten by Dmitry Ban. All rights ignored.