上傳檔案到「/」
This commit is contained in:
97
bandwidth_monitor.sh
Normal file
97
bandwidth_monitor.sh
Normal file
@@ -0,0 +1,97 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 找到主要網路介面(自動偵測)
|
||||
INTERFACE=$(ip route | grep default | awk '{print $5}' | head -1)
|
||||
|
||||
if [ -z "$INTERFACE" ]; then
|
||||
echo "找不到網路介面"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "監控網路介面: $INTERFACE"
|
||||
echo "按 Enter 鍵停止並顯示最終統計"
|
||||
echo "----------------------------------------"
|
||||
|
||||
# 取得初始值
|
||||
RX_FILE="/sys/class/net/$INTERFACE/statistics/rx_bytes"
|
||||
TX_FILE="/sys/class/net/$INTERFACE/statistics/tx_bytes"
|
||||
|
||||
START_RX=$(cat $RX_FILE)
|
||||
START_TX=$(cat $TX_FILE)
|
||||
START_TIME=$(date)
|
||||
|
||||
RX_PREV=$START_RX
|
||||
TX_PREV=$START_TX
|
||||
|
||||
# 背景監控循環
|
||||
{
|
||||
while true; do
|
||||
sleep 1
|
||||
|
||||
# 取得當前值
|
||||
RX_CURR=$(cat $RX_FILE)
|
||||
TX_CURR=$(cat $TX_FILE)
|
||||
|
||||
# 計算速度(每秒差值)
|
||||
RX_SPEED=$((RX_CURR - RX_PREV))
|
||||
TX_SPEED=$((TX_CURR - TX_PREV))
|
||||
|
||||
# 計算累積量
|
||||
RX_TOTAL=$((RX_CURR - START_RX))
|
||||
TX_TOTAL=$((TX_CURR - START_TX))
|
||||
TOTAL_CUMULATIVE=$((RX_TOTAL + TX_TOTAL))
|
||||
|
||||
# 轉換成人類可讀格式
|
||||
RX_SPEED_H=$(numfmt --to=iec --suffix=B/s $RX_SPEED)
|
||||
TX_SPEED_H=$(numfmt --to=iec --suffix=B/s $TX_SPEED)
|
||||
RX_TOTAL_H=$(numfmt --to=iec --suffix=B $RX_TOTAL)
|
||||
TX_TOTAL_H=$(numfmt --to=iec --suffix=B $TX_TOTAL)
|
||||
TOTAL_H=$(numfmt --to=iec --suffix=B $TOTAL_CUMULATIVE)
|
||||
|
||||
# 顯示即時資訊(使用 \r 覆蓋前一行)
|
||||
printf "\r速度 - 下載: %-10s 上傳: %-10s | 累積 - 下載: %-10s 上傳: %-10s 總計: %-10s" \
|
||||
"$RX_SPEED_H" "$TX_SPEED_H" "$RX_TOTAL_H" "$TX_TOTAL_H" "$TOTAL_H"
|
||||
|
||||
# 更新前一次的值
|
||||
RX_PREV=$RX_CURR
|
||||
TX_PREV=$TX_CURR
|
||||
done
|
||||
} &
|
||||
|
||||
# 記錄背景進程 PID
|
||||
MONITOR_PID=$!
|
||||
|
||||
# 等待用戶按 Enter
|
||||
read -r
|
||||
|
||||
# 停止背景監控
|
||||
kill $MONITOR_PID 2>/dev/null
|
||||
|
||||
# 取得最終數據
|
||||
END_RX=$(cat $RX_FILE)
|
||||
END_TX=$(cat $TX_FILE)
|
||||
END_TIME=$(date)
|
||||
|
||||
# 計算最終累積量
|
||||
FINAL_RX=$((END_RX - START_RX))
|
||||
FINAL_TX=$((END_TX - START_TX))
|
||||
FINAL_TOTAL=$((FINAL_RX + FINAL_TX))
|
||||
|
||||
# 轉換格式
|
||||
FINAL_RX_H=$(numfmt --to=iec --suffix=B $FINAL_RX)
|
||||
FINAL_TX_H=$(numfmt --to=iec --suffix=B $FINAL_TX)
|
||||
FINAL_TOTAL_H=$(numfmt --to=iec --suffix=B $FINAL_TOTAL)
|
||||
|
||||
# 顯示最終統計
|
||||
echo ""
|
||||
echo ""
|
||||
echo "============ 最終統計 ============"
|
||||
echo "監控時間:"
|
||||
echo " 開始: $START_TIME"
|
||||
echo " 結束: $END_TIME"
|
||||
echo ""
|
||||
echo "總累積頻寬使用量:"
|
||||
echo " 下載: $FINAL_RX_H"
|
||||
echo " 上傳: $FINAL_TX_H"
|
||||
echo " 總計: $FINAL_TOTAL_H"
|
||||
echo "================================="
|
Reference in New Issue
Block a user