Shell封装虚拟IP地址

虚拟IP地址

你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。

虚拟IP地址的作用(VIP)

我们先来了解一下什么是虚拟IP以及虚拟IP有什么作用:

  1. 虚拟IP地址(Vritual IP Address) ,简称为VIP;
  2. 定义: 虚拟IP地址(VIP) 是一个不与特定计算机或一个计算机中的网络接口卡(NIC)相连的IP地址
  3. VIP的作用:数据包被发送到这个VIP地址,但是所有的数据还是经过真实的网络接口。VIPs大部分用于连接冗余;一个VIP地址也可能在一台计算机或NIC发生故障时可用,交由另一个可选计算机或NIC响应连接。虚拟IP地址的例子如:一个Loopback(无电路IP地址)作为不与在主机或路由器中任何一个特定接口(或电路)相关的IP地址。
    [link]https://baike.baidu.com/item/虚拟IP技术/249265?fr=aladdin

Shell脚本运行图

运行帮助界面

新建两个本地局域网VIP

产生外网的VIP

实现思路

首先,我们的VIP脚本需要获得用户的最高权限获得最高的系统权限sudo -i,这一点需要运行前先获得root权限。下面,我们来看一下具体实现思路:

1.需要获得传入参数;
2.有些参数需要获得额外的描述;
3.shell脚本规范化需要帮助文档,这里面使用-h来帮助用户使用;
4.对应脚本的版本号,-v来显示脚本的当前版本和支持的系统信息;
5.考虑对ip addr的一个简单封装;
6.考虑IP地址的有效范围表示形式,这里面统一考虑IPv4的点分十进制表示法;
7.子网掩码的使用;

获得传入参数

    case "$1" in
    "-l") #设置本地局域网的IP地址 
            ;;
    "-r") #设置非本地局域网的IP地址,随机产生
            ;;
    "-c") #设置网卡
            ;;
    "-d") #删除添加的VIP地址
            ;;
    "-version") #设置版本号
            ;;
    "-h") #设置帮助信息
            ;;
    "restart") #重启网络服务
            ;;
    "*") #错误信息反馈
            ;;
    "--") #结束所有操作
            ;;
    esac
    shift

我们通过上面的case语句,就能很好的实现获得每一个参数的信息,对于需要添加参数描述,譬如:-l 192.158.0.100,我们只需要在对应的选项后面加上shift从而跳过192.158.0.100这个非case选项的参数。

    case "$1" in
    "-l") #设置本地局域网的IP地址 
          shift ;;
    "-r") #设置非本地局域网的IP地址,随机产生
            ;;
    "-c") #设置网卡
            ;;
    "-d") #删除添加的VIP地址
            ;;
    "-version") #设置版本号
            ;;
    "-h") #设置帮助信息
            ;;
    "restart") #重启网络服务  
            ;;
    "*") #错误信息反馈
            ;;
    "--") #结束所有操作
            ;;
    esac
    shift

为了能够连续获得用户输入的参数,我们考虑使用循环,循环过程中我们对输入的参数利用上面定义的case来甄别。

    while [ -n "$1" ]
    do
        #当参数不为空的时候就开始循环
        case "$1" in
         ... 
        esac
        shift
    done

当然,我们还可以在运行时候,判断有多少个参数$#,如果参数少于一个则报警告

    if [ "$#" -le 1 ]
        then
            echo "Please enter the parameter..."
        else
            #进行循环
    fi

如何插入一段漂亮的代码片

博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片.

// An highlighted block
var foo = 'bar';

有些参数需要获得额外描述

对于参数:
1."-l") 需要的参数定义是当前局域网的IP地址;
2."-d") 需要删除的VIP地址;
3.-"c") 需要添加(删除)VIP的网卡

shell脚本规范化需要帮助文档,这里面使用-h来帮助用户使用

编写帮助文档,帮助用户使用时候产生更好的提示作用,当用户查看完帮助文档后通过break跳出整个循环

VIP帮助文档

考虑对ip addr的一个简单封装

Linux 命令中提供了ip add和ip addr 这类命令,目前测试,发现centeros,Ubuntu14以上,kali大部分Linux都有对这个命令的集成,可惜MacOS上没有,还是只能使用ifconfig。

       #add the virtual ip address
        #-z is mean ${par} is empty
        if [ -z ${rpar} ]
        then
            ip addr add ${par} dev ${var}
        else
            echo "${rpar}"
            ip addr add ${rpar} dev ${var}
        fi

判断IP地址是否为空,此处的rpar已经通过子网掩码处理了,例如:192.158.0.100/24,var指的是当前需要设置的网卡

考虑IP地址的有效范围表示形式

IP地址有效范围不超过255 最小为1,但是1是本地回环,因此,不可用,譬如:192.158.0.1。因此,末尾我们需要从2开始但是不超过255,也不要和255相等。

 while true
        do
            if [ ${number} -eq ${par:10} ]
            then
                ${number}=$[$RANDOM%254+2]
            else
            break
            fi
        done   

使用$RANDOM产生随机数 范围就是2~254。

子网掩码的使用

子网掩码一般为255.255.255.255,因此,我们使用192.158.0.100/24来表示当前这个局域网的网关。

开发Shell VIP

gantt
        dateFormat  YYYY-MM-DD
        title 实现自己的VIP Shell
        section 现有任务
        思路设计               :done,    des1, 2020-04-05
        进行中               :active,  des2, 2014-01-09, 3d
        开发测试              :         des3, after des2, 5d
        运行实现               :         des4, after des3, 5d

GitHub下载地址

快点我,下载吧

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,470评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,393评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,577评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,176评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,189评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,155评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,041评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,903评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,319评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,539评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,703评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,417评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,013评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,664评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,818评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,711评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,601评论 2 353

推荐阅读更多精彩内容