python的PEXPECT模組進行交換機配置檔案的自動備份
阿新 • • 發佈:2019-01-05
這篇文章的正確性,沒有細細分析,但是知識點是好的:
#!/usr/bin/python import sys import time import os import pexpect now = time.strftime("%y%m%d", time.localtime()) #取得系統日期 os.mkdir("/var/ftp/%s" % now, 0777) #建立目錄 os.chmod("/var/ftp/%s" % now, 0777) #更改目錄許可權 aa = open ('/var/ftp/%s/log.txt' % now, "w") #開啟日誌 fout = open ('log.txt', "w") IP = open('1','r') #IP地址存放的檔案 PASS = open('2','r') #PASSWORD存放的檔案 while 1: READIP = IP.readline() #讀取IP第一行 READPASS = PASS.readline() #讀取PASSWORD第一行 if not READIP: #如果讀完IPFILE最後一行,就跳出迴圈 print 'END' break path = now + '/' + READIP foo = pexpect.spawn('telnet %s' % READIP) 建立連線 foo.log_file = fout foo.expect(['Username:']) #等待字串'Username:' foo.sendline('admin') #輸出admin foo.expect(['Password:']) foo.sendline('admin') foo.sendline('en') foo.expect(['Password:']) foo.sendline(READPASS) #輸出PASSWORD foo.expect(['#']) foo.sendline('copy flash:config.text ftp:') #通過FTP備份配置檔案 foo.expect(['Address or name of remote host']) foo.sendline('192.168.52.3') #FTP SERVER foo.expect(['config.text']) foo.sendline(path) #FTP上傳名 a = foo.expect (['bytes/sec', 'Error', pexpect.EOF, pexpect.TIMEOUT) if a == 0: aa.write('%s......ok\n' % READIP) foo.expect(['#']) foo.sendline('quit') if a == 1: aa.write('%s......failed\n' % READIP) foo.sendline('quit') foo.expect(['closed']) foo.interact # if not READIP: #(移動此3行至16行) # print 'END' #(移動此3行至16行) # break #(移動此3行至16行) print 'done'
後面重寫的一段程式碼:
#!/usr/bin/env python #coding:UTF-8 #ipfile記錄三行ip地址: #分別是192.168.1.1-192.168.1.3 ip=open('ipfile','r') #pwfile三行密碼: #分別是password_in_line1-password_in_line3 passWord=open('pwfile','r') while 1: readIp=ip.readline() readPass=passWord.readline() print readIp print readPass if not readIp: print 'All have done whithout ERROR!' break print "Test Over!"