使用 sed 进行 dhclient 的管道输出

使用 sed 进行 dhclient 的管道输出

目标

限制 的输出dhclient

代码

dhclient eth0|sed 's/answers//'

预期行为

RTNETLINK : Operation not permitted

得到

RTNETLINK answers: Operation not permitted

管道 ifconfig 有效

ifconfig eth| sed 's/eth//'->[cut the search]:flags=41...

环境

sed (GNU sed) 4.7 Packaged by Debian

答案1

dhclient命令需要以 root 身份运行。以普通用户身份运行该命令时,您会收到一条错误消息

$ dhclient enp1s0:
RTNETLINK answers: Operation not permitted

错误消息通常会打印到标准错误 (stderr),而管道 ( |) 将仅重定向标准输出 ( stdout)。这就是您的 sed 命令不起作用的原因:它实际上根本没有得到任何输入,您看到的是第一个命令的标准错误。

要重定向和解析标准错误,可以使用2>&1(重定向输出流 2、标准错误到输出流 1、标准输出):

$ dhclient enp1s0 2>&1 | sed 's/answers//'
RTNETLINK : Operation not permitted

有关这两个流及其重定向方法的详细信息,请参阅https://askubuntu.com/a/625230/85695

相关内容