最近在笔记本重新安装了虚拟机,由于在家在公司经常需要切换IP,修改IP配置文件,觉得挺繁琐的,所以就索性的写了一个自动切换IP的脚本,主要是读配置文件修改,详情如下:
1、创建配置文件:
1
2
3
4
5
6
7
8
<code># cat ip.conf</code>
<code>[home]</code>
<code>ip </code><code>=</code> <code>192.168</code><code>.</code><code>7.150</code>
<code>gateway </code><code>=</code> <code>192.168</code><code>.</code><code>7.1</code>
<code>[work]</code>
<code>ip </code><code>=</code> <code>10.7</code><code>.</code><code>93.150</code>
<code>gateway </code><code>=</code> <code>10.7</code><code>.</code><code>93.1</code>
2、脚本实例
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<code>#!/usr/bin/env python</code>
<code># conding = utf-8</code>
<code># finame swtch_ip.py</code>
<code># This is swtch ip python file</code>
<code>import</code> <code>socket,os,sys</code>
<code>import</code> <code>ConfigParser</code>
<code>import</code> <code>time</code>
<code>from</code> <code>optparse </code><code>import</code> <code>OptionParser</code>
<code>def</code> <code>init():</code>
<code> </code><code>global</code> <code>IPS</code>
<code> </code><code>global</code> <code>GATEWAYS</code>
<code> </code><code>config </code><code>=</code> <code>ConfigParser.ConfigParser()</code>
<code> </code><code>dir</code> <code>=</code> <code>os.path.dirname(os.path.abspath(__file__))</code>
<code> </code><code>conf </code><code>=</code> <code>dir</code> <code>+</code> <code>"/conf"</code>
<code> </code><code>filepath </code><code>=</code> <code>"%s/ip.conf"</code> <code>%</code><code>(conf)</code>
<code> </code><code>if</code> <code>not</code> <code>os.path.exists(filepath):</code>
<code> </code><code>raise</code> <code>"ERROR: ip.conf is not it!"</code>
<code> </code><code>config.read(filepath)</code>
<code> </code><code>IPS </code><code>=</code> <code>config.get(options.</code><code>type</code><code>,</code><code>"ip"</code><code>)</code>
<code> </code><code>GATEWAYS </code><code>=</code> <code>config.get(options.</code><code>type</code><code>,</code><code>"gateway"</code><code>)</code>
<code> </code><code>print</code> <code>"======[%s] Start get new options,please wait... ======"</code> <code>%</code><code>(options.</code><code>type</code><code>)</code>
<code> </code><code>print</code> <code>"%s config file ip is %s,gateway is %s"</code> <code>%</code><code>(options.</code><code>type</code><code>,IPS,GATEWAYS)</code>
<code>def</code> <code>getopts():</code>
<code> </code><code>MSG_USAGE</code><code>=</code><code>'''python %s -t home'''</code> <code>%</code> <code>sys.argv[</code><code>0</code><code>]</code>
<code> </code><code>optParser</code><code>=</code><code>OptionParser(MSG_USAGE)</code>
<code> </code><code>optParser.add_option(</code><code>'-t'</code><code>,action</code><code>=</code><code>'store'</code><code>,</code><code>type</code><code>=</code><code>'string'</code><code>,dest</code><code>=</code><code>'type'</code><code>,default</code><code>=</code><code>'work'</code><code>,</code><code>help</code><code>=</code><code>u</code><code>'type:work,home'</code><code>)</code>
<code> </code><code>(options,args)</code><code>=</code><code>optParser.parse_args()</code>
<code> </code><code>return</code> <code>options</code>
<code>def</code> <code>ipconfig():</code>
<code> </code><code>ipconfigfile </code><code>=</code> <code>open</code><code>(</code><code>'/etc/sysconfig/network-scripts/ifcfg-eth0'</code><code>,</code><code>'r'</code><code>)</code>
<code> </code><code>while</code> <code>True</code><code>:</code>
<code> </code><code>ipconfiglines </code><code>=</code> <code>ipconfigfile.readlines()</code>
<code> </code><code>if</code> <code>not</code> <code>ipconfiglines:</code>
<code> </code><code>break</code>
<code> </code><code>#ipconfigfile.close()</code>
<code> </code><code>if</code> <code>"IPADDR"</code> <code>in</code> <code>ipconfiglines[</code><code>4</code><code>] </code><code>and</code> <code>"GATEWAY"</code> <code>in</code> <code>ipconfiglines[</code><code>3</code><code>]:</code>
<code> </code><code>print</code> <code>"====== Change IP and GATEWAY, please wait... ======"</code>
<code> </code><code>temp </code><code>=</code> <code>ipconfiglines[</code><code>4</code><code>].split(</code><code>'\"'</code><code>)</code>
<code> </code><code>a </code><code>=</code> <code>temp[</code><code>1</code><code>]</code>
<code> </code><code>temp1 </code><code>=</code> <code>ipconfiglines[</code><code>3</code><code>].split(</code><code>'\"'</code><code>)</code>
<code> </code><code>b </code><code>=</code> <code>temp1[</code><code>1</code><code>]</code>
<code> </code><code>print</code> <code>"ifcfg-et0 config old IP is %s and old GATEWAY is %s"</code> <code>%</code><code>(a,b)</code>
<code> </code><code>edit_file </code><code>=</code> <code>os.system(</code><code>'sed -i "s/'</code><code>+</code><code>a</code><code>+</code><code>'/'</code><code>+</code><code>IPS</code><code>+</code><code>'/g;s/'</code><code>+</code><code>b</code><code>+</code><code>'/'</code><code>+</code><code>GATEWAYS</code><code>+</code><code>'/g" /etc/sysconfig/network-scripts/ifcfg-eth0'</code><code>)</code>
<code> </code><code>if</code> <code>edit_file </code><code>=</code><code>=</code> <code>0</code><code>:</code>
<code> </code><code>print</code> <code>'Edit ifcfg-eth0 ip and gateway is OK,restart network restart'</code>
<code> </code><code>restart_network </code><code>=</code> <code>os.system(</code><code>'/etc/init.d/network restart'</code><code>)</code>
<code> </code><code>if</code> <code>restart_network </code><code>=</code><code>=</code> <code>0</code><code>:</code>
<code> </code><code>print</code> <code>"Network restart Succ!"</code>
<code> </code><code>else</code><code>:</code>
<code> </code><code>print</code> <code>"Network restart Fail!"</code>
<code> </code><code>else</code><code>:</code>
<code> </code><code>print</code> <code>'Edit ifcfg-eth0 ip is ERROR'</code>
<code> </code><code>else</code><code>:</code>
<code> </code><code>print</code> <code>"no IP address and GATEWAY!!!"</code>
<code>if</code> <code>__name__ </code><code>=</code><code>=</code> <code>'__main__'</code><code>:</code>
<code> </code><code>if</code> <code>len</code><code>(sys.argv)<</code><code>1</code> <code>and</code> <code>sys.argv[</code><code>1</code><code>] !</code><code>=</code> <code>'-h'</code> <code>and</code> <code>sys.argv[</code><code>1</code><code>] !</code><code>=</code> <code>'--help'</code><code>:</code>
<code> </code><code>print</code> <code>'''Usage: python %s -t work</code>
<code> </code><code>python %s -h|--help'''</code> <code>%</code> <code>(sys.argv[</code><code>0</code><code>],sys.argv[</code><code>0</code><code>])</code>
<code> </code><code>sys.exit(</code><code>1</code><code>)</code>
<code> </code><code>options </code><code>=</code> <code>getopts()</code>
<code> </code><code>init()</code>
<code> </code><code>ipconfig()</code>
3、查看帮助
<code># python swich_ip.py --help</code>
<code>Usage: python swich_ip.py </code><code>-</code><code>t home</code>
<code>Options:</code>
<code> </code><code>-</code><code>h, </code><code>-</code><code>-</code><code>help</code> <code>show this </code><code>help</code> <code>message </code><code>and</code> <code>exit</code>
<code> </code><code>-</code><code>t </code><code>TYPE</code> <code>type</code><code>:work,home</code>
4、运行测试
<code># python swich_ip.py -t home</code>
<code>=</code><code>=</code><code>=</code><code>=</code><code>=</code><code>=</code><code>[home] Start get new options,please wait... </code><code>=</code><code>=</code><code>=</code><code>=</code><code>=</code><code>=</code>
<code>home config </code><code>file</code> <code>ip </code><code>is</code> <code>192.168</code><code>.</code><code>7.250</code><code>,gateway </code><code>is</code> <code>192.168</code><code>.</code><code>7.1</code>
<code>=</code><code>=</code><code>=</code><code>=</code><code>=</code><code>=</code> <code>Change IP </code><code>and</code> <code>GATEWAY, please wait... </code><code>=</code><code>=</code><code>=</code><code>=</code><code>=</code><code>=</code>
<code>ifcfg</code><code>-</code><code>et0 config old IP </code><code>is</code> <code>192.168</code><code>.</code><code>7.250</code> <code>and</code> <code>old GATEWAY </code><code>is</code> <code>192.168</code><code>.</code><code>7.1</code>
<code>Edit ifcfg</code><code>-</code><code>eth0 ip </code><code>and</code> <code>gateway </code><code>is</code> <code>OK,restart network restart</code>
<code>正在关闭接口 eth0: [确定]</code>
<code>关闭环回接口: [确定]</code>
<code>弹出环回接口: [确定]</code>
<code>弹出界面 eth0: [确定]</code>
<code>Network restart Succ!</code>
5、结果
<code># cat /etc/sysconfig/network-scripts/ifcfg-eth0</code>
<code>DEVICE</code><code>=</code><code>"eth0"</code>
<code>ONBOOT</code><code>=</code><code>"yes"</code>
<code>BOOTPROTO</code><code>=</code><code>"static"</code>
<code>GATEWAY</code><code>=</code><code>"192.168.7.1"</code>
<code>IPADDR</code><code>=</code><code>"192.168.7.250"</code>
本文转自 kuangling 51CTO博客,原文链接:http://blog.51cto.com/kling/1606396