vim rx_tx.sh
#!/bin/bashtmp_file=/tmp/.rx_tx.tmptmp_log=/tmp/.rx_tx.log{while truedodevs=(`cat /proc/net/dev | sed -n '/:/p' | sed 's/:/ /g' | awk '{print $1}'`)RX_array_pre=(`cat /proc/net/dev | awk '/:/' | sed 's/:/ /g' | awk '{print $2}'`)TX_array_pre=(`cat /proc/net/dev | awk '/:/' | sed 's/:/ /g' | awk '{print $10}'`)sleep 1pid=`ps -ef|grep $0 |grep -v grep|awk 'NR==1{print $2}'`if [[ $$ -ne $pid || -e $tmp_file ]];thenrm -rf $tmp_filebreak;fiRX_array_next=(`cat /proc/net/dev | awk '/:/' | sed 's/:/ /g' | awk '{print $2}'`)TX_array_next=(`cat /proc/net/dev | awk '/:/' | sed 's/:/ /g' | awk '{print $10}'`)for i in `seq ${#RX_array_next[@]}`doRX_array[i-1]=$((${RX_array_next[i-1]}-${RX_array_pre[i-1]}))TX_array[i-1]=$((${TX_array_next[i-1]}-${TX_array_pre[i-1]}))if [[ ${RX_array[i-1]} -lt 1024 ]];thenRX_array[i-1]="${RX_array[i-1]}B/s"elif [[ ${RX_array[i-1]} -gt 1048576 ]];thenRX_array[i-1]=$(echo ${RX_array[i-1]} | awk '{print $1/1048576 "MB/s"}')elseRX_array[i-1]=$(echo ${RX_array[i-1]} | awk '{print $1/1024 "KB/s"}')fiif [[ ${TX_array[i-1]} -lt 1024 ]];thenTX_array[i-1]="${TX_array[i-1]}B/s"elif [[ ${TX_array[i-1]} -gt 1048576 ]];thenTX_array[i-1]=$(echo ${TX_array[i-1]} | awk '{print $1/1048576 "MB/s"}')elseTX_array[i-1]=$(echo ${TX_array[i-1]} | awk '{print $1/1024 "KB/s"}')fidoneclearecho -e "`date '+%Y-%m-%d %H:%M:%S'`\n" >> $tmp_logprintf "%-15s%-15s%-15s\n" "DEV" "RX(下行)" "TX(上行)" >> $tmp_logfor i in `seq ${#RX_array_next[@]}`doprintf "%-15s%-15s%-15s\n" ${devs[i-1]} ${RX_array[i-1]} ${TX_array[i-1]} >> $tmp_logdonecat $tmp_log> $tmp_logecho -n -e "\n(q for quit): "done} &while truedoread flagif [[ "$flag" = "q" ]];thentouch $tmp_filebreak;fidone
