首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在shell中检查ipv4地址。比如它是*.1.*还是*.*.0.*?

如何在shell中检查ipv4地址。比如它是*.1.*还是*.*.0.*?
EN

Unix & Linux用户
提问于 2018-10-17 17:09:43
回答 3查看 194关注 0票数 1

因此,在这里,我尝试从ifconfig文件中获取信息,但是对于使用简单ifconfig命令的错误也是如此。

代码语言:javascript
复制
!#/bin/sh
if [/home/pi/ifconfig | grep -Eo ‘inet (addr:)?([0-9]*\.){3}[0-9]*’ | grep -Eo ‘([0-9]*\.){3}[0-9]*’ | grep -v ‘127.0.0.1’ = *.*.1.*]
then
echo “good1”
else
echo “notGood2”
fi

我所犯的错误

代码语言:javascript
复制
test: 2: test: [/home/pi/ifconfig: not found
grep: =: No such file or directory
grep: *.*.1.*]: No such file or directory
notGood2
EN

回答 3

Unix & Linux用户

发布于 2018-10-17 17:48:40

您可以使用ip addr显示主机上所有接口和子网的IP地址:

代码语言:javascript
复制
$ ip -f inet addr show | awk '$1 == "inet" { print $2 }'
127.0.0.1/8
192.168.0.2/24

如果你不关心子网,你可以去掉它:

代码语言:javascript
复制
$ ip -f inet addr show | awk '$1 == "inet" { print $2 }' | cut -d/ -f1
127.0.0.1
192.168.0.2

根据注释,如果您只想以某种原因查看IP地址(Es)的第三个八进制是什么,这就足够简单了:

代码语言:javascript
复制
# given this:
$ ip -f inet addr show | awk '$1 == "inet" { print $2 }'
127.0.0.1/8
192.168.25.2/24
# we can do this:
$ ip -f inet addr show | awk '$1 == "inet" { print $2 }' | cut -d. -f3
0
25
票数 2
EN

Unix & Linux用户

发布于 2018-10-17 18:48:54

代码语言:javascript
复制
#!/bin/bash
for i in $(/sbin/ifconfig | grep inet | awk '{print $2}')
do
    if [[ $i  =~ ^[0-9]{1,3}\.[0-9]{1,3}\.1|0.[0-9]{1,3}$ ]]; then
    echo "$i good1"
    else 
    echo "$i notGood2" 
    fi
done
票数 1
EN

Unix & Linux用户

发布于 2018-10-17 20:49:21

我找到答案了,伙计们,我会解释I=1,因为它是

代码语言:javascript
复制
i=1
if [ $i = 1 ]; then
echo $i good1
else
echo $i notGood2
fi

这就是我想要的,不管怎样,你们两个都帮我找到了正确的答案,伙计们!Thx

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/476073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档