Shell脚本实现自动修改IP、主机名等功能分享

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

代码如下:

#!/bin/sh 
#auto Change ip netmask gateway scripts 
#wugk 2012-12-17 
cat <<EOF
++++++++自动修改ip和主机名等相关信息+++++++++
ETHCONF=/etc/sysconfig/network-scripts/ifcfg-eth0 
HOSTS=/etc/hosts 
NETWORK=/etc/sysconfig/network 
DIR=/data/backup/`date +%Y%m%d` 
NETMASK=255.255.255.0 
+++++++++-------------------------+++++++++++
EOF 
#Define Path  定义变量,可以根据实际情况修改
ETHCONF=/etc/sysconfig/network-scripts/ifcfg-eth0 
HOSTS=/etc/hosts 
NETWORK=/etc/sysconfig/network 
DIR=/data/backup/`date +%Y%m%d` 
NETMASK=255.255.255.0 
echo "================================================"   
echo 
#定义change_ip函数
function Change_ip () 
{  
#判断备份目录是否存在,中括号前后都有空格,!叹号在shell表示相反的意思# 
if 
   [ ! -d $DIR ];then 
   mkdir -p $DIR 
fi 
  echo "Now Change ip address ,Doing Backup Interface eth0" 
  cp $ETHCONF $DIR 
  grep "dhcp"  $ETHCONF 
#如下$?用来判断上一次操作的状态,为0,表示上一次操作状态正确或者成功#   
if 
  [ $? -eq 0 ];then 
#read -p 交互输入变量IPADDR,注冒号后有空格,sed -i 修改配置文件#
  read -p "Please insert ip Address:" IPADDR 
  sed -i 's/dhcp/static/g' $ETHCONF 
#awk -F. 意思是以.号为分隔域,打印前三列#
  echo -e "IPADDR=$IPADDR\nNETMASK=$NETMASK\nGATEWAY=`echo $IPADDR|awk -F. '{print $1"."$2"."$3}'`.254" >>$ETHCONF 
  echo "This IP address Change success !" 
else 
  echo -n  "This $ETHCONF is static exist ,please ensure Change Yes or NO": 
  read i 
fi 
if   
  [ "$i" == "y" -o "$i" == "yes" ];then 
  read -p "Please insert ip Address:" IPADDR 
count=(`echo $IPADDR|awk -F. '{print $1,$2,$3,$4}'`)  
 #定义数组, ${#count[@]}代表获取变量值总个数#
A=${#count[@]} 
 #while条件语句判断,个数是否正确,不正确循环提示输入,也可以用[0-9]来判断ip#
while  
  [ "$A" -ne "4" ] 
do 
  read -p "Please re Inster ip Address,example 192.168.0.11 ip": IPADDR 
count=(`echo $IPADDR|awk -F. '{print $1,$2,$3,$4}'`)  
A=${#count[@]} 
done 
 #sed -e 可以连续修改多个参数#
  sed -i -e 's/^IPADDR/#IPADDR/g' -e 's/^NETMASK/#NETMASK/g' -e 's/^GATEWAY/#GATEWAY/g' $ETHCONF
 #echo -e \n为连续追加内容,并自动换行#
  echo -e "IPADDR=$IPADDR\nNETMASK=$NETMASK\nGATEWAY=`echo $IPADDR|awk -F. '{print $1"."$2"."$3}'`.254" >>$ETHCONF 
  echo "This IP address Change success !" 
else 
  echo "This $ETHCONF static exist,please exit" 
  exit $? 
fi

}

#定义hosts函数 
############function hosts############## 
function Change_hosts () 

if 
   [ ! -d $DIR ];then 
   mkdir -p $DIR 
fi 
  cp $HOSTS $DIR 
  read -p "Please insert ip address": IPADDR 
host=`echo $IPADDR|sed 's/\./-/g'` 
  cat $HOSTS |grep 127.0.0.1 |grep "$host" 
if 
  [ $? -ne 0 ];then 
  sed -i "s/127.0.0.1/127.0.0.1 $host/g" $HOSTS 
  echo "This hosts change success " 
else 
  echo "This $host IS Exist .........." 
fi 
}
###########fuction network############### 
#定义network函数 
function Change_network ()  

   if 
   [ ! -d $DIR ];then 
   mkdir -p $DIR 
 fi 
  cp $NETWORK $DIR 
  read -p "Please insert ip address": IPADDR 
host=`echo $IPADDR|sed 's/\./-/g'` 
  grep "$host" $NETWORK 
   if 
  [ $? -ne 0 ];then 
  sed -i "s/^HOSTNAME/#HOSTNAME/g" $NETWORK 
  echo "NETWORK=$host" >>$NETWORK 
else 
  echo "This $host IS Exist .........." 
  fi 
}

