我关注这个帖子使用 netcat 检查速度,但在他的博客中当他这样做时ctrl-c
,他获得了有关发送接收字节的数据。
他在帖子中写道:
time yes|nc -v -v -n 192.168.0.8 2222 >/dev/null
than after ctrl-c het get:
sent 87478272, rcvd 0
real 0m9.993s
user 0m2.075s
sys 0m0.939s
当我这样做时ctrl-c
,我没有得到这些数据。
如何获取 netcat 发送/接收的数据?
答案1
其实netcat 的两种实现, 这最初由 *Hobbit* 实现(netcat-traditional
在 Debian/Ubuntu 中调用)和OpenBSD 实现(netcat-openbsd
在 Debian/Ubuntu 中称为)。在 Debian/Ubuntu 中,二进制文件分别称为nc.traditional
和nc.openbsd
(并且nc
是通过备选系统链接到其中一个的链接)。
您引用的博客文章使用的是nc.traditional
在退出时显示已发送/已接收字节的版本。您可能使用的是nc.openbsd
没有显示版本的版本。安装传统实现并明确调用它。
% time yes | nc.traditional -vvn 127.0.0.1 10000 > /dev/null
(UNKNOWN) [127.0.0.1] 10000 (webmin) open
^C sent 99422208, rcvd 0
yes 1,06s user 0,09s system 38% cpu 3,003 total
或者,如果您更喜欢使用,nc.openbsd
您可以将服务器端的 netcat 输出通过管道传输到wc -c
并检查输出,如下所示:
% nc -l -n -p 10000 | wc --bytes
99422208
答案2
您可以使用管道查看器 (pv) 实用程序观察流的视觉进度。可以对其进行修改以显示所选单位,并且适用于大多数发行版。
例子:
cat largefile | pv | netcat 192.168.10.1000 1234