专栏首页编程乐园Shell脚本实现自动修改服务器IP

Shell脚本实现自动修改服务器IP

这篇文章主要介绍了Shell脚本实现自动修改IP地址,本文直接给出实现代码,并在代码中标注了注释,需要的朋友可以参考下

作为一名Linux SA,日常运维中很多地方都会用到脚本,而服务器的ip一般采用静态ip或者MAC绑定,当然后者比较操作起来相对繁琐,而前者我们可以设置主机名、ip信息、网关等配置。修改成特定的主机名在维护和管理方面也比较方便。

如下脚本用途为:利用SHELL脚本实现自动修改服务器IP

#脚本内容如下

脚本一

#!/bin/bash

#Date:2018-4-13 14:08:55

#Author Blog:

# https://www.yangxingzhen.com

#Author WeChat:

# 微信公众号:小柒博客

#Author mirrors site:

# https://mirrors.yangxingzhen.com

#About the Autho

# BY:YangXingZhen

# Mail:xingzhen.yang@yangxingzhen.com

source /etc/init.d/functions

IP_ADDR=$1

#Define Path 定义变量,可以根据实际情况修改

Array=(

[0]=`ifconfig |awk '/cast/ {print $2}'|sed 's/addr://'`

[1]=/data/backup/`date +%F`

[2]=`ip route |awk '/default/ {print $3}'`

[3]=/etc/sysconfig/network-scripts

[4]=`grep -wc dhcp ${Array[3]}/ifcfg-ens33`

)

#定义check_ip函数体

function check_ip (){

#严格判断IP正确性

#if echo ${IP_ADDR} | egrep '^([0-9]{1,3}\.){3}[0-9]{1,3}$';then

if [[ ${IP_ADDR} =~ ^([0-9]{1,3}\.){3}[0-9]{1,3}$ ]];then

count=(`echo ${IP_ADDR}|awk -F. '{print $1,$2,$3,$4}'`)

IP_V1=${count[0]}

IP_V2=${count[1]}

IP_V3=${count[2]}

IP_V4=${count[3]}

for i in $IP_V1 $IP_V2 $IP_V3 $IP_V4

do

#判断IP输入数字大小为小于或等于255,大于0,首IP不能为0

if [[ $i =~ ^0[0-9]{1,2}$ ]];then

echo -e "\033[32m IP $IPADDR not available. \033[0m"

return 1

fi

if [ $i -lt 255 -a $i -ge 0 ];then

echo -e "\033[32m IP $IPADDR available. \033[0m" >/dev/null 2>&1

else

echo -e "\033[32m IP $IPADDR not available. \033[0m"

return 1

fi

if [ $IP_V1 -eq 0 ];then

echo -e "\033[32m IP $IPADDR not available. \033[0m"

return 1

fi

done

else

echo -e "\033[33m IP format error,Please Enter IP. \033[0m"

return 1

fi

}

#while条件语句判断,输入IP是否符合,不符合循环提示输入

while true;

do

#read一般为菜单提示信息

read -p "Please Enter Server IP: " IPADDR

check_ip

if [ $? -eq 0 ];then

break

fi

done

#判断备份目录是否存在,中括号前后都有空格,!叹号在shell表示相反的意思

if [ ! -d ${Array[1]} ];then

mkdir -p ${Array[1]}

fi

\cp ${Array[3]}/ifcfg-ens33 ${Array[1]}

#判断网络状态为静态还是动态

if [ ${Array[4]} -eq 1 ];then

sed -i 's/dhcp/static/g;s/ONBOOT=no/ONBOOT=yes/g' ${Array[3]}/ifcfg-ens33

cat >>${Array[3]} <<EOF

IPADDR=${IPADDR}

NETMASK=${Array[0]}

GATEWAY=${Array[2]}

EOF

systemctl restart network

else

read -p "The IP is Static ipaddress,Please ensure change server IP address,yes|y or no? " INPUT

if [ "$INPUT" == "yes" -o "$INPUT" == "y" ];then

sed -i "s/IPADDR=.*/IPADDR=${IP_ADDR}/" ${Array[3]}/ifcfg-ens33

systemctl restart network

else

exit 0

fi

fi

脚本二

#!/bin/bash

#Date:2018-4-13 14:08:55

#Author Blog:

# https://www.yangxingzhen.com

#Author WeChat:

# 微信公众号:小柒博客

#Author mirrors site:

# https://mirrors.yangxingzhen.com

#About the Autho

# BY:YangXingZhen

# Mail:xingzhen.yang@yangxingzhen.com

#Auto modify Server IP

#Define Path 定义变量,可以根据实际情况修改

NETMASK="255.255.255.0"

GATEWAY="192.168.60.1"

BACK_DATA="/data/bak"

ETH_FILE="/etc/sysconfig/network-scripts/ifcfg-eth0"

ETH_STATUS=`grep dhcp /etc/sysconfig/network-scripts/ifcfg-eth0 | wc -l`

#定义check_ip函数

function check_ip () {

IP_ADDR=$1

#严格判断IP正确性

if echo $IP_ADDR | egrep '^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$';then

IP_V1=`echo $IP_ADDR | cut -d. -f1`

IP_V2=`echo $IP_ADDR | cut -d. -f2`

IP_V3=`echo $IP_ADDR | cut -d. -f3`

IP_V4=`echo $IP_ADDR | cut -d. -f4`

for i in $IP_V1 $IP_V2 $IP_V3 $IP_V4

do

#判断IP输入数字大小为小于或等于255,大于0

if [ $i -lt 255 -a $i -ge 0 ];then

echo -e "\033[32m IP $IP_ADDR available. \033[0m" >/dev/null

else

echo -e "\033[32m IP $IP_ADDR not available. \033[0m"

return 1

fi

if [ $IP_V1 -eq 0 ];then

echo -e "\033[32m IP $IP_ADDR not available. \033[0m"

return 1

fi

done

else

echo -e "\033[33m IP format error,Please Enter IP. \033[0m"

return 1

fi

}

