一个关于 ssh 的 shell 问题

lar*_*rry 2 ssh shell

我发现一个 shell 命令可以向目标主机发送大量数据:

dd if=/dev/zero bs=4096 count=1048576 | ssh user@ip 'cat > /dev/null'
Run Code Online (Sandbox Code Playgroud)

我想我可以用它来测试网络带宽,但它无法显示进程状态。

Phi*_*ack 9

好吧,如果你把这整件事都包起来time

time sh -c "dd if=/dev/zero bs=4096 count=1048576 | ssh user@ip 'cat > /dev/null'"
Run Code Online (Sandbox Code Playgroud)

这将为您提供完成转移所需的时间。按时间划分传输的字节,这就是您的吞吐量。

对于进度表,您可以使用pv,从而无需使用 time(1):

dd if=/dev/zero bs=1024 count=10000 | pv --size 10240000 | ssh user@ip 'cat > /dev/null'
Run Code Online (Sandbox Code Playgroud)

这将为您提供一个不错的进度表,特别是如果您--size使用传输的总大小加载参数。