linux dd的返回值输出到文件,linux – 将dd数据从输出通过netcat分离到解...

本文介绍了如何在Linux中利用dd命令生成数据,并通过netcat进行网络传输,同时确保dd的返回值(包括copied信息)能够正确输出到grep进行处理。通过重定向标准输入、输出和错误流,可以实现对dd和netcat操作的控制,从而在传输过程中监控数据状态。
摘要由CSDN通过智能技术生成

dd if=/dev/zero bs=1024K count=1 | nc -q 0 | grep copied

dd状态输出无法进入grep. grep正在读取nc的输出,而不是dd.如果dd在其stdout上写了那个输出,它会转到nc,而不是grep.

值得庆幸的是,dd不会将该状态消息写入其stdout(否则它将被发送到< IP_ADDR>我们不想要),但它会将其写入分离的流:stderr(因为它是诊断消息,不是它的正常输出).

要让dd的stderr连接到一个转到grep的管道(和nc的stdout stderr不变),你可以这样做:

{ {

dd if=/dev/zero bs=1M count=1 2>&3 3>&- |

nc -q 0 3>&-

} 3>&1 >&4 4>&- | grep copied 4>&-; } 4>&1

假设shell的stdin / stdout / stderr转到I,O,E(如果从终端运行,则所有将在读写模式下打开tty设备),在上面我们将:

cmd \ fd | stdin stdout stderr 3 4

---------+------------------------------------

dd | I pipe1 pipe2 closed closed

nc | pipe1 O E closed closed

grep | pipe2 O E closed closed

或者让dd的stderr和nc的stdout stderr转到grep(但是dd的stdout仍然转到nc):

{ </

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值