获取与修改Ip地址信息的shell脚本
一,自动修改网络ip、掩码与网关
复制代码 代码示例:
#!/bin/sh
#自动修改网络ip、掩码、网关的脚本。
#使用方法ip_mod IP_MOD、MASK_MOD、GW_MOD
#例:ip_mod 10.10.10.5 255.255.255.0 10.10.10.1
#其中IP_MOD、MASK_MOD、GW_MOD是要改成的ip、mask、gw
#设置变量
PROC=/bin/sed
IP_PATH=/etc/sysconfig/network-scripts/ifcfg-eth0
GW_PATH=/etc/sysconfig/network
IP_PRI=`grep -i ipaddr $IP_PATH|awk -F "=" '{printf $2 }'`
MASK_PRI=`grep -i netmask $IP_PATH|awk -F "=" '{printf $2}'`
GW_PRI=`grep -i GATEWAY $GW_PATH|awk -F "=" '{printf $2}'`
IP_MOD=$1
MASK_MOD=$2
GW_MOD=$3
#修改ip、mask、gw
$PROC -i "s/$IP_PRI/$IP_MOD/g" $IP_PATH
$PROC -i "s/$MASK_PRI/$MASK_MOD/g" $IP_PATH
$PROC -i "s/$GW_PRI/$GW_MOD/g" $GW_PATH
#重启网卡
/etc/rc.d/init.d/network restart
二,unix shell获取IP和修改IP
代码如下:
复制代码 代码示例:
#!/bin/sh
#全局变量
#已配置信息的网卡个数
ETHNUM=0
#网卡名称信息,多个网卡用#符号分隔
ETHS=""
#网卡IP/掩码/默认网关信息,用:符号分隔,多个网卡用#符号分隔
ETHINFO=""
#网卡名称信息,用数组存储
ETHSArray[0]=""
#网卡IP/掩码/默认网关信息,用数组存储
ETHINFOArray[0]=""
#修改IP时原IP所在网卡在数组中的索引
ETHINDEX=0
function getIP
{
typeset ethList="";
typeset ethaddr="";
typeset ethmask="";
typeset gateway="";
typeset ethinfo="";
# 获取所有网卡信息
ethList=`ifconfig -a | grep 'eth' | awk '{print $1}'`
# 循环所有网卡
for eth in ${ethList}
do
# 获取网卡IP地址
ethaddr=`ifconfig ${eth} | grep 'inet addr:'| awk '{print $2}' | awk -F : '{print $2}'`
# 网卡配置了IP地址
if [ "-$ethaddr" != "-" ]
then
# 获取网卡掩码
ethmask=`ifconfig ${eth} | grep 'inet addr:'| awk '{print $4}' | awk -F : '{print $2}'`
# 获取网卡默认网关
# gateway=`route ${eth}| grep default.*UG.*$eth | awk '{print $2}'`
gateway=`route | grep default.*UG.*$eth | awk '{print $2}'`
# 将该网卡的信息拼成字符串
ethinfo="${ethaddr}:${ethmask}:${gateway}"
ETHSArray[$ETHNUM]="$eth"
ETHINFOArray[$ETHNUM]="$ethinfo"
ETHNUM=`expr $ETHNUM + 1`
# ETHS为空字符串
if [ "-$ETHS" == "-" ]
then
ETHS="${eth}"
else
ETHS="${ETHS}#${eth}"
fi
# ETHINFO为空字符串
if [ "-$ETHINFO" == "-" ]
then
ETHINFO="${ethinfo}"
else
ETHINFO="${ETHINFO}#${ethinfo}"
fi
fi
done
return 0
}
function modifyIP
{
# 保证输入4个参数
if [ $# -ne 4 ]; then
echo "The parameters is not 4!"
return 1
fi
typeset oldIP=$1
typeset newIP=$2
typeset newmask=$3
typeset newgw=$4
# 获取当前网卡信息
getIP
# 判断该原IP是否存在
get_eth_of_IP $oldIP
# 原IP不存在,返回1
if [ $? -ne 0 ]; then
echo "The old IP $oldIP is not exist."
return 1
fi
typeset eth="${ETHSArray[$ETHINDEX]}"
typeset ethinfo="${ETHINFOArray[$ETHINDEX]}"
typeset ethaddr=`echo $ethinfo | awk -F: '{print $1}'`
typeset ethmask=`echo $ethinfo | awk -F: '{print $2}'`
typeset ethgw=`echo $ethinfo | awk -F: '{print $3}'`
# 即时生效方式修改IP
echo "ifconfig $eth $newIP netmask $newmask"
ifconfig $eth $newIP netmask $newmask
if [ "$?" -ne 0 ]; then
echo "Modify old IP $oldIP to new IP $newIP failed."
return 1
fi
# 永久生效方式修改IP
sed "s/$oldIP/$newIP/" /etc/sysconfig/network/ifcfg-$eth > /tmp/ifcfgtemp
sed "s/$ethmask/$newmask/" /tmp/ifcfgtemp > /etc/sysconfig/network/ifcfg-$eth
rm /tmp/ifcfgtemp
#即时生效方式修改网关
route del default
echo "route del default"
route add default gw $newgw dev $eth
echo "route add default gw $newgw dev $eth"
# 永久生效方式修改网关
sed "s/$ethgw/$newgw/" /etc/sysconfig/network/routes > /tmp/routetemp
mv /tmp/routetemp /etc/sysconfig/network/routes
return 0
}
###############################################################
#函数名称:get_eth_of_IP
#功 能:获取IP所在网卡的索引
#输入参数:IP
#返回值:1 没有设置该IP的网卡,0 设置该IP的网卡所在索引。
# 2 传入参数错误
# ETHINDEX值为索引位置
#
###############################################################
function get_eth_of_IP
{
# 保证输入一个参数
if [ $# -ne 1 ]; then
echo "The parameters is not 1!"
return 2
fi
typeset oldIP=$1
typeset ethaddr=""
typeset ethinfo=""
typeset index=0
while [ $index -lt ${#ETHSArray[@]} ]
do
ethinfo="${ETHINFOArray[index]}"
ethaddr=`echo $ethinfo | awk -F: '{print $1}'`
if [ "${ethaddr}" == "${oldIP}" ];then
ETHINDEX=$index
return 0
fi
index=`expr $index + 1`
done
return 1
}
if [ $# -eq 0 ];then
getIP
echo "eas_modify_ip_result = [$ETHINFO]"
#echo $ETHINFO
#echo "]"
exit 0
fi
case $1 in
getip)
getIP
echo "eas_modify_ip_result = ["
echo $ETHINFO
echo "]"
exit 0
;;
modify)
modifyIP $2 $3 $4 $5
exit 0
;;
esac
echo "The parameters are invalid."
exit 0
;;
相关热词:
本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!
本文地址: https://v30.fanwenzhu.com/jiaob/shell/11137.shtml
相关文章
热门TAG
win10 ecshop 主机 阿里云 解决 配置 C# C++ 解析 SQL语句 命令 Go语言 方法 CSS3 HTML5 CSS win7 MSSQL 服务器配置 IIS7.5 IIS7 IIS6 IIS CentOS 7 Linux oracle数据库 oracle phpcms discuz discuz教程最新文章
-
Python2爬虫入门:正则表达
时间:2021-01-11
-
python程序的两种运行方式
时间:2021-01-11
-
Python3爬虫进阶:MySQL存储
时间:2021-01-11
-
python导入模块的关键字是
时间:2021-01-11
-
python去重函数是什么
时间:2021-01-09
-
如何用python爬虫开源项目
时间:2021-01-09
-
Photoshop设计个性笔刷制作
时间:2021-01-09
-
深入理解PHP与WEB服务器交
时间:2021-01-09
热门文章
-
解析shell字段分隔符的用法(图文)
时间:2020-12-22
-
Python3爬虫进阶:MongoDB存储(非关系型数
时间:2020-12-29
-
php如何接收json数据
时间:2021-01-08
-
php ucwords函数怎么用
时间:2021-01-08
-
如何在Linux或者UNIX下调试Bash Shell脚本
时间:2020-12-22
-
python中pow什么意思
时间:2021-01-08
-
如何在python数据挖掘使用pandas包?
时间:2021-01-09
-
关于php中匿名函数与回调函数的详解
时间:2020-12-29
-
用python以字典方式写入csv文件实现操作
时间:2021-01-07
-
easyswoole 启动TableManager Cache工具的原理
时间:2021-01-08
