Audiocodes Gateways Backup Script

Intro

This script is meant to back up Audiocodes gateways that are being managed manually (without using sipXecs)

Prerequisites

You must have python and curl installed and create the file: /etc/cron.daily/current_devices.csv

CSV format

The CSV format that is used to determine the gateway is as follows:

IP address

Descriptive Gateway Name

username

password

Device Location

192.168.1.4

Tech-Services-MP114-FXO

admin

password

Information Technology

So the csv would look like:

current_devices.csv
192.168.1.4,Tech-Services-MP114-FXO,admin,password,Information Technology

The Script

voip_backup.py
#!/usr/bin/python

import csv
import string
import os
import sys
import time
import datetime

today = datetime.date.today()
csv_filename = '/etc/cron.daily/current_devices.csv'
backup_dir = '/var/sipxdata/backup/external'
datecode = str(today.strftime('%Y%m%d'))

csv_dump = []
reader = csv.reader(open(csv_filename),delimiter=',')
for row in reader:
	csv_attrib={}
	csv_attrib["IP"] = row[0]
	csv_attrib["name"] = row[1]
	csv_attrib["username"] = row[2]
	csv_attrib["password"] = row[3]
	csv_attrib["location"] = row[4]
	csv_dump.append(csv_attrib)
	
r = 1

while r < len(csv_dump):
	if (os.path.exists(backup_dir + '/' + datecode + '/' + csv_dump[r]["location"]) == False):
		print "Directory doesn't exist....creating..."
		os.makedirs(backup_dir + '/' + datecode + '/' + csv_dump[r]["location"], 0755)
	if (os.path.isfile(backup_dir + '/' + datecode + '/' + csv_dump[r]["location"] + '/' + csv_dump[r]["name"] + '.ini') == True):
		print "File exists, removing..."
		os.remove(backup_dir + '/' + datecode + '/' + csv_dump[r]["location"] + '/' + csv_dump[r]["name"] + '.ini')
	os.system('curl --digest -C - -o ' + backup_dir + '/' + datecode + '/' + csv_dump[r]["location"] + '/' + csv_dump[r]["name"] + '.ini http://' + csv_dump[r]["username"] + ':' + csv_dump[r]["password"] + '@' + csv_dump[r]["IP"] + '/FS/BOARD.ini')
	r = r + 1

The code is attached here: voip_backup.py

If you want to do a daily backup simply place this script and the CSV file into /etc/cron.daily and make the script executable:

chmod +x /etc/cron.daily/voip_backup.py