在google的帮助下,测量多播stream带宽的脚本。
这里是tcpdump -tnn -i eth1 -f multicast | sort | uniq -c | awk '{print $3,"> "$5,$1*$NF/2*8/1024 " Kbps"}' | awk '$1 > 10' & sleep 2s && pkill -HUP -f tcpdump tcpdump -tnn -i eth1 -f multicast | sort | uniq -c | awk '{print $3,"> "$5,$1*$NF/2*8/1024 " Kbps"}' | awk '$1 > 10' & sleep 2s && pkill -HUP -f tcpdump
事实certificate,罚款,除了我需要打回来回到提示。 我知道这是&&问题,但不知道如何解决它。
我怎样才能把它放到shell脚本中。 也许添加$ var的秒数。
尝试使用timeout在持续时间后终止tcpdump:
(timeout -s HUP 2 tcpdump -tnn -i eth1 -f multicast || true) | sort | uniq -c | awk '{print $3,"> "$5,$1*$NF/2*8/1024 " Kbps"}' | awk '$1 > 10'
编写脚本:
#!/bin/bash if ! [[ "$1" =~ ^[0-9]+$ ]]; then echo "Usage: $0 <number of seconds>" exit 1 fi (timeout -s HUP $1 tcpdump -tnn -i eth1 -f multicast || true) | sort | uniq -c | awk '{print $3,"> "$5,$1*$NF/2*8/1024 " Kbps"}' | awk '$1 > 10'
你不需要按Enter键退出。 这只是一个美好的问题。 那是因为你的输出“覆盖”你的terminal(你仍然可以input任何命令并按回车 – 它将被执行)。
要“修复”这个布局问题,你可以尝试追加“; sleep 1; echo”到你的行,所以它看起来像:
tcpdump -tnn -i eth1 -f multicast | sort | uniq -c | awk '{print $3,"> "$5,$1*$NF/2*8/1024 " Kbps"}' | awk '$1 > 10' & sleep 2s && pkill -HUP -f tcpdump; sleep 1; echo
希望有所帮助。
这里是你的variablesbash脚本:
#!/bin/bash SLEEPTIME=5 tcpdump -tnn -i eth0 -f multicast | sort | uniq -c | awk -va=$SLEEPTIME '{print $3,"> "$5,$1*$NF/a*8/1024 " Kbps"}' | awk '$1 > 10' & sleep $SLEEPTIME && pkill -HUP -f tcpdump; sleep 1; echo