通过python自动化

时间:2019-06-19 23:31:33

标签: python-3.x

完全是python的新手,如果这是一个愚蠢的问题,请原谅我。 我的部分工作任务是升级各种Cisco路由器和交换机上的IOS。 最令人麻木的部分是比较更改前的配置和更改后的配置。 我为此使用ExamDiff,但每晚最多使用100台设备,这会破坏灵魂。 是否可以让python打开ExamDiff并自动比较前后检查,将差异保存到每个设备的文件中? 我知道我可以使用import os命令打开ExamDiff,但我不知道如何使ExamDiff工作

有人可以指出我正确的方向吗?

谢谢

1 个答案:

答案 0 :(得分:0)

我明白了....... 效果很好

#!/usr/bin/python
import os

path  = input("Enter the files location: ")

def nexus():
    rootdir = path + os.sep 
    filelist = os.listdir(rootdir)
    if filelist:
        for file in filelist:
            if 'pre' in file:
                prefile = file
                postfile = file.replace('pre', 'post')
                resultfile = file.replace('pre', 'report')
                if postfile in filelist:
                    prefile = rootdir + prefile
                    postfile = rootdir + postfile
                    resultfile = rootdir + resultfile
                    compare(prefile, postfile, resultfile)
                else:
                    print('No corresponding "post"-file to {0}.'.format(prefile))
    else:
        print('No files found.')


def compare(file1loc, file2loc, comparefileloc):

    with open(file1loc, 'r') as file1:
        file1lines = file1.readlines()
        file1lines = [x.strip() for x in file1lines]  # getting rid of whitespace and breaks
    with open(file2loc, 'r') as file2:
        file2lines = file2.readlines()
        file2lines = [x.strip() for x in file2lines]  # getting rid of whitespace and breaks

    with open(comparefileloc, 'w') as comparefile:
        comparefile.write('===== IN FILE 1 BUT NOT FILE 2 =====\r\n')
        for file1line in file1lines:
            if not file1line in file2lines:
                comparefile.write(file1line + '\r\n')
        comparefile.write('\r\n')
        comparefile.write('===== IN FILE 2 BUT NOT FILE 1 =====\r\n')
        for file2line in file2lines:
            if not file2line in file1lines:
                comparefile.write(file2line + '\r\n')


if __name__ == '__main__':
    nexus()