天天看点

python脚本修改hosts文件

记一次使用python脚本来修改hosts文件,由于公司服务器需要换ip地址,服务器里都是Linux系统,而hosts文件中有些解析的ip,手动一台一台的解析太麻烦,就写了这个脚本。本来以为感觉很简单,但是写的过程真不好写,也试过shell脚本,不过也不好写。然后就直接用python写,也找了一些网上的教程,不过也没有很好的解决问题。下面把脚本贴出来记录下

1

2

3

4

5

6

7

8

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

<code>#!/usr/bin/python</code>

<code>#coding:utf8</code>

<code>import</code> <code>os</code>

<code>import</code> <code>sys</code>

<code>import</code> <code>re</code>

<code>hostsfile</code><code>=</code><code>"/etc/hosts"</code>  <code>#hosts文件绝对路径</code>

<code>ip_dict </code><code>=</code> <code>{</code><code>"1.1.1.1"</code><code>:</code><code>"2.2.2.1"</code><code>,</code><code>"1.1.1.2"</code><code>:</code><code>"2.2.2.2"</code><code>,</code><code>"1.1.1.3"</code><code>:</code><code>"2.2.2.3"</code><code>}  </code><code>#这是自定义的字典形式为:old_ip:new_ip</code>

<code>ip </code><code>=</code> <code>[] </code><code>#定一个空列表,来存储old_ip的列表</code>

<code>Line</code><code>=</code><code>[] </code><code># 定一个空列表,来存储修改后的hosts文件内容的列表</code>

<code>fd </code><code>=</code> <code>open</code><code>(hostsfile).readlines()  </code><code>#打开文件</code>

<code>#用for循环得到old_ip的列表</code>

<code>for</code> <code>old_ip </code><code>in</code> <code>ip_dict.keys():</code>

<code>    </code><code>ip.append(old_ip)</code>

<code>#用for循环列出每一行,并进行匹配old_ip 如果匹配到就使用re.sub()进行替换。并存储在Line这个列表中</code>

<code>for</code> <code>line </code><code>in</code> <code>fd:</code>

<code>    </code><code>if</code> <code>line.strip() </code><code>=</code><code>=</code> <code>'':</code>

<code>        </code><code>#continue</code>

<code>        </code><code>Line.append(line) </code><code>##如果是空行也加入列表中,保证文件内容与原内容形式一致</code>

<code>    </code><code>else</code><code>:</code>

<code>        </code><code>h_ip </code><code>=</code> <code>line.strip().split()[</code><code>0</code><code>] </code><code>##取得hosts文件中的ip地址</code>

<code>        </code><code>if</code> <code>h_ip </code><code>in</code> <code>ip:</code>

<code>            </code><code>lin </code><code>=</code> <code>re.sub(h_ip,ip_dict[h_ip],line) </code><code>#如果匹配到就进行替换</code>

<code>            </code><code>print</code> <code>"文件修改的内容如下:"</code>

<code>            </code><code>print</code> <code>"%s --&gt; %s"</code> <code>%</code><code>(line.strip(</code><code>"\n"</code><code>),lin)</code>

<code>            </code><code>Line.append(lin)</code>

<code>        </code><code>else</code><code>:</code>

<code>            </code><code>Line.append(line)</code>

<code>#最后得到Line列表</code>

<code>#重新把列表的内容写入到/etc/hosts文件中</code>

<code>fc </code><code>=</code> <code>open</code><code>(hostsfile,</code><code>'w'</code><code>)</code>

<code>fc.writelines(Line)</code>

<code>fc.close()</code>

本文转自 ZhouLS 51CTO博客,原文链接:http://blog.51cto.com/zhou123/1710459