1. 程式人生 > >python的PEXPECT模組進行交換機配置檔案的自動備份

python的PEXPECT模組進行交換機配置檔案的自動備份

這篇文章的正確性,沒有細細分析,但是知識點是好的:

#!/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!"