使用 PowerShell 从 com 端口获取 Linux 设备 IP 地址

Get Linux device IP address from com port using PowerShell

我目前正在设置一个基于 ARM 的测试板 运行ning Linux,我需要从 Windows 机器访问它。该测试板使用 USB 转串口电缆通过 com 端口连接。我正在使用 PowerShell 来执行 运行 命令并控制测试板。 我卡在需要查询测试板以找出其 IP 地址并将其存储在我的 Windows 主机上的变量中的阶段。

这是我用来显示 IP 地址的内容:

$port.WriteLine("ifconfig | grep -A 1 'gphy' | tail -1 | cut -d ':' -f 2 | cut -d ' ' -f 1")

当我从控制台读取输出时,我得到 ifconfig 命令以及 IP 地址到我的变量中:

$ipAddr = $port.ReadExisting()
$ipAddr

输出类似于:

ifconfig | grep -A 1 'gphy' | tail -1 | cut -d ':' -f 2 | cut -d ' ' -f 1
123.33.33.150
#

我无法仅获取字符串形式的 IP 地址。我的方法是正确的还是我在这里做错了什么?查询 IP 地址的最佳方式是什么?

只需使用子字符串或正则表达式来提取您想要的值。

$ipaddr = @"
ifconfig | grep -A 1 'gphy' | tail -1 | cut -d ':' -f 2 | cut -d ' ' -f 1
123.33.33.150
"@
$regex = '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}'
(($ipaddr | Select-String -Pattern $regex).Matches).Value

结果

123.33.33.150

在 ARM Linux 中,可以关闭连接到 Windows 的端口的回显。
例如,如果连接端口是 /dev/ttyS0,请在启动脚本中添加以下行。

stty -F /dev/ttyS0 -echo

但是,除非您更改设置,否则所有写入的数据都不会被回显用于其他用途。