一个shell的问题与SSH

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

dd if=/dev/zero bs=4096 count=1048576 | ssh user@ip 'cat > /dev/null' 

我想我可以用它来testingnetworking带宽,但是它不能显示进程状态。

那么如果你把这件事整理一下,

 time sh -c "dd if=/dev/zero bs=4096 count=1048576 | ssh user@ip 'cat > /dev/null'" 

这将给你的时间完成转移。 除以时间传输的字节,这就是你的吞吐量。

对于一个进度表,你可以使用光伏 ,这消除了使用时间的需要(1):

 dd if=/dev/zero bs=1024 count=10000 | pv --size 10240000 | ssh user@ip 'cat > /dev/null' 

这将给你一个很好的进度计,尤其是如果你加载传输的总大小的大小参数。

如果你想要做的是testingnetworking带宽,那么有更直接的方法。

尝试使用ttcp或其替代品: nuttcp

 [tla ~]$ nuttcp -S michael@challenger:~$ nuttcp -4 -r tla 41.5574 MB / 10.46 sec = 33.3336 Mbps 2 %TX 4 %RX michael@challenger:~$ nuttcp -4 -t tla 15.4347 MB / 10.13 sec = 12.7821 Mbps 1 %TX 2 %RX 0 retrans 3.30 msRTT 

发送SIGUSR1dd将导致它输出它的进度。 您可以计算后续调用之间的差异,以获得大致的费率。

如果你真的想testing连通性,你可以使用iperf 。

除此以外,

创build一个100MB的testing文件

 dd if=/dev/urandom of=./test.bin bs=1024000 count=100 

然后scp这个文件来testing上传性能

 scp test.bin xxxx:. 

或者从远端scp来testing你的下载性能

通常最好使用iperf来testing带宽,因为它没有encryption开销,但是您可以在dd和ssh之间插入pv以实时查看传输速度:

 dd if=/dev/random | pv | ssh somehost 'cat > /dev/null' 

另外,在FreeBSD上,您可以通过按Ctrl + T将SIGINFO发送到dd,之后会显示一些统计数据(包括速度)