如何使用包含带引号的 grep 的 ssh -t 命令

How to use ssh -t command which includes grep with quotes

我正在尝试将 IP 地址中的第三个八位字节 grep 到远程机器上的 tap 设备。

ssh -t user@host "/sbin/ifconfig tap0 | grep "inet" | /usr/bin/awk -F'[: ]+' '{ print  }' | awk -F'[.]' '{print }'"

我的结果是:

inet addr:10.22.66.77  Bcast:10.22.66.255  Mask:255.255.255.0

当我 运行 远程机器上的命令显示 66

如何让它与 ssh -t 一起工作?

有时使用 perl 更简单:

ssh -t user@host "/sbin/ifconfig tap0" | perl -n -e 'if (/inet\saddr:\d+\.\d+\.(\d+)/) { print "\n"}'

it 运行s 本地机器上的正则表达式模式匹配 addr: 之后的第三个八位字节,然后通过 $1

打印

模式匹配在本地机器上 运行 以避免转义问题 "(在你的示例代码中,grep inet 中的 " 似乎终止了 ssh...)