我通过 SSH 连接到服务器,我想知道它的上传和下载速度。最好我还想看看正在下载/上传的内容以及该过程的速度。关于我应该搜索什么,有什么建议或提示吗?
答案1
为了获得更具体的流量细分,我使用 tcpdump 并将转储传递给 wireshark。然后使用统计菜单。但对于 ssh,很难看到发生了什么,因为它已经加密了。你只是想知道你的传输速度吗?rsync --progress -av srouce/ dest/
会这样做。
或者你可能想要:适用于 Linux 的基于 IP /进程的带宽使用情况统计工具?
如果您不想安装任何东西,您可以cat /proc/net/dev
在一个间隔内(可能在睡眠循环中),然后只取两次轮询之间发送和接收字节的差值。
对于程序来说,我喜欢apt-get install bmon
。bmon 是一个很好的小型终端 curses 程序。
答案2
答案3
或者,如果您没有 root 权限,数据将存储在 /proc/net/dev 中。有点被黑了python 脚本几年前我写过很多文章来说明如何在没有 pcap/root 的情况下完成此操作。
答案4
我不喜欢这些答案。要么需要第三方程序,要么信息量太大。
实际上,您可以在以下路径中找到所需的所有网络信息。将 $int_name 替换为您的接口名称
/sys/class/net/$int_name/statistics
例子:
- 每秒接收字节数 =
$(cat /sys/class/net/$int_name/statistics/rx_bytes)
- 每秒发送位数 =
$(expr $(cat /sys/class/net/$int_name/statistics/tx_bytes) \*8)
- 发送 pps =
$(cat /sys/class/net/$1/statistics/tx_packets)
您可以使用我下面创建的脚本来显示给定接口的所有 tx、rx 和总数。我称之为ninfo
#!/bin/bash
output(){
echo "==== $1 ===="
echo "rx_bits $(expr $(cat /sys/class/net/$1/statistics/rx_bytes) \* 8)"
echo "rx_bytes $(cat /sys/class/net/$1/statistics/rx_bytes)"
echo "tx_bits $(expr $(cat /sys/class/net/$1/statistics/tx_bytes) \* 8)"
echo "tx_bytes $(cat /sys/class/net/$1/statistics/tx_bytes)"
echo "rx_packets $(cat /sys/class/net/$1/statistics/rx_packets)"
echo "tx_packets $(cat /sys/class/net/$1/statistics/tx_packets)"
echo "total_bits $(expr $(expr $(cat /sys/class/net/$1/statistics/tx_bytes) \* 8) + $(expr $(cat /sys/class/net/$1/statistics/rx_bytes) \* 8))"
echo "total_bytes $(expr $(cat /sys/class/net/$1/statistics/tx_bytes) + $(cat /sys/class/net/$1/statistics/rx_bytes))"
echo "total_packets $(expr $(cat /sys/class/net/$1/statistics/tx_packets) + $(cat /sys/class/net/$1/statistics/rx_packets))"
}
if [ -z $1 ]; then
echo "[!] ERROR: please provide an interfaces name"
exit 1
fi
cints=$(ip -br a | awk '{print$1}' | sed 's/@.*//g')
found=0
for i in $cints; do
if [ "$i" == "$1" ]; then
found=1
else
:
fi
done
if [ $found -eq 1 ]; then
output $1
else
echo "[!] ERROR: '$1' is not an interface on this system. Must use one of the following:"
echo "$cints"
exit 1
fi
使用运行ninfo $int_name
。如果您不知道名称,脚本将列出系统上的接口。
现在我说我不喜欢这个的第三方程序,但看看mmwatch
它是一个像watch
但将不同的整数转换为费率的实用程序:
https://github.com/cloudflare/cloudflare-blog/blob/master/2017-06-29-ssdp/mmwatch
下载并保存到你的路径中。然后你可以运行 mmwatch + 我的脚本
mmwatch "./ninfo $int_name"
现在您可以查看费率。