【问题标题】:Is there any way to split a character stream generated from /dev/urandom to different substreams?有没有办法将 /dev/urandom 生成的字符流拆分为不同的子流?
【发布时间】:2018-08-25 15:58:36
【问题描述】:

我需要获取由硬件设备生成的高速随机数流,并将其拆分为不同的子流。出于测试目的,我考虑将 /dev/urandom 作为数据源。有没有任何Linux工具呢?如果没有 - 请帮助使用 bash 脚本来执行此操作。 子流速度之和应加起来为初始流速度(或接近)。子流稍后通过使用文件描述符 3(或其他)在 netcat 和 /dev/tcp 之间创建套接字发送给最终用户。

【问题讨论】:

  • 请澄清两点,您需要一个数据流,并且希望将其拆分为子流,例如您收到了 30000 您希望将其拆分为 10000、15000、5000 ???,拆分也应该按某种顺序进行还是应该是随机的?

标签: linux bash random stream streaming


【解决方案1】:

请考虑使用以下代码:

od -An -t o2  /dev/urandom | awk '{ print $2 }' | awk '{$2= $1/4;$3= $1-$2;print $1" "$2" "$3}'

第一列将是主要流,您可以选择将其拆分为 n 个列或流,这里我尝试将其拆分为两列。也就是主流和两个子流,子流加起来就是主流

上述代码的示例输出是:

032621 8155.25 24465.8
163465 40866.2 122599
023403 5850.75 17552.2
100755 25188.8 75566.2
052763 13190.8 39572.2
015401 3850.25 11550.8
062161 15540.2 46620.8
100415 25103.8 75311.2
142550 35637.5 106912
141450 35362.5 106088
057473 14368.2 43104.8
023430 5857.5 17572.5
007112 1778 5334
036372 9093 27279

附注我不太擅长 awk,所以 awk 部分代码可以有很多改进。

【讨论】:

    猜你喜欢
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多