Linux利用SHELL直接获得IP地址

概述:

我的上一篇文章Linux正则过滤命令ifconfig/ip提取IP地址 介绍了如何利用正则过滤得到IP地址,是利用组合命令获取的,那么问题就来了,如果是高频使用,每次都输入一大串命令来获取,多不方便呀?所以,本文章来介绍如何利用SHELL封装起来这些命令,方便使用者。

准备:

1、第一行 #!/bin/bash 在宣告这个 script 使用的 shell 名称: 因为我们使用的是 bash ,所以,必须要以“ #!/bin/bash ”来宣告这个文件内的语法使用 bash 的语法!
2、程序内容的说明: 整个 script 当中,除了第一行的“ #! ”是用来宣告 shell 的之外,其他的#都是“注解”用途!
3、主要环境变量的宣告: 建议务必要将一些重要的环境变量设置好,PATH 与 LANG (如果有使用到输出相关的信息时) 是当中最重要的!
4、要养成良好的 script 撰写习惯,在每个 script 的文件开始处记录好:

script 的功能;
script 的版本信息;
script 的作者与联络方式;
script 的 History (历史纪录);
script 运行时需要的环境变量预先宣告与设置;
script 内较特殊的指令,使用“绝对路径”的方式来下达;

分析:

该出我就偷懒一下,直接放出写好的SHELL内容,至于当中的命令详解可以参考我上篇文章Linux正则过滤命令ifconfig/ip提取IP地址 ,里面有我的SHELL的主要内容。

#!/bin/bash
#Program:
# Get the ip from ipcofing.
#History:
#2016/12/19  Tim   First release
Path=/bin:/sbin:/usr/bin:/usr/sbin:usr/local/bin:usr/local/sbin:~/bin
export Path

#1/告诉使用者,这程序的用户是从ipconfig命令中获取IP地址
echo "该程序是从命令ifcongfig中获取IP地址:"

#2/提示使用者,输入将要查询设备的名字。
read -p "请输入想要查询IP的设备名字:(eth0/eth1/eth2/HELP):" Dev

case ${Dev} in

   "HELP")
   echo "如果不知道您电脑设备号,可以通过命令/etc/udev/rules.d/70-persistent-net.rules 查看。"
   exit 1
   ;;
   "")
     echo "请输入内容,如eh0/eh1/eh2/HELP"
   exit 1
   ;;
   "eth0")
    ifconfig eth0 | grep 'inet ' | sed s/^.*addr://g | sed s/Bcast.*$//g
    ;;
   "eth1")
    ifconfig eth1 | grep 'inet ' | sed s/^.*addr://g | sed s/Bcast.*$//g
    ;;
    "eth2")
    ifconfig eth2 | grep 'inet ' | sed s/^.*addr://g | sed s/Bcast.*$//g
    ;;
    *)
    echo "请输入正确的内容!"
     exit 1
    ;;
esac


运行结果:

这里写图片描述

总结:

其实,这SHELL作为第一个版本,可以改进的地方还有很多的,例如:
1、输入HELP可以直接帮助用户进行获取用户的设备。
2、输入无论eth0、eth1、eth2…可以利用正则过滤判断是否输入正确内容,不至于用太多case导致case太臃肿。
3、甚至,既然能实现1的改进基础上,可以实现全自动,不需要用户输入任何内容,自动获取用户设备并且进行查询IP。
还有更多的改进,希望读者能踊跃提出来,大家共同学习哈!

猜你喜欢

转载自blog.csdn.net/Tim_phper/article/details/53737692