#while条件语句判断,输入IP是否符合,不符合循环提示输入

while true;

do

#read一般为菜单提示信息

read -p "Please Enter Correct IP:" IP

check_ip $IP

if [ $? -eq 0 ];then

break

fi

done

#判断备份目录是否存在,中括号前后都有空格,!叹号在shell表示相反的意思

if [ ! -d $BACK_DATA ];then

mkdir -p $BACK_DATA

fi

cp $ETH_FILE $BACK_DATA

#判断网络状态为静态还是动态

if [ $ETH_STATUS -eq 1 ];then

sed -i 's/dhcp/static/' $ETH_FILE

cat >> $ETH_FILE << EOF

IPADDR=$IP_ADDR

NETMASK=$NETMASK

GATEWAY=$GATEWAY

EOF

else

sed -i 's/IPADDR=.*/IPADDR='$IP_ADDR'/' $ETH_FILE

fi

service network restart

原文链接:https://www.i7ti.cn/64.html

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Linux服务器自动拒绝恶意IP脚本

    随着整个IT行业的发展,安全对于人们来说非常的重要,小到个人电脑,到IT企业大数据存储,大到整个互联网安全,其实要做好安全,不能光看整体,有时候细节才是最重要的...

    用户8449980
  • 自动同步服务器vm文件的shell脚本

    用户1503405
  • shell实现脚本监控服务器及web应用

    实际工作中我们需要知道部署在服务器上的应用有没有问题,但是人为的操作太麻烦有咩有简单的方式呢shell来监控我们服务器运行状态以及服务器上部署的应用,如果出现异...

    菲宇
  • shell脚本实现监控服务器mysql,解决服务器内存不足自动关闭mysql问题

    这个问题困扰许久了,因为我的阿里云服务器只有500M和1G内存,往往在网站访问量大的时候就会导致服务器的apache进程过多之后导致mysql服务被自动关闭。

    我在鹅厂做安全
  • 简单脚本实现服务器保持自动更新

    huginn 中文网
  • shell 脚本监控攻击IP禁止登录服务器

    eisc
  • Shell脚本和expect实现自动交互

    expect是一个自动交互功能的工具,可以满足代替我们实际工作中需要从终端手动输入某些内容来使得程序或命令继续运行的目的。如安装软件是时的一些提示,ssh远程主...

    剧终
  • 批量修改linux服务器密码脚本程序

    #!/bin/bash oldpassword=$1 newpassword=$2

    zhangdd
  • kubernetes学习记录(2)——基于Centos7.2的kubernetes集群自动安装与配置

    kubernetes集群的解决方案为:使用VMware Workstation Pro,安装3台Centos7 Minimal版(无图形化界面,防止电脑卡顿)的...

    胡了了
  • 从挖矿木马看后渗透维权

    由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,雷神众测以及文章作者不为此承担任何责任。 雷神众测拥有对此文章的修改和...

    安恒网络空间安全讲武堂
  • shell脚本监控php-fpm并自动重启服务

    监控php-fpm并自动重启服务的shell脚本,脚本的主要功能:不断检查网站的状态,如果异常就重启php-fpm服务

    菲宇
  • shell脚本实现FTP自动上传文件

    院长技术
  • 后渗透之维护权限

    ‍何为‍‍“后渗透”?就是获取到受害者服务器的权限后,再继续对受害者服务器进行长期攻击或者信息获取的一种持续性手段。常见的手段有,后门、影子账户、会话‍劫‍持等...

    洛米唯熊
  • Linux系统防CC攻击自动拉黑IP增强版Shell脚本

    最新更新:张戈博客已推出功能更强大的轻量级 CC 攻击防御脚本工具 CCKiller==>传送门 前天没事写了一个防 CC 攻击的 Shell 脚本,没想到这么...

    张戈
  • shell脚本专题(02):生产常用shell用例

    最近使用了个自动化平台(详见自动化运维平台Spug测试)进行每周的变更,效果很不错,平台将大量重复繁琐的操作通过脚本分发方式标准化自动化了,平台核心是下发到各个...

    loong576
  • 紧跟技术前沿——IOX-XE Guest-shell

    Introducing Python and Guest Shell on IOS-XE 16.5

    刘銮奕
  • day02.自动化部署高级命令文本【大数据教程】

    day02.自动化部署高级命令文本 一、Iptables教程 1. iptables防火墙简介 Iptables也叫netfilter是Linux下自带的一款免...

    Java帮帮
  • shell 常用命令

    expect 命令是用来实现自动化交互通信的,比如当你在脚本中通过某些命令登录、连接、上传、下载等和远程服务器的交互时,可能需要让你输入一些账号、密码等信息

    请叫我大苏
  • Docker下kafka学习,三部曲之二:本地环境搭建

    在上一章《 Docker下kafka学习,三部曲之一:极速体验kafka》中我们快速体验了kafka的消息分发和订阅功能,但是对环境搭建的印象仅仅是执行了几个命...

    程序员欣宸

扫码关注云+社区

领取腾讯云代金券