我正在使用subprocess
python模块在linux上运行带有OpenSSH的SSH隧道。
我想知道从该SSH隧道发送和接收的字节数。
我怎样才能找到它?
答案 0 :(得分:2)
ssh(1)
没有为此提供任何机制。操作系统没有为此提供机制。数据包嗅探,例如tcpdump(1)
是一个选项,但这可能需要root权限,并且只有在应用程序的远程对等外部 ssh(1)
连接时才是近似值。 IPTables Accounting会给你类似的权衡,但可能比tcpdump(1)
的开销要小得多。
如果您不介意非常近似,您可以跟踪发送到子流程和从子流程读取的所有数据。 ssh(1)
会在加密数据之前对其进行压缩,因此您可能会过高估计发送的数据量,但ssh(1)
也会有一些重新键入,频道控制,消息真实性等开销,所以它甚至可能接近“平均”数据。
当然,如果一路上的路由器决定丢弃其他所有数据包,那么你的TCP堆栈将发送两倍的数据,可能更多。
非常近似。
答案 1 :(得分:1)
与Python完全无关。查看网络嗅探器功能,您可以在其中嗅探流量。
答案 2 :(得分:0)
您可以使用pv:
等方法测量原始ssh传输ssh user @ remote -t“cat / dev / urandom”| pv>的/ dev / null的 ssh user @ remote -t“pv> / dev / null”<的/ dev / urandom的
(您可以尝试使用/ dev / zero - 但如果使用ssh压缩,则会得到非常不真实的传输速率。)