天天看點

linux ping監控腳本,Shell長ping腳本監控網絡狀态

linux環境使用ping指令+時間戳記錄到檔案裡面

生産環境中, 網絡是否穩定(網絡時延)是一個很重要的名額. 為了友善檢查網絡時延的大小, 我們可以通過ping指令實作長時間的網絡監控。

一、ping指令的使用

1、 常用參數

-i: 每次執行ping操作的間隔時間, 預設是1s;

-c: 執行ping操作的次數, 預設是一直執行, 除非被中斷;

-s:指定執行ping操作時發送的包的大小, 預設是56B, 添加封包頭之後, 最終發送的是64B.

2、 使用示例# 在終端 ping 某個位址, 執行10次

# ping 112.80.248.75 -c 10 | awk '{ print $0"\t" strftime("%H:%M:%S",systime()) } '

linux ping監控腳本,Shell長ping腳本監控網絡狀态

#背景運作記錄到檔案裡面,但終端不能斷開的,語句如下:

nohup ping 112.80.248.75 -c 10 | awk '{ print $0"\t" strftime("%H:%M:%S",systime()) } '>ping1.log &

2.1、日期時間在後面:# ping 112.80.248.75 | awk '{ print $0"\t" strftime("%Y-%m-%d %H:%M:%S",systime()); fflush()}' >> long_ping.txt

PING 112.80.248.75 (112.80.248.75) 56(84) bytes of data.       2020-04-03 16:59:44

64 bytes from 112.80.248.75: icmp_seq=1 ttl=55 time=3.66 ms     2020-04-03 16:59:44

64 bytes from 112.80.248.75: icmp_seq=2 ttl=55 time=4.90 ms     2020-04-03 16:59:45

64 bytes from 112.80.248.75: icmp_seq=3 ttl=55 time=4.02 ms     2020-04-03 16:59:46

2.2、日期時間在前面:# ping 112.80.248.75 | awk '{ print strftime("%Y.%m.%d %H:%M:%S",systime())"\t" $0; fflush() }' >> long_ping.txt

2020.04.03 17:00:36     PING 112.80.248.75 (112.80.248.75) 56(84) bytes of data.

2020.04.03 17:00:36     64 bytes from 112.80.248.75: icmp_seq=1 ttl=55 time=3.22 ms

2020.04.03 17:00:37     64 bytes from 112.80.248.75: icmp_seq=2 ttl=55 time=3.72 ms

2020.04.03 17:00:38     64 bytes from 112.80.248.75: icmp_seq=3 ttl=55 time=4.91 ms

2020.04.03 17:00:39     64 bytes from 112.80.248.75: icmp_seq=4 ttl=55 time=3.95 ms

注意:使用fflush(),不然檔案不會有資訊,因為awk也是有緩存的。

下面未加fflush(),執行指令生成檔案會等一會才會有資訊列印到檔案裡ping 112.80.248.75 | awk '{ print strftime("%Y.%m.%d %H:%M:%S",systime())"\t" $0 }'>> long_ping.txt &

二、通過腳本記錄時間戳

為了友善後期檢視, 也防止退出終端時指令被中斷, 我們可以通過背景運作指令(腳本)的方式進行操作.

腳本内容如下:# vi long_ping.sh

#!/bin/bash

ping 112.80.248.75 | awk '{ print $0"\t" strftime("%Y-%m-%d %H:%M:%S",systime()); fflush()}' >> long_ping.txt

注意: 隻有當腳本運作結束(或被kill掉), awk指令 才會将結果輸出到檔案中.

為防止腳本被中斷, 可以通過 nohup 令腳本在背景執行:nohup sh long_ping.sh &

要結束背景程序, 可通過下述方式查找并kill:# ps -ef |grep long

root 17341 17236  0 16:46 pts/3 00:00:00 sh long_ping.sh

root 17351 17236  0 16:47 pts/3 00:00:00 grep --color=auto long