#PS3一般为菜单提示信息# 
PS3="Please Select ip or hosts Menu": 
#select为菜单选择命令,格式为select $var in ..command.. do .... done   
  select i in  "Change_ip" "Change_hosts" "Change_network"

do 
#case 方式,一般用于多种条件下的判断 
case $i in  
     Change_ip ) 
     Change_ip 
;; 
     Change_hosts ) 
     Change_hosts 
;; 
     Change_network ) 
     Change_network  
;; 
     *) 
     echo 
     echo "Please Insert $0: Change_ip(1)|Change_hosts(2)|Change_network(3)" 
     echo 
;; 
esac

done

(0)

相关推荐

  • Shell交互批量更改主机名的方法

    需求分析: 1.ssh公钥拷贝,提供无密码管理. 2.批量同步hosts文件到多台主机. 3.批量修改主机名. 实现: 首先编辑一份用于同步到多台主机的hosts文件 vi /etc/hosts 192.168.0.1 server1 192.168.0.2 server2 192.168.0.3 server3 192.168.0.4 server4 192.168.0.5 server5 192.168.0.6 server6 192.168.0.7 server7 192.168.0.8

  • 使用PowerShell获取当前主机内存使用量和总量的方法

    群里一个小兄弟的提问 用PowerShell来写比c#要简单太多了,WMI直接提供了方法,调用即可. #made by kukisama $a=(get-wmiobject -class Win32_PhysicalMemory -namespace "root\cimv2").Capacity $b=(get-wmiobject -class Win32_PerfFormattedData_PerfOS_Memory -namespace "root\cimv2"

  • 虚拟主机封杀webshell提权!!!!!!!!!!

    1.为了打造一个安全的虚拟主机,在asp+SQL环境下,我们要做的是封杀ASP webshell.封杀serv-u提权漏洞和SQL注入的威胁 2.默认安装的win主机上webshell功能十分强大,我们要封杀webshell的哪些功能 也就是不让webshell查看系统服务信息,执行cmd命令和略览文件目录,我们要实现的功能是每个用户只能访问自己的目录,而且可以用FSO等ASP组件,在这里我以海洋木马和win200为例给大家演示一下.好多资料都是网上收集而来,在这表示感谢. 3.现在我们先设置好

  • NTFS权限设置以避免通过webshell遍历主机目录

    测试环境:Windows 2003 + IIS6.0 + Access数据库 运行上传的asp助手,在浏览其他分区的时候提示"路径未找到",用asp探针查看发现是因为对分区没有读取权限. 我们知道,匿名访问web使用系统中的"IUSR_主机名"这个用户,只要限制了这个用户的读取权限,即能限制访问者遍历服务器目录,保护服务器数据不被非法访问. 操作步骤: 1. 我的电脑,磁盘安全属性.2. 首先删除Everyone组.一般在服务器上看见Everyone就要删.3. 添

  • PowerShell脚本实现检测网络内主机类型

    最近一直在写一个自动检测网络内主机类型的脚本.基本功能可以实现判断主机操作系统类型,如果是域内的主机可以获取主机的硬件参数和性能参数,并判断是否存在网络设备.对一个运维人员来说往往需要尽快熟悉一个陌生的网络.所以这个脚本就很方便了,如果有更好的建议欢迎指正感谢! 复制代码 代码如下: ############################################ #Author:Lixiaosong #Email:lixiaosong8706@gmail.com #For:检测/24掩

  • nginx虚拟主机防webshell完美版

    我们先来看下nginx.conf server  {    listen       80;    server_name  www.a.com;    index index.html index.htm index.php;    root  /data/htdocs/www.a.com/; #limit_conn   crawler  20; location ~ .*\.(php|php5)?$    {            #fastcgi_pass  unix:/tmp/php-c

  • 阿里云主机一键安装lamp、lnmp环境的shell脚本分享

    阿里云主机一键安装lamp,lnmp,自动安装脚本,由阿里云主机分享 一键安装包下载地址:点击下载 1.阿里云分享的一键安装lamp,lnmp,此安装包包含的软件及版本为: 复制代码 代码如下: nginx:1.0.15.1.2.5.1.4.4 apache:2.2.22.2.4.2 mysql:5.1.73.5.5.35.5.6.15 php:5.3.18.5.4.23.5.5.7 php扩展:memcache.Zend Engine/ OPcache ftp:(yum/apt-get安装)

  • shell脚本实现批量测试局域网主机是否在线

    由于局域网内主机多,VLAN也多,为时常能知道在线主机的数量,编写脚本以查验在线主机. 效果是:主机在线显示绿色,主机离线显示红色结果. 用法:./ping IP段    例如:./ping 192.168.0 复制代码 代码如下: #!/bin/bash NETWORK=$1 for HOST in $(seq 1 254) do         ping -c 1 -w 1 $NETWORK.$HOST &>/dev/null && result=0 || result=

  • php管理nginx虚拟主机shell脚本实例

    本文实例讲述了php管理nginx虚拟主机shell脚本,分享给大家供大家参考.具体分析如下: 使用php作为shell脚本是一件很方便的事情.理所当然,我们可以使用php脚本来管理 nginx虚拟主机,下面是笔者的 脚本 文件供各位参考: 复制代码 代码如下: #!/usr/bin/php -q <?php   start: fwrite(STDOUT,"===========Vhost Script===========\n"); fwrite(STDOUT,"=

  • Shell脚本实现自动修改IP、主机名等功能分享

    作为一名Linux SA,日常运维中很多地方都会用到脚本,而服务器的ip一般采用静态ip或者MAC绑定,当然后者比较操作起来相对繁琐,而前者我们可以设置主机名.ip信息.网关等配置.修改成特定的主机名在维护和管理方面也比较方便.如下脚本用途为:修改ip和主机名等相关信息,可以根据实际需求修改,举一反三! 复制代码 代码如下: #!/bin/sh  #auto Change ip netmask gateway scripts  #wugk 2012-12-17  cat <<EOF +++++

  • Shell脚本实现自动修改IP地址

    作为一名Linux SA,日常运维中很多地方都会用到脚本,而服务器的ip一般采用静态ip或者MAC绑定,当然后者比较操作起来相对繁琐,而前者我们可以设置主机名.ip信息.网关等配置.修改成特定的主机名在维护和管理方面也比较方便.如下脚本用途为:修改ip和主机名等相关信息,可以根据实际需求修改,举一反三! #!/bin/sh #auto Change ip netmask gateway scripts #wugk 2012-12-17 cat << EOF ++++++++自动修改ip和主机名

  • shell脚本测试某网段内主机连通性

    1. 测试192.168.4.0/24整个网段的连通性(while版本) #!/bin/bash #Author:丁丁历险(Jacob) #定义变量i控制循环次数,i从1开始循环,每循环一次,i自加1,直到i等于254循环退出 #在每次循环中对一个IP进行ping测试,如果ping通,提示主机是UP的 #如果无法ping同,则提示主机是down的 #ping命令的-c选项控制ping测试的次数,-c2表示对目标主机执行2次ping测试 #ping命令的-i选项,控制多次ping测试的间隔时间默认

  • 使用shell脚本实现ping对应IP所对应的人名(推荐)

    #!/bin/bash a=(张三 李四 王五 赵六) for i in {0..3} do if ping -c 1 192.168.1. $((${i}+1)) >dev/null 2>&1;then echo $((${i}+1))"号"${a[${i}]}"在线" else echo $((${i}+1))"号"${a[${i}]}"离线" fi done 这串shell代码实现了ping 某个IP

  • 解决Centos7下crontab+shell脚本定期自动删除文件问题

    问题描述: 最近有个需求,就是rsync每次同步的数据量很多,但是需要保留的数据库bak文件 保留7天就够了,所以需要自动清理文件夹内的bak文件 解决方案: 利用shell脚本来定期删除文件夹内的任务 1.创建shell文件 [root@zabbix script]# vim backup_sql_clean.sh #!/bin/sh find /data1/backup/KDKDA\$AGKDPAYKT/XNAKSD/FXUIJ -mtime +10 -name "*.bak" -

  • Python设置在shell脚本中自动补全功能的方法

    本篇博客将会简短的介绍,如何在ubuntu中设置python自动补全功能. 需求:由于python中的内建函数较多,我们在百纳乘时,可能记不清函数的名字,同时自动补全功能,加快了我们开发的效率. 方法以及要求:设置过程中需要看客具备一点ubuntu的基本知识,当然不懂也没有关系,跟着一步一步走,不懂得可以学习一下ubuntu的文件系统. 具体步骤 1.首先创建一个文件:~/.pythonrc 在ubuntu中创建文件的命令为: sudo gedit ~/.pythonrc #sudo表示使用管理

  • 使用脚本自动修改ip设置

    vbs脚本的功能非常强大, 管理系统简单方便!下面的脚本win2000和winxp都可以使用,win2003没有测试过, 应该也没有问题.如果需要经常切换网关,或是ip,这个脚本是最方便的了.稍微修改一下甚至可以做到1分钟变一次ip. 复制代码 代码如下: @Echo OffTITLE  我们ip设置器 :startCLSCOLOR 2f:: 使用COLOR命令对控制台输出颜色进行更改mode con cols=56 lines=20:: MODE语句为设定窗体的宽和高:sc_mainecho 

  • 网管专用自动更改IP\机器名\工作组的批处理

    本人负责的部门有上百台机器,重装完后需要恢复原有配置,我曾使用过很多方法: 1:手工更改,这条就不要说了 2:使用netsh dump +文件和 netsh -f +文件来更改,但是整个盘都格式化就没用. 3:使用专用的更改ip地址的小程序,但还是需要手工来指定IP 最后,我想到如下办法: 1:首先实现:netsh interface ip 来更改IP 2:使用wmic computersystem 修改工作组 3:使用reg add 来更改机器名 4:因为修改机器名后要重启才生效,于是使用:r

  • Shell脚本实现自动输入密码登录服务器

    使用Linux的程序员对输入密码这个举动一定不陌生,在Linux下对用户有严格的权限限制,干很多事情越过了权限就得输入密码,比如使用超级用户执行命令,又比如ftp.ssh连接远程主机等等,如下图: 那么问题来了,在脚本自动化执行的时候需要输入密码怎么办?比如你的脚本里有一条scp语句,总不能在脚本执行到这一句时手动输入密码吧. 针对于ssh或scp命令,可能有人会回答是建立信任关系,关于建立ssh信任关系的方法请自行百度Google,只需要两行简单的命令即可搞定,但这并不是常规的解决方案,如果是

  • Shell脚本实现自动安装zookeeper

    A:本脚本运行的机器,Linux RHEL6 B,C,D,...:待安装zookeeper cluster的机器, Linux RHEL6 首先在脚本运行的机器A上确定可以ssh无密码登录到待安装zk的机器B,C,D,...上,然后就可以在A上运行本脚本: 复制代码 代码如下: $ ./install_zookeeper 前提: B, C, D机器必须配置好repo,本脚本使用的是cdh5的repo, 下面的内容保存到:/etc/yum.repos.d/cloudera-cdh5.repo: 复

随机推荐