我正在使用 subprocess
在 Linux 上运行带有 OpenSSH 的 SSH 隧道 python 模块。
我想知道从那个 SSH 隧道发送和接收了多少字节。
我怎样才能找到它?
最佳答案
ssh(1)
没有为此提供任何机制。操作系统没有为此提供机制。数据包嗅探,例如tcpdump(1)
是一个选项,但这可能需要 root 权限,并且仅在 ssh(1)
时才近似。与应用程序外部的远程对等方建立连接。 IPTables Accounting会给你类似的权衡,但可能会比 tcpdump(1)
更少的开销.
如果您不介意非常近似,则可以跟踪您发送到子进程和从子进程读取的所有数据。 ssh(1)
将在加密之前压缩数据,因此您可能会高估发送的数据量,但是 ssh(1)
在重新键入、 channel 控制、消息真实性等方面也会有一些开销,因此它甚至可能接近“平均”数据。
当然,如果沿途的路由器决定丢弃所有其他数据包,您的 TCP 堆栈将发送两倍的数据,甚至更多。
确实很近似。
https://stackoverflow.com/questions/5470598/