#! /usr/bin/python # ZyXEL DSLAM Configuration Backup # (c) 2013 by niston cloud # http://niston.wordpress.com # Released under a MIT License import os import csv import subprocess dslamUser = "username" dslamPass = "password" with open('dslams.csv', 'rb') as csvfile: x = csv.reader(csvfile, delimiter=',', quotechar='|') for row in x: dslam = list(row) dslamName = dslam[0].strip() dslamAddr = dslam[1].strip() print 'DSLAM Name: ', dslamName print 'DSLAM Addr: ', dslamAddr # authorize with dslam print 'Authenticating with DSLAM....' cmdargs = "--auth-no-challenge -t 5 --http-user=" + dslamUser + " --http-password=" + dslamPass + " http://" + dslamAddr + "/config-0_.dat -O /dev/null" # loop until authenticated (due to a flaw in zyxel OS, several attempts may be required) data = "" while not ('200 OK' in data): task = subprocess.Popen("wget " + cmdargs, shell=True, stdout=None, stderr=subprocess.PIPE) # wait for auth task to finish (ATTN: wget logs to STDERR!) dummy, data = task.communicate() # download config file os.system("wget --auth-no-challenge -t 5 --http-user=" + dslamUser + " --http-password=" + dslamPass + " -O '" + dslamName + "_'`date +%Y%m%d%H%M`'.dat' http://" + dslamAddr + "/config-0_.dat") print '-----------------------' print ''