天天看點

Python IP切換

       最近在筆記本重新安裝了虛拟機,由于在家在公司經常需要切換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)&lt;</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