免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5331 | 回复: 18
打印 上一主题 下一主题

[系统管理] SHELL脚本配置网卡eth0,IP,GW [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2017-05-03 17:31 |只看该作者 |倒序浏览
本帖最后由 sea_smart 于 2017-05-17 16:27 编辑

LZ是菜鸟一个,请教各位大虾!
我想写一个SHELL脚本,实现修改Linux服务器配置IP ,网关,开机启动,静态网址(想着做出交互,让自己输入,但是技术浅薄写了如下)求大虾指点;

BOOTPROTO(存在即设置为static,不存在网网卡里面追加)
ONBOOT(存在设置为yes,不存在往里追加)
IP(替换成自己要修改的地址)
但是我每执行一次就往网卡里重复累计追加一次(为啥不是替换原来的/(ㄒoㄒ)/~~)

#!/bin/bash
grep -i "BOOTPROTO" /etc/sysconfig/network-scripts/ifcfg-eth0
if [$? -eq 0]
then sed -i s'/BOOTPROTO.*/BOOTPROTO=static/'g /etc/sysconfig/network-scripts/ifcfg-eth0
else
  echo "BOOTPROTO=static">> /etc/sysconfig/network-scripts/ifcfg-eth0
fi
grep -i "ONBOOT.*" /etc/sysconfig/network-scripts/ifcfg-eth0
if [$? -eq 0]
then sed -i s'/ONBOOT.*/ONBOOT=yes/'g /etc/sysconfig/network-scripts/ifcfg-eth0
else
  echo "ONBOOT=yes">> /etc/sysconfig/network-scripts/ifcfg-eth0
fi
grep -i "IPADDR.*" /etc/sysconfig/network-scripts/ifcfg-eth0
if [$? -eq 0]
        then sed -i s'/IPADDR.*/IPADDR=101.0.1.1/'g /etc/sysconfig/network-scripts/ifcfg-eth0
else  echo "IPADDR=10.0.1.1">> /etc/sysconfig/network-scripts/ifcfg-eth0
fi
grep -i "NETMASK.*" /etc/sysconfig/network-scripts/ifcfg-eth0
if [$? -eq 0]
        then sed -i s'/NETMASK.*/NETMASK=255.255.255.0/'g /etc/sysconfig/network-scripts/ifcfg-eth0
else
        echo "NETMASK=255.255.255.0">> /etc/sysconfig/network-scripts/ifcfg-eth0
fi
grep -i "gateway.*" /etc/sysconfig/network-scripts/ifcfg-eth0
if [$? eq 0]
        then sed -i s'/GATEWAY.*/GATEWAY=168.192.1.1/'g /etc/sysconfig/network-scripts/ifcfg-eth0
else
        echo "GATEWAY=192.168.1.1">>/etc/sysconfig/network-scripts/ifcfg-eth0
fi
exit

得到的结果是:(求大虾指导一下




ip2.png (4.48 KB, 下载次数: 47)

ip2.png

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
2 [报告]
发表于 2017-05-03 19:30 |只看该作者
回复 1# sea_smart

It's hard to know what you want

论坛徽章:
0
3 [报告]
发表于 2017-05-03 22:29 |只看该作者
回复 2# jason680

比如:新安装的Linux系统或者说没有网卡,现在添加网卡eth0,我需要往里面添加这些内容:
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.1.200
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
DNS1=202.96.134.33
DNS2=202.96.128.89

当然了,可以用vi  eth0进行编辑,但是如果是100台新的server呢?
想实现执行(交互)脚本:
                该网卡eth0 IPADDR已经存在是否修改(新IP替换旧的)
                 该网卡 eth0 IPADDR不存在添加新的IP

可能上面描述的不是很清楚,但是还是感谢大神的回答,O(∩_∩)O谢谢

论坛徽章:
20
程序设计版块每日发帖之星
日期:2015-10-11 06:20:0015-16赛季CBA联赛之山东
日期:2016-05-28 18:18:5615-16赛季CBA联赛之新疆
日期:2017-04-12 22:55:4715-16赛季CBA联赛之青岛
日期:2017-06-26 18:30:0315-16赛季CBA联赛之四川
日期:2017-09-04 12:27:0315-16赛季CBA联赛之福建
日期:2018-02-09 14:28:3315-16赛季CBA联赛之同曦
日期:2018-04-17 12:43:3415-16赛季CBA联赛之浙江
日期:2018-07-14 13:27:4015-16赛季CBA联赛之吉林
日期:2018-09-13 15:48:2915-16赛季CBA联赛之新疆
日期:2016-05-07 05:05:3215-16赛季CBA联赛之八一
日期:2016-03-14 12:32:06程序设计版块每日发帖之星
日期:2015-12-12 06:20:00
4 [报告]
发表于 2017-05-04 01:54 |只看该作者
这样交互目测比你vi效率更低

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
5 [报告]
发表于 2017-05-04 16:10 |只看该作者
回复 1# sea_smart

grep -i "BOOTPROTO" /etc/sysconfig/network-scripts/ifcfg-eth0
if [$? -eq 0]
then sed -i s'/BOOTPROTO.*/BOOTPROTO=static/'g /etc/sysconfig/network-scripts/ifcfg-eth0
else
  echo "BOOTPROTO=static">> /etc/sysconfig/network-scripts/ifcfg-eth0
fi

1. grep with -q
2. insert the space

grep -qi "BOOTPROTO" /etc/sysconfig/network-scripts/ifcfg-eth0
if [ $? -eq 0 ]; then
sed -i s'/BOOTPROTO.*/BOOTPROTO=static/'g /etc/sysconfig/network-scripts/ifcfg-eth0
else
  echo "BOOTPROTO=static">> /etc/sysconfig/network-scripts/ifcfg-eth0
fi


论坛徽章:
0
6 [报告]
发表于 2017-05-04 17:28 |只看该作者
我觉得没有必要判断 不管有没有你都可以覆盖原来的内容进行重定向用 ">" 给你一个我常用的脚本
#!/bin/bash
echo "please input eth type [eth0|eth1|eth2|eth3]"
read eth
echo "please input ip"
read ip
echo "please input gateway"
read gw
echo "HWADDR=`ifconfig | awk '/'$eth'/{print $5}'`" > /etc/sysconfig/network-scripts/ifcfg-$eth
echo "TYPE=Ethernet" >> /etc/sysconfig/network-scripts/ifcfg-$eth
echo "BOOTPROTO=none" >> /etc/sysconfig/network-scripts/ifcfg-$eth
echo "IPADDR=$ip" >> /etc/sysconfig/network-scripts/ifcfg-$eth
echo "PREFIX=24" >> /etc/sysconfig/network-scripts/ifcfg-$eth
echo "GATEWAY=$gw" >> /etc/sysconfig/network-scripts/ifcfg-$eth
echo "DEFROUTE=yes" >> /etc/sysconfig/network-scripts/ifcfg-$eth
echo "NAME="$eth"" >> /etc/sysconfig/network-scripts/ifcfg-$eth
echo "ONBOOT=yes" >> /etc/sysconfig/network-scripts/ifcfg-$eth
echo "nameserver 114.114.114.114" >> /etc/resolv.conf
echo "NM_CONTROLLED=no" >> /etc/sysconfig/network-scripts/ifcfg-$eth
service network restart
sleep 7
ifconfigv
不同操作系统不一样 你自己看着改一下就可以了

论坛徽章:
0
7 [报告]
发表于 2017-05-04 17:29 |只看该作者
我觉得没有必要判断 不管有没有你都可以覆盖原来的内容进行重定向用 ">" 给你一个我常用的脚本
#!/bin/bash
echo "please input eth type [eth0|eth1|eth2|eth3]"
read eth
echo "please input ip"
read ip
echo "please input gateway"
read gw
echo "HWADDR=`ifconfig | awk '/'$eth'/{print $5}'`" > /etc/sysconfig/network-scripts/ifcfg-$eth
echo "TYPE=Ethernet" >> /etc/sysconfig/network-scripts/ifcfg-$eth
echo "BOOTPROTO=none" >> /etc/sysconfig/network-scripts/ifcfg-$eth
echo "IPADDR=$ip" >> /etc/sysconfig/network-scripts/ifcfg-$eth
echo "PREFIX=24" >> /etc/sysconfig/network-scripts/ifcfg-$eth
echo "GATEWAY=$gw" >> /etc/sysconfig/network-scripts/ifcfg-$eth
echo "DEFROUTE=yes" >> /etc/sysconfig/network-scripts/ifcfg-$eth
echo "NAME="$eth"" >> /etc/sysconfig/network-scripts/ifcfg-$eth
echo "ONBOOT=yes" >> /etc/sysconfig/network-scripts/ifcfg-$eth
echo "nameserver 114.114.114.114" >> /etc/resolv.conf
echo "NM_CONTROLLED=no" >> /etc/sysconfig/network-scripts/ifcfg-$eth
service network restart
sleep 7
ifconfigv
不同操作系统不一样 你自己看着改一下就可以了

论坛徽章:
0
8 [报告]
发表于 2017-05-04 17:29 |只看该作者
我觉得没有必要判断 不管有没有你都可以覆盖原来的内容进行重定向用 ">" 给你一个我常用的脚本
#!/bin/bash
echo "please input eth type [eth0|eth1|eth2|eth3]"
read eth
echo "please input ip"
read ip
echo "please input gateway"
read gw
echo "HWADDR=`ifconfig | awk '/'$eth'/{print $5}'`" > /etc/sysconfig/network-scripts/ifcfg-$eth
echo "TYPE=Ethernet" >> /etc/sysconfig/network-scripts/ifcfg-$eth
echo "BOOTPROTO=none" >> /etc/sysconfig/network-scripts/ifcfg-$eth
echo "IPADDR=$ip" >> /etc/sysconfig/network-scripts/ifcfg-$eth
echo "PREFIX=24" >> /etc/sysconfig/network-scripts/ifcfg-$eth
echo "GATEWAY=$gw" >> /etc/sysconfig/network-scripts/ifcfg-$eth
echo "DEFROUTE=yes" >> /etc/sysconfig/network-scripts/ifcfg-$eth
echo "NAME="$eth"" >> /etc/sysconfig/network-scripts/ifcfg-$eth
echo "ONBOOT=yes" >> /etc/sysconfig/network-scripts/ifcfg-$eth
echo "nameserver 114.114.114.114" >> /etc/resolv.conf
echo "NM_CONTROLLED=no" >> /etc/sysconfig/network-scripts/ifcfg-$eth
service network restart
sleep 7
ifconfigv
不同操作系统不一样 你自己看着改一下就可以了

论坛徽章:
2
综合交流区版块每日发帖之星
日期:2016-07-06 06:20:00综合交流区版块每日发帖之星
日期:2016-08-16 06:20:00
9 [报告]
发表于 2017-05-05 11:04 |只看该作者
收藏了,感谢楼主的无私分享

论坛徽章:
0
10 [报告]
发表于 2017-05-17 09:14 |只看该作者
回复 4# baby_神

感谢回答,但是个人觉得多台server配置时通过脚本还是比vi 有效率点
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP