在 bash 中检测网络设备的名称?

在 bash 中检测网络设备的名称?

我正在尝试开发一种黑客程序,通过 bash 输出计算机上活动网络设备的名称。我是为了工作而开发的。我该怎么做?我不想直接使用“wlan0”或“eth0”或任何通用名称,因为有些操作系统使用不同的名称(例如 pfSense)。

答案1

这取决于你所说的“活动”是什么意思——如果你只想查看系统上所有网络设备的名称,你可以查看 /sys/class/net 目录的内容,例如

$ ls /sys/class/net
eth0  lo  wlan0

要查看状态,您可以ip在任何link对象上使用该命令 - 您可以解析输出以获取您想要的特定字段,例如仅查看设备名称和状态

$ ip -o link show | awk '{print $2,$9}'
lo: UNKNOWN
eth0: DOWN
wlan0: UP

如果你正在运行现代桌面版的 Ubuntu(其接口由网络管理器服务管理),那么你应该能够使用以下命令获取类似的设备状态列表nmcli

$ nmcli dev status
DEVICE     TYPE              STATE
wlan0      802-11-wireless   connected
eth0       802-3-ethernet    unavailable

或者,以一种更容易在脚本中使用的方式将输出限制到特定字段

$ nmcli --terse --fields DEVICE,STATE dev status
wlan0:connected
eth0:unavailable

如果您正在使用网络管理器,您还可以通过 DBUS 访问设备和连接属性 - 例如Dbus 教程 - 网络管理器的乐趣

答案2

您可以使用ifconfig来检测活动的网络设备,对于较小的输出使用ifconfig -sifconfig打印活动接口,-a您可以打印系统识别为网络接口的所有接口。

或者使用ip addr

答案3

我可能不直接知道答案,但我会给你一个网络命令列表,也许从那里你可以尝试将它与你需要做的事情联系起来。

要查看网络并输出单台计算机上活动网络设备的名称,您可以尝试以下命令:

ifconfig

此命令允许我们检测活动的网络设备。您还可以使用ifconfig -s命令用于较小的输出。您可以使用此命令配置特定接口

ip addr

这个命令可以让我们查看网络的网络信息。

tcpdump

此命令是一个网络嗅探器。它的作用是从网络接口捕获数据包并为您解释它们。

如果您收到权限被拒绝的消息,只需:**gksu yourcommand**获取 root 权限并强制执行命令。

findsmb

您可以使用此命令列出有关响应 SMB 名称查询的机器的信息。

来源:http://www.gymforgeeks.com/topic/358445-/

相关内容