1.单网卡
方法1:

#!/bin/sh
local_ip=`ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"​`
echo "${local_ip}"
命令解释:

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

方法2:

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

2. 多网卡
当多网卡时,会出现多个不同网段的IP

例如:服务器器有172.17.0.1和172.24.7.44网段的IP,根据不同网段的IP地址打印不同的输出,shell脚本如下:

#!/bin/sh
local_ip=`ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"​`
echo "${local_ip}"
 
for var in ${local_ip[@]}
do
  echo "多网卡IP:$var"
done
 
array=(`echo $local_ip | tr '\n' ' '` ) 
num=${#array[@]}                          #获取数组元素的个数。
echo "IP数目:$num"
for var in ${array[@]}
do
  echo "ip:$var"
done
 
功能:多网卡时,根据序号选择对应的IP地址

#!/bin/sh
 
function getIpAddr(){
    # 获取IP命令
    ipaddr=`ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"​`
    array=(`echo $ipaddr | tr '\n' ' '` )     # IP地址分割,区分是否多网卡
    #array=(172.20.32.214 192.168.1.10);
    num=${#array[@]}                          #获取数组元素的个数
 
    # 选择安装的IP地址
    if [ $num -eq 1 ]; then
        #echo "*单网卡"
        local_ip=${array[*]}
    elif [ $num -gt 1 ];then
        echo -e "\033[035m******************************\033[0m"
        echo -e "\033[036m*    请选择安装的IP地址        \033[0m"
        echo -e "\033[032m*      1 : ${array[0]}        \033[0m"
        echo -e "\033[034m*      2 : ${array[1]}         \033[0m"
        echo -e "\033[035m******************************\033[0m"
        #选择需要安装的服务类型
        input=""
        while :
        do
            read -r -p "*请选择安装的IP地址(序号): " input
            case $input in
                1)
                    local_ip=${array[0]}
                    #echo "选择网段1的IP为:${local_ip}"
                    break
                    ;;
                2)
                    local_ip=${array[1]}
                    #echo "选择网段2的IP为:${local_ip}"
                    break
                    ;;
                *)
                echo "*请输入有效的数字:"
                    ;;
            esac
        done
    else
        echo -e "\033[31m*未设置网卡IP,请检查服务器环境! \033[0m"
        exit 1
    fi

 
# 校验IP地址合法性
function isValidIp() {
    local ip=$1
    local ret=1
 
    if [[ $ip =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
        ip=(${ip//\./ }) # 按.分割,转成数组,方便下面的判断
        [[ ${ip[0]} -le 255 && ${ip[1]} -le 255 && ${ip[2]} -le 255 && ${ip[3]} -le 255 ]]
        ret=$?
    fi
    return $ret
}
 
local_ip=''
getIpAddr    #自动获取IP
isValidIp ${local_ip}    # IP校验
if [ $? -ne 0 ]; then
    echo -e "\033[31m*自动获取的IP地址无效,请重试! \033[0m"
    exit 1
fi
echo "*选择安装的IP地址为:${local_ip}"

获取IP地址:

代码如下:

ifconfig eth0 |grep "inet addr:" |awk '{print $2}'|cut -c 6-

shell常用命令有哪些

1.rm指删除文件;2.echo是指显示指定文本;3.cat 文件名,输出文件内容到基本输出;4.cb,格式化源代码;5.date,当前的时间和日期

————————————————
版权声明:本文为CSDN博主「Word哥」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/finghting321/article/details/108476650

Shell脚本中获取本机ip地址相关推荐

  1. centos7 shell 获取ip_Linux Shell脚本中获取本机ip地址方法

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

  2. Shell脚本中获取本机ip地址,Linux获取本地ip地址

    在 Shell 脚本中获取本机 IP 地址可以通过多种方式实现,这里介绍三种常用的方法: 1. 使用 ifconfig 命令获取本机 IP 地址 ifconfig 命令可以获取本机网卡的配置信息,包括 ...

  3. 前端Vue中获取本机ip地址

    前端Vue中获取本机ip地址 1.打开谷歌浏览器,地址栏输入chrome://flags,进入. 2.搜索Anonymize local IPs exposed by WebRTC,将其设置为Disa ...

  4. shell脚本中获取当前所在目录地址

    shell脚本中获取当前所在目录如下 #!/bin/bashwork_path=$(dirname $0) cd ${work_path} work_path=$(pwd) cd ${work_pat ...

  5. Unity中获取本机IP地址的方法

    做OptiTrack局域网数据通信时,需要设置本地IP和动捕数据服务器IP,来实现获取动捕数据.由于局域网搭建时需要手动设置电脑IP,因此想到如果可以获取本机IP,服务器IP通常设置固定后不会更改,如 ...

  6. shell中获取本机ip地址

    方法一: /sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:& ...

  7. C#中获取本机IP地址,子网掩码,网关地址

    首先添加对程序集System.Management的引用 using System; using System.Management; namespace ConsoleApplication1 { ...

  8. java获取本机ip地址_代码片段:获取系统所有IP

    问题 在Windows系统中,可以支持多个网卡,比如有线的以太网卡,无线网卡,虚拟网卡等.如下图所示: 每一张网卡由不同的类型,也可以分别被用户启用或禁用. 对于单独一张给定的网卡,其IP地址可以是D ...

  9. Linux下 shell获取本机ip地址

    方法二 /sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6 | awk '{print $2}' | tr -d "add ...

最新文章

  1. CF3B Lorry (手动模拟01背包,贪心)难度⭐⭐⭐
  2. java 字符转化字符串_【转载】java字符串的各种编码转换
  3. [译]创建物化视图的先决条件
  4. 京瓷1020怎么打印自检页_[建筑]喷墨打印机如何打印自检页 详细
  5. 2018.9.15,Matlab实验三:字符串、单元数组和结构体
  6. 《DSP using MATLAB》示例Example7.10
  7. Linux数据库1366错误,ERROR 1366 (HY000): Incorrect string value:’XXX’ for column 'XXX at row 1解决...
  8. 金属热处理行业调研报告 - 市场现状分析与发展前景预测
  9. Jquery,ajaxFileUpload插件完成图片上传
  10. Android应用程序版本号管理(官方文档中文版) 2011-08-07 22:03:36
  11. 原有Android/IOS项目集成flutter功能
  12. CNDS-Markdown之公式编辑(一)
  13. 微信小程序php后台实现
  14. Magick 使用注意
  15. 戴尔r720服务器装爱快路由系统,笔记本虚拟机里安装爱快软路由做单臂路由
  16. teredo 未能解析服务器名,Win10系统Xboxlive显示Teredo无法进行限定怎么解决
  17. windows电脑端同时打开多个微信的方法
  18. UGUI事件传递流程解析
  19. 微信小程序开发实战(24):选择图像
  20. java动漫网站开题报告_动漫影响及其研究开题报告

热门文章

  1. CAD如何导入其他图纸的打印设置?CAD打印设置导入步骤
  2. 斯特林公式(Stirling's approximation)—对n!进行估值
  3. English Learning - L1-4 从此没有不会的表达(下) 2022.12.15 周四
  4. Word修改作者公司主题标题编辑时间创建时间等一些属性工具软件
  5. 植物大战僵尸的C++实现
  6. Ubuntu的防火墙命令
  7. 我不曾忘记的初心-程序员如何看待买房子
  8. Linux平台屏幕录像工具RecordMyDesktop
  9. Ubuntu18.04或20.04,通知栏日期时间显示移到右侧右上角
  10. CAD测量时不能捕捉点?很难搞