Rolling display of ping
Hello,
I need to display the most recent 5 pings each second continuously, as in the following example: 1st second Ping 1 - 5 2nd second Ping 2 - 6 3rd second Ping 3 - 7 .... and so on I've written the following script to: 1) ping continuously to a specific address 2) format the output I believe I need to make use of the Hold Buffer functionality of "sed" to buffer the latest 5 ping samples (FIFO - push the oldest sample out when a new sample is pushed in), and the print out the buffer. However, I'm not sure how to do this. Any ideas? Thanks. #!/bin/sh ping -s 172.16.114.210 | sed ' /icmp_seq=0/ { s/ from /,/ s/: icmp.*time=/,/ s/PING.*data bytes// } /icmp_seq=0/ !{ s/ from /,/ s/: icmp.*time=/,/ s/PING.*data bytes// }' |
How's this?
Code:
#! /bin/bash |
Hello,
Thanks. Just tried it but it gave the following, and kept adding a new line until I press Ctrl C. ./ping_CASE_STBY.sh 1 2 3 4 5 2 3 4 5 3 4 5 4 5 5 I think "ping -c 1 localhost" is just to ping local host once. But this command doesn't quite work on my UNIX because no matter what number I specified, it only ping once. In addition, it only states it's alive without the latency info. bash-3.00$ ping -c 1 localhost localhost is alive bash-3.00$ ping -c 2 localhost localhost is alive bash-3.00$ Not quite sure what the rest of the lines are for. Can you explain the following: PING="${PING%%\ }" PINGS="${PINGS#* } $PING" |
Code:
PING="${PING%%\ }" Code:
PINGS="${PINGS#* } $PING" http://www.tldp.org/LDP/abs/html/str...ipulation.html |
BTW, this is the output from my ping command:
Code:
$ ping -c 1 localhost |
All times are GMT -5. The time now is 06:18 AM. |