UNIX shell获取IP和修改IP

#!/bin/ksh

#全局变量

#已配置信息的网卡个数

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

;;

unix修改ip和计算机名,UNIX shell获取IP和修改IP相关推荐

  1. gost文件修改计算机电脑名字工具,Ghost后自动修改IP及计算机名方法大全.pdf

    Ghost后自动修改IP及计算机名方法大全.pdf Ghost 后自动修改IP及计算机名方法大全 方法一:使用ModiIP 工作原理: 1.客户机全部使用 DHCP 方式获取 IP 地址.由 DHCP ...

  2. 网络克隆自动修改计算机名ip,关于 Ghost 网络克隆后自动修改 IP 及计算机名的方法.doc...

    关于 Ghost 网络克隆后自动修改 IP 及计算机名的方法 关于 Ghost 网络克隆后自动修改 IP 及计算机名的方法最近机房要大批量安装 XP 系统,考虑到种种因素,还是决定采用较成熟的 PXE ...

  3. 查看及更改计算机名或域,如何查看和修改计算机名、域和工作组

    计算机名是唯一的权次于IP地址的一个设置,在一个局域网内,出现两个IP相同的IP地址的话,那么肯定有一 台电脑上不了网. 4而出现两个相同的计算机名的话,同样是有一台电脑是不可能上网的. 出现这种情况 ...

  4. 电脑服务器名称怎么修改,怎么修改云服务器计算机名

    怎么修改云服务器计算机名 内容精选 换一换 将文件上传至Linux服务器一般会采用WinSCP工具.本节为您介绍本地Windows计算机使用WinSCP工具,上传文件至Linux云服务器的操作方法.以 ...

  5. Android 获取本地外网IP、内网IP、计算机名等信息

    一.获取本地外网IP public static String GetNetIp() { URL infoUrl = null; InputStream inStream = null; try { ...

  6. 修改ip和计算机名,批量设置IP地址和计算机名

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 最近由于病毒肆虐,学校的公共机房又瘫痪了,只好利用网络同传把机器全都克隆了一遍,可问题又来啦,每个计算机都要重新设置IP地址.子网掩码.网关和DNS服务器 ...

  7. 域管理中经常用到的组策略禁止修改IP及计算机名

    组策略方法:禁止修改计算机名: 1."运行"->""gpedit.msc"->"用户配置"->"管理摸 ...

  8. 计算机名ip地址批量修改吗,怎么批量修改IP和计算机名

    @echo off for /f tokens=2 delims=: %%i in ('ipconfig /all ^| findstr /i /c:ip address') do set ip=%% ...

  9. 自动修改域用户计算机名,Windows自动改计算机名和加入域工具

    单位最近要换一批电脑,没钱买高大上的软件,也不准用三方工具. 先写个自动设置计算机名和加域的小工具,压压惊. 功能: 完成系统设置的最后一步,改计算机名,和加入域. 工作方式: 半自动,中途需要手动输 ...

最新文章

  1. ACMNO.10打印出所有水仙花数,所谓水仙花数是指一个三位数,其各位数字立方和等于该本身。 例如:153是一个水仙花数,因为153=1^3+5^3+3^3。 Output: 153 ???
  2. source insight 里编辑的时候,每次粘贴后,光标停留在粘贴内容的左面
  3. 一起谈.NET技术,在Mono 2.8上部署ASP.NET MVC 2
  4. Android开发——跟随手指的小球实现
  5. 细说伟哥那些你不知道的神奇用途
  6. DataX配置及使用
  7. 简书java前端_Java前端知识之JSP
  8. 伺服电机常用参数设置_安川伺服电机参数基本调整..doc
  9. 【点击模型学习笔记】Modeling contextual factors of click rates_MS_AAAI2007
  10. Redis文档链接(含官方中文)
  11. oracle查询备份存储路径,Oracle数据库备份和恢复(导出,导入)
  12. 个体营业执照与公司营业执照的区别
  13. java登录界面圆形头像_Bootstrap实现圆角、圆形头像和响应式图片
  14. vc 键盘按键KeyValue值
  15. 学会这两招将知网下载的CAJ转成Word形式
  16. 上行30m下行200m是多少宽带_套餐内有多少流量,就加送多少流量!电信流量攻势太凶猛!...
  17. 微信网页授权登录的方法
  18. K8s使用Ceph纠删码池做持久化卷
  19. 读取excel批量生成二维码
  20. 实战派来了!聊聊百度智能运维的“前世今生” | 技术沙龙

热门文章

  1. 【设计模式】前端控制器模式
  2. C++获取站点的ip地址
  3. SQLserver 2000 重新安装挂起的解决方法
  4. 微软Citrix合作虚拟化联手对抗VMware
  5. 污水处理厂数字监控系统解决方案
  6. linux 查看发行版 名称 版本号
  7. golang rune类型简介
  8. web 容器 Jetty 简介
  9. python 找不到ssl模块问题 no module named _ssl
  10. linux mailx 发邮件