假设我ifconfig
为所连接的网络运行命令。
如何编写一个 bash 脚本来使用此命令并查找后面的内容inet
,netmask
并broadcast
在终端中以列表形式打印这些 IP 地址而不显示命令ifconfig
。因此,当脚本运行时,它将仅输出所选网络的 3 个 IP 地址。
答案1
这里使用以下脚本获取与命令输出中的 、 和 行inet
相关netmask
的IP 地址。请注意,我使用网络接口作为示例broadcast
ifconfig
wlp3s0
要显示 inet 地址,只需在连接的接口上运行以下命令,即将其替换wlp3s0
为所连接的网络接口的名称:
1. 网络
ifconfig wlp3s0 | grep -o -e "inet\ addr:\([0-9]\{1,3\}.\)\{3\}.[0-9]\{1,3\}" | grep -o -e "\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}"
2. 网络掩码
ifconfig wlp3s0 | grep -o -e "Mask:\([0-9]\{1,3\}.\)\{3\}.[0-9]\{1,3\}" | grep -o -e "\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}"
3. 广播
ifconfig wlp3s0 | grep -o -e "Bcast:\([0-9]\{1,3\}.\)\{3\}.[0-9]\{1,3\}" | grep -o -e "\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}"
另外如果要输出接口的MAC地址,使用以下命令:
ifconfig wlp3s0 | grep -o -e "HWaddr \([0-9a-f]\{2\}:\)\{5\}[0-9a-f]\{2\}" | grep -o -e "\([0-9a-f]\{2\}:\)\{5\}[0-9a-f]\{2\}"