python腳本修改hosts文件

記一次使用python腳原本修改hosts文件,因爲公司服務器須要換ip地址,服務器裏都是Linux系統,而hosts文件中有些解析的ip,手動一臺一臺的解析太麻煩,就寫了這個腳本。原本覺得感受很簡單,可是寫的過程真很差寫,也試過shell腳本,不過也很差寫。而後就直接用python寫,也找了一些網上的教程,不過也沒有很好的解決問題。下面把腳本貼出來記錄下python

#!/usr/bin/python
#coding:utf8
import os
import sys
import re

hostsfile="/etc/hosts"  #hosts文件絕對路徑

ip_dict = {"1.1.1.1":"2.2.2.1","1.1.1.2":"2.2.2.2","1.1.1.3":"2.2.2.3"}  #這是自定義的字典形式爲:old_ip:new_ip

ip = [] #定一個空列表,來存儲old_ip的列表
Line=[] # 定一個空列表,來存儲修改後的hosts文件內容的列表

fd = open(hostsfile).readlines()  #打開文件

#用for循環獲得old_ip的列表
for old_ip in ip_dict.keys():
    ip.append(old_ip)

#用for循環列出每一行,並進行匹配old_ip 若是匹配到就使用re.sub()進行替換。並存儲在Line這個列表中
for line in fd:
    if line.strip() == '':
        #continue
        Line.append(line) ##若是是空行也加入列表中,保證文件內容與原內容形式一致
    else:
        h_ip = line.strip().split()[0] ##取得hosts文件中的ip地址
        if h_ip in ip:
            lin = re.sub(h_ip,ip_dict[h_ip],line) #若是匹配到就進行替換
            print "文件修改的內容以下:"
            print "%s --> %s" %(line.strip("\n"),lin)
            Line.append(lin)
        else:
            Line.append(line)

#最後獲得Line列表
#從新把列表的內容寫入到/etc/hosts文件中
fc = open(hostsfile,'w')
fc.writelines(Line)
fc.close()
相關文章
相關標籤/搜索