Linux - Shell 脚本中获取本机 ip 地址方法

方法一:ifconfig -a

ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"

命令解释

  1.  ifconfig -a       和window下执行此命令一样道理,返回本机所有ip信息
  2.  grep inet                   截取包含ip的行
  3.  grep -v 127.0.0.1      去掉本地指向的那行
  4.  grep -v inet6             去掉包含inet6的行
  5.  awk { print $2}         $2 表示默认以空格分割的第二组 同理 $1表示第一组​
  6.  tr -d "addr:               删除"addr:"这个字符串

多网卡情况

倘若有多个网卡,可能会出现多个不同网段的IP,这个时候如果还是执行上述命令就会返回多个IP,如下:

假设某个机器有192.*.*.8和10.*.*.*网段的IP,现在要实现不同网段的IP地址打印不同的输出,shell脚本如下

1 #!/bin/sh
2 ip=`ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"​`
3 echo $ip
4 if[[ $ip =="10."*]]
5 then
6 echo "该网段是10.*.*.*网段"
7 else
8 echo "该网段是192.*.*.*网段"
9 fi

方法二:ip addr

 ip addr | awk '/^[0-9]+: / {}; /inet.*global/ {print gensub(/(.*)\/(.*)/, "\\1", "g", $2)}' 

这里涉及awk命令,暂不展开详讲,后面会专门有一篇介绍awk命令的文章哦    

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 下面是一个示例脚本,它使用 `ifconfig` 命令获取系统的 IP 地址: ```bash #!/bin/bash # Store the output of the ifconfig command in a variable ifconfig_output=$(ifconfig) # Extract the IP address using grep and cut ip_address=$(echo "$ifconfig_output" | grep 'inet' | cut -d ' ' -f 10) # Print the IP address echo "IP address: $ip_address" ``` 使用方法: 1. 将上述脚本复制并粘贴到文本编辑器,然后保存为 `get_ip.sh` 或其他任意文件名。 2. 使用 `chmod` 命令添加可执行权限:`chmod +x get_ip.sh` 3. 运行脚本:`./get_ip.sh` 这个脚本使用 `ifconfig` 命令获取网络接口的信息,然后使用 `grep` 命令提取带有 "inet" 的行,最后使用 `cut` 命令提取第 10 个字段,也就是 IP 地址。 注意:这个脚本仅适用于使用 `ifconfig` 命令的 Linux 系统,如果您使用的是其他命令,则需要更改脚本以使用相应的命令。例如,如果您使用的是 `ip` 命令,则可以使用如下脚本: ```bash #!/bin/bash # Store the output of the ip command in a variable ip_output=$(ip a) # Extract the IP address using grep and cut ip_address=$(echo "$ip_output" | grep 'inet' | grep -v 'inet6' | cut -d ' ' -f 6 | cut -d '/' -f 1) # Print the IP address echo "IP address: $ip_address" ``` 请注意,这个脚本使用 `ip a` 命令获取网络接口的信 ### 回答2: 获取Linux系统IP地址shell脚本可以使用以下命令: #!/bin/bash ip_addr=$(hostname -I | awk '{print $1}') echo "本IP地址是:" $ip_addr 这个脚本使用了`hostname -I`命令来获取IP地址列表,并使用`awk`命令提取出第一个IP地址。然后使用`echo`命令打印出IP地址。 注意:这个脚本假设Linux系统只有一个网络接口,并且该网络接口有一个有效的IP地址。如果你的系统有多个网络接口或者网络接口没有有效的IP地址,那么需要相应地修改脚本。 ### 回答3: 编写一个shell脚本获取Linux系统的IP地址可以使用ifconfig命令。以下是一个简单的脚本示例: ```bash #!/bin/bash # 使用ifconfig命令获取系统的IP地址 ip_address=$(ifconfig | grep 'inet ' | awk '{print $2}') # 打印IP地址 echo "系统的IP地址是: $ip_address" ``` 首先,我们使用ifconfig命令来获取网络接口的信息。然后,使用grep命令过滤出包含"inet "的行,这些行包含了IP地址的信息。接着,我们使用awk命令提取出IP地址并将其存储在变量`ip_address`。最后,使用echo命令打印IP地址。 你可以将以上脚本保存为一个名为`get_ip.sh`的文件,然后在shell运行该脚本即可获取Linux系统的IP地址

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值