埠監控指令碼

regonly1發表於2009-03-25

對指定的埠列表分別進行監控
說明:
LSNPORTS引數指定要監聽的埠列表,以空格作為分割;
INTERVAL引數指定監控的時間間隔;
LOGPATH引數指定監控日誌存放路徑,如果該路徑不存在,則指令碼會自動新增。

日誌生成方式:按照埠,每個埠生成一個日誌檔案,各自存放。
每次狀態列表生成後都有一個簡單彙總,彙報此次監控所有的埠連線數。
日誌檔案格式:netstat[port]-yyyy-mm-dd.log
日誌檔案內容格式:
DATE:2008-06-23 12:29:01 >> *.8080 *.* 0 0 24576 0 LISTEN
DATE:2008-06-23 12:29:01 >> 218.108.243.67.8080 10.0.16.42.30467 1 0 24840 0 ESTABLISHED
DATE:2008-06-23 12:29:01 >> 218.108.243.67.8080 10.0.19.30.1272 17680 0 25840 0 FIN_WAIT_1
DATE:2008-06-23 12:29:01 >> 218.108.243.67.8080 10.0.31.36.1338 256288 0 24840 0 ESTABLISHED
DATE:2008-06-23 12:29:01 >> 218.108.243.67.8080 10.0.16.42.35565 65535 0 24840 0 ESTABLISHED
DATE:2008-06-23 12:29:01 >> 218.108.243.67.8080 10.0.16.42.31873 65535 0 24840 0 ESTABLISHED
DATE:2008-06-23 12:29:01 >> 218.108.243.67.8080 125.210.228.71.34502 11040 0 24840 0 TIME_WAIT
DATE:2008-06-23 12:29:01 >> 218.108.243.67.8080 10.0.16.42.34210 16560 0 24840 0 ESTABLISHED
DATE:2008-06-23 12:29:01 >> 218.108.243.67.8080 10.0.16.42.37854 16467 0 24840 0 ESTABLISHED
DATE:2008-06-23 12:29:01 >> 218.108.243.67.8080 10.0.16.42.37997 65535 0 24840 0 ESTABLISHED
DATE:2008-06-23 12:29:01 >> 218.108.243.67.8080 10.0.90.25.2298 65110 0 24840 0 ESTABLISHED
DATE:2008-06-23 12:29:01 >> 218.108.243.67.8080 10.0.31.36.1339 256680 0 24840 0 ESTABLISHED
DATE:2008-06-23 12:29:01 >> Total connections[8080]:  12

指令碼內容如下:
#!/bin/sh

LSNPORTS="8080 23234 23345 1521";
INTERVAL=30;
iter=0;
LOGPATH=$HOME/lyon/toplog/logs;

if [ -n $LOGPATH ]; then
 mkdir -p $LOGPATH;
fi;

while [ 1 ]; do
 for port in $LSNPORTS
 do
  CCTLST=`netstat -an | grep ".$port" | awk 'BEGIN{OFS="|";}{print $1,$2,$3,$4,$5,$6,$7;}'`;
  LOGDATE=`date +%Y-%m-%d`;
  LOGFILE="${LOGPATH}/netstat[${port}]-${LOGDATE}.log";
  LOGTIME=`date '+DATE:%Y-%m-%d %H:%M:%S'`;

  for ns in $CCTLST
  do
   NETLST=`echo $ns | awk -F"|" 'BEGIN{OFS=" ";}{print $1,$2,$3,$4,$5,$6,$7;}'`;

   iter=`expr $iter + 1`;
   loginfo=`echo "$LOGTIME" ">>" "$NETLST"`;
   echo "$loginfo" >> $LOGFILE;
#echo "$loginfo";
  done;
  echo "$LOGTIME >> Total connections[$port]: " $iter >> $LOGFILE;
#echo "Total connections[$port]: " $iter;
  iter=0;
  sleep $INTERVAL;
    done;
done;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12932950/viewspace-578360/,如需轉載,請註明出處,否則將追究法律責任。

相關文章