我正在尝试开发一种黑客程序,通过 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 -s
。ifconfig
打印活动接口,-a
您可以打印系统识别为网络接口的所有接口。
或者使用ip addr
。
答案3
我可能不直接知道答案,但我会给你一个网络命令列表,也许从那里你可以尝试将它与你需要做的事情联系起来。
要查看网络并输出单台计算机上活动网络设备的名称,您可以尝试以下命令:
ifconfig
此命令允许我们检测活动的网络设备。您还可以使用ifconfig -s命令用于较小的输出。您可以使用此命令配置特定接口
ip addr
这个命令可以让我们查看网络的网络信息。
tcpdump
此命令是一个网络嗅探器。它的作用是从网络接口捕获数据包并为您解释它们。
如果您收到权限被拒绝的消息,只需:**gksu yourcommand**
获取 root 权限并强制执行命令。
findsmb
您可以使用此命令列出有关响应 SMB 名称查询的机器的信息。