首页 > 系统相关 >shell 获取本地主机指定网络接口的ip

shell 获取本地主机指定网络接口的ip

时间:2023-01-21 19:01:22浏览次数:33  
标签:index 00 shell ip lft ff device 网络接口

源码:

get_local_ips.sh

#!/bin/bash

get_ip_from_device_index()
{
index=$1
sed_cmd="sed -ne '/^$((index)):/,/^$((index+1)):/p'"
ip a|eval $sed_cmd|grep inet|awk '{ip=substr($2,1,index($2,"/")-1);print ip}'
}

get_index_from_device_name()
{
name=$1
sed_cmd="ip a|sed -ne '/^[0-9]:[ ]$name:/p'|cut -d: -f1"
eval $sed_cmd
}

usage()
{
cat<<-EOF
echo usage: $0 <--name NAME|--index INDEX>
--name: network device name(eg. wlan0,eth0 etc.).
--index: network device index(could get it from command 'ip address').
EOF
}

main()
{
case $1 in
--name)
device_name=$2
device_index=`get_index_from_device_name $device_name`
get_ip_from_device_index $device_index
;;
--index)
device_index=$2
get_ip_from_device_index $device_index
;;
*)
usage
;;
esac
}

main $@

注意:此脚本基于ip address命令的执行结果

使用举例:

比如,执行ip a命令后的结果如下:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp0s25: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
link/ether 3c:97:0e:2d:bd:41 brd ff:ff:ff:ff:ff:ff
3: wlp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether e0:06:e6:cc:ae:b3 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.112/24 brd 192.168.1.255 scope global dynamic noprefixroute wlp3s0
valid_lft 70129sec preferred_lft 70129sec
inet6 fe80::c8fa:8f6b:cdf8:f34b/64 scope link noprefixroute
valid_lft forever preferred_lft forever
4: virbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 52:54:00:1b:42:84 brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
6: vnet1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master virbr0 state UNKNOWN group default qlen 1000
link/ether fe:54:00:59:58:85 brd ff:ff:ff:ff:ff:ff
inet6 fe80::fc54:ff:fe59:5885/64 scope link
valid_lft forever preferred_lft forever

这些以(数字:)开头的行中,数字称作索引,数字后面即为接口名称

通过索引获取接口ip

比如:

./get-local-ips.sh --index 3

执行结果:

192.168.1.112
fe80::c8fa:8f6b:cdf8:f34b

通过名称获取接口ip

比如:

./get-local-ips.sh --name wlp3s0

执行结果同上。

标签:index,00,shell,ip,lft,ff,device,网络接口
From: https://blog.51cto.com/u_3823536/6021204

相关文章

  • JavaScript 异步编程
    JavaScript是一种单线程语言,这意味着只有一个线程可以在同一时间执行JavaScript代码。在JavaScript中,异步编程是一种编写不阻塞代码的方式,它可以在不影响页面响应的情......
  • JavaScript 中 this 关键字的作用和如何改变其上下文
    一、this关键字的作用JavaScript中的this关键字引用了所在函数正在被调用时的对象。在不同的上下文中,this的指向会发生变化。在全局上下文中,this指向全局对象(在浏......
  • javascript: node.js
     consthttp=require("http");http.createServer(function(request,response){response.writeHead(200,{'Content-type':'text/html'});response.end('<h1>......
  • 前端面试题 - javaScript系列
    Time:2023-01-2021:14:37ES6系列1.说说var、let、const之间的区别var、let、const三者区别可以围绕下面五点展开:变量提升暂时性死区块级作用域重复声明修......
  • P1008 [NOIP1998 普及组] 三连击
    置顶题解暴力,加简化的判断,数学原理,2个集合内所有数相加相乘结果一样,2个集合的内容一样(没错我自己编得,灵感并不是我自己的,感谢帮我的大大)置顶的题解中的数学原理应该是......
  • shell工具和脚本
    Shell脚本shell脚本是一种更加复杂度的工具。大多数shell都有自己的一套脚本语言,包括变量、控制流和自己的语法。shell脚本与其他脚本语言不同之处在于,shell脚本针对......
  • 54-Keepalive-基于VRRP技术的集群VIP漂移以及各种生产常见案例
    VRRP:VirtualRouterRedundancyProtocol虚拟路由冗余协议,解决静态网关单点风险物理层:路由器、三层交换机软件层:keepalivedVRRP网络层硬件实现https://support.huawei.c......
  • IPV6之6---地址解析
          被请求节点组播地址------DAD、地址解析功能     ......
  • 【五期李伟平】CCF-A(CCS'21)Simple, Fast Malicious Multiparty Private Set Intersect
    OfriNevo,NiTrieuandAvishayYanai."Simple,FastMaliciousMultipartyPrivateSetIntersection."InProceedingsofthe2021ACMSIGSACConferenceonComp......
  • 群晖 ipv6访问docker容器jellyfin
    解决方法在dms7中的docker套件是20版本的这个版本通过网上教程是没法成功开启ipv6,至少我不行,而且我搜到哪个配置文件重启之后会被修改,所以不是一种很好的方式但是上述的......