I wanted to automatically backup the configuration of our AudioCodes devices because I always forget to save the configuration file via the web interface before or after doing changes. Searching the net did not give any suitable solutions. There was only one guy playing around with trying to do http requests to get the ini file but since AudioCodes changed the whole UI in Version 7 onwards this no longer worked.
I’ve used RANCID for several years to backup my Cisco devices and noticing that AudioCodes uses a similar CLI, I tried to use RANCID for this but it didn’t work as I could not make any modifications to the code. Searching for a successor brought me to oxidized which basically does the same but in a more open and flexible way – Grabbing the configuration on a regular basis and allowing me to view diffs between the versions.

It took me a lot of sweat (and time) to get this working but finally everything is working and you can follow this manual to get it into your environment.


The following steps have been tested on Ubuntu 16.04LTS, You may have to adopt some steps to your operating system.


Install the needed software.

In the next step we need to download the oxidized git repository in the latest version. We cannot install the gem directly, because we need to modify something to get it work properly. (Version <=0.20.0)

If you’re behind a corporate firewall and need to use a proxy server type, you need to tell git to use it first.

Now we can download the repository. This will create a folder “oxidized” in your current working directory.


Beause oxidized by default requires an older version of net::ssh, which is not compatible with AudioCodes devices, we need to edit the built file to change the net::ssh version to 4.1.

Search the following line

and it change to

The next command will build the gem and install net::ssh version 4.1 and not 3.0.2 .

This will build the gem to the folder pkg, from where we can install it with:


Configure Oxidized

Before we can use oxidized we have to configure some basic settings.

First thing is to create a user and a home directory for oxidized as it’s not recommended to run oxidized as root.

I like to keep my config in a central place, therefore I created a folder under /etc where I can put all my configuration files

We will also need a directory where the saved configuration files will be stored. ( This is wher your backups land)

Now we can create a configuration file and put some basic configuration in it.

Here’s an example configuration you can use:

You have to change at least the following lines to fit your environment.


Change this to the IP where the webserver should be reachable.

Change this username and password to match your user for config backup. This credentials will be used on all devices in the group “sbc”:


Define where oxidized will put the backed up files. In this case we’ll use git to save our configs, the will allow us to enable versioning and see differences. If you’ll use plain files it’ll always update the file with the latest version. The user will only specify a username within the git repository, same as E-Mail, it doesn’t realy matter what you enter here.


Now we need to define where oxidized will find the list of hostnames it should backup. In this case we use CSV and the file is /etc/oxidized/router.db. Each line in the file will be one host. For each host we have a mapping defined here – first entry is name, second model and third group. Each value will be separated by “:”.


On my system, reading the router.db from an other place then /home/oxidized/.config/oxidized/router.db didn’t work. I therefore needed to create a symbolic link to point to /etc/oxidized/router.db as I wanted to have the config in a more central place.


Here is a basic example of a router.db file


At the time of writing this article the audiocodes.db file is not included in repository, therefore you must create it manually. 

Enter the following commands to create the file and folders and to open an the file for editing. Put in the content you find below.


Here is the content of the audiocodes.rb file.


Basic configuration is now finished, you can now try to logon as the oxidized user and start the service to see if it is running or throwing any exceptions.


When the Service is running, you can reach the webinterface using


If everything is fine and running you can add oxidized as a service, so it’ll automatically start on reboot. To do so, we need to create a configuration file for systemd and add it the configuration.


Add the following content to this file.


The created service now has to be added to systemd configuration. Afterwards we can start and stop the Service using the Service command. This will also start the service automatically on reboot.


To start the Service use:


To stop the Service use:


To see the status type:



Official Oxidized project page

Getting git work behind a proxy-server

Oxidized Tutoral which helped me a lot



Did you ever had the problem that traveling users were calling your ServiceDesk and said “I no longer can access this or that system since yesterday.”  where the reason for this was an expired Windows password? The reason for this is when users are on the road and only establish a VPN connection (which is not related to the AD password) to your site, they will not see the “Your password has expired” screen. If you have this problem or you just think the little notification warning you about your expiring password is not enough this script may help you.

With this script you can notify your users about expiring passwords via E-Mail so they will no longer forget to change their password. If they forget to change it, they can not blame you for not notifying them.

It’s designed to run as a scheduled task but you may also run it on demand. You have pleanty of option to customize the settings to fit your needs. You can have notifications in different languages e.g. you have a lot of subsidiaries.You can also specify the amount of notifications users will receive before the password is going to expire. The email can be easiely customized to fit your personell (or coorporate) design needs.


Active Directory PowerShell Module (this is part of the RSAT (Remote Server Administration Tools)


Unpack the downloaded ZIP and place the files into a folder where you would like to store the script. No other installation is needed.

Execution Policy: Third-party PowerShell scripts may need that the PowerShell Execution Policy be set to either AllSigned, RemoteSigned, or Unrestricted. The default is Restricted, which prevents scripts – even code signed scripts – from running. For more information about setting your Execution Policy, see Using the Set-ExecutionPolicy Cmdlet.


Allows you to specify a path other then the script directory for the config file.


The script is configured using a configuration file. You can find detailed information on the New-PasswordReminder Config Options page. Please copy the configuration file the same folder as the New-PasswordReminder.ps1 file. A sample configuration is provided with the download you may only need to change the settings to fit your environment.

A basic configuration may look like this:

With this configuration you’ll notify your users at 00:00 UTC time when their password will expire in 1,3 or 7 days, the mail will be generated from the template “template_eng.txt”. In this configuration we have enabled the TestMode so all E-Mails will be sent to a specified address.


The E-Mails will be created as HTML from a template. When creating the template you can use special tags, which will be replaced when the script processes the template so you have all the freedom of HTML (with the limitations of you mail client) to create your notifications.

[LastName] – LastName of the person

[FirstName] – FirstName of the person

[Days] – Days until the password expires

[FromAddress] – will be replaced with <SenderAdress>

[SenderName] – will be replaced with <SenderName>

[Phone] – will be replaced with <ContactPhone>

Scheduled Task

When creating a schedule task please use the following option for Powershell scripts under Actions:

Program/Script: %SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe

Arguments: -NoProfile -Noninteractive -command “. <PathToScript> -ConfigPath <PathToConfigFile>; exit $LASTEXITCODE”

<PathToScript> – Path to the Script including filename and extension

<PathToConfigFile> – Path to the config file including filename and extension

Exit Codes

The script will return the following exit codes on error.

1    PowerShell-Module not found
2    Config-File not found
3    LogPath is missing in configuration
4    LogLevel is missing in configuration
5    LogfilePath is empty in configuration
6    LogLevel is empty in configuration
7    Error in configuration, see log file


v. 1.0 – 05.01.2017 – New-ExpiringPasswordReminder_v1.0.zip