当 X 未知时通过 wlanX 执行 ping 操作

当 X 未知时通过 wlanX 执行 ping 操作

我一直在运行一个 bash 脚本,它更新主机表并测试与特定主机的连接。它在许多机器上成功运行。在此过程中,它使用以下命令检查与给定主机的通信

ping -I wlan0 <host>

ping -I eth0 <host>

这工作得很好,直到我尝试在一台(唯一的)无线设备是 udev 恶作剧的受害者的机器上使用它(与此类似),有时使用 wlan0,有时使用 wlan1。

有没有一种可靠的方法可以编写我的 bash 脚本来与任意 wlanX 设备进行 ping 操作,而无需编写代码来识别机器在某一天更喜欢使用哪一个设备?

答案1

您可以识别使用此命令使用的接口(以 root 身份运行):

iwconfig 2>/dev/null | grep -o "^\w*"

输出将是,例如:

wlan0

您必须将答案保存在脚本的变量中

答案2

这两个命令中的任何一个都会列出您的非环回系统接口,因此您可以迭代它们:

ip link | awk '$1+0>1 {print substr($2,1,length($2)-1)}'
netstat -i | awk 'NR>2 && $1 != "lo" {print $1}'

或者,您可以调整awk条件以仅打印以以下内容开头的行wlan

ip link | awk '$1+0 && $2 ~ /^wlan/ {print substr($2,1,length($2)-1)}'
netstat -i | awk 'NR>2 && $1 ~ /^wlan/ {print $1}'

相关内容