Posted: March 18th, 2011 | Author: Gregg | Filed under: Linux, Tech | Tags: asus, backup, bash, cron, Linux, polarcloud, router, script, tomato, tomato cron backup, tomato router backup | 2 Comments »
I recently was given the task to automate the backups of several remote routers that we manage that run tomato firmware.
Here is the Tomato developer’s site: www.polarcloud.com/tomato
The main goals were:
- To use https
- To be automated (Cron)’d later
- To scale from 1 to 1XXX routers
I tested it on Tomato Firmware 1.28 using my ASUS RT-N16 router, but it should work for any Tomato-firmware router.
There will be some slight modifications to run in cron, but let me know and I’ll be glad to help.
Download the .zip file here: tomatobackup1405
Extract the file so the full path will be /root/tomatobackup1405
Read the README inside the folder
chmod +x tomatobackup1405.sh
Add your hosts to the tomatobackup1405_hosts.cfg file
If successful, you will see a subfolder with the date YYYYMMDD and the file with CoName-tomato_v_.cfg
If there are connection problems, you’ll see an error message.
EDIT: There was a python rewrite by Sam@orgraphone.org
Feel free to check it out here
Let me know if you have any thoughts or suggestions.
Posted: April 27th, 2009 | Author: Gregg | Filed under: Asterisk VoIP, Linux, Tech, Uncategorized | Tags: asterisk backup, Asterisk VoIP, at backup asterisk, atd, automated asterisk backup, automated backup, automatic ftp connection, backup asterisk, backup asterisk files, backup asterisk script, backup etc/asterisk, bash, centos, connect ftp bash, cron, cron backup, cron backup asterisk, ftp bash, gz, gz asterisk, interactive backup, Linux, safe1405, tar, tar asterisk, voip | 6 Comments »
Safe1405 is a bash script that will backup the popular Asterisk directories and place them in a tar.gz file. The script can be used in 1 of 2 modes.
The first mode is interactive, with a menu to choose:
- Backup Everything (/etc/asterisk, Voicemail, Recordings, Sounds)
- Just VM
- Just Recordings
- Just Sounds
After the file is created, it will prompt to upload to a remote FTP server.
The second mode is silent, and is best suited for automated execution via cron or at.
Just enable the UNATTENDED and PUT_FTP variables by setting them to “1”. You can directly edit the paths to each directory if yours are non-standard.
The script can be directly downloaded here: Safe1405 Download Link
# Author: Gregg Hansen - www.thiscoolsite.com
# Safely tar and gzip Asterisk files
# Version 1.0 20090427
#-Backs up all important Asterisk files - Tar/Gz
#-Choose the file name, or Date by default
#-GUI-like. Able to be silent for cron, or interactive
#EDIT the below ABSOLUTE paths to match your directory structure:
#Filename is FILEDATE-SERVERNAME.tar.gz
#Enable unattended mode/Remote FTP put (useful for Cron):
# Backup of /etc/asterisk ONLY (default)
# 1 = On, 0 = Off
### Interactive Mode Functions ###
echo -n "Prompt> "
case $INPUT in
tar cfvz $FILENAME $ETC_AST $VM $MON $VAR_LIB
tar cfvz $FILENAME $ETC_AST
tar cfvz $FILENAME $VM
tar cfvz $FILENAME $MON
tar cfvz $FILENAME $VAR_LIB
echo -en "Upload $FILENAME to FTP? (y or n) "
if [ "$INPUT" == "y" ]; then
### Unattended Mode Functions ###
tar cfvz $FILEDATE-$SERVERNAME-ETC-AST.tar.gz $ETC_AST ##Uncomment##$VM #$MON #$VAR_LIB
ftp -ivn <<EOF
user $FTP_USER $FTP_PASS
#### Start Program Flow ###
#Unattended Function Call(s)
if [ "$UNATTENDED" == "1" ]; then
if [ "$PUT_FTP" == "1" ]; then
#Interactive Function Calls
Leave a comment if you have questions/suggestions or would like help setting up the script.
Posted: March 19th, 2009 | Author: Gregg | Filed under: Tech | Tags: bash, copy paste, freebsd, Linux, Mac, microsoft, osx, putty, terminal, unix | No Comments »
This is probably the first post I’ve done that links to content that I had no part in creating/publishing. Dave over at Neozaz.com posted an great article about the pros and cons of different terminals/OS(s) and his experience over the years.
Check it out here.
Posted: October 24th, 2008 | Author: Gregg | Filed under: Asterisk VoIP, Linux, Tech | Tags: Asterisk VoIP, bash, convert, cron wav to mp3, g729 to mp3, gsm to mp3, Linux, record, record calls, recordings, scripting, scripts, voip, wav to mp3 | 29 Comments »
From a helpful contributor. Since the encoding has changed and I haven’t had to do file conversion in years and years.
Check out Ernesto’s script here.
I have had many jobs (consulting and Salary) that have involved using Asterisk in a “Call-Center” environment. Whenever an agent would make a sale, the call would need to be recorded for verification purposes. Now I could talk about Asterisk and call-recording for pages upon pages, but I will be focusing on large .wav to .mp3 conversion jobs on the Linux/Asterisk server itself. First off, Asterisk can record calls using several different methods. The first method being that you setup a feature called Automon in /etc/asterisk/features.conf and use *1 (or whatever you specify) to record a call in progress. The second method is recording every call that comes in through a specific DID or enters a specific queue. Another method is to setup a ‘call genie’ that you conference your phone to and it records the entire call-bridge. There are pros and cons to every type of recording method and format. You can use GSM, wav, g729, etc. to record calls. Not matter what method you use, the simple script I wrote will convert your .wav files to .mp3 and also retain the timestamp of when the file was initially created (recorded). The options I use for mlame are what makes this script retain its awesome-ness over time. The options allow the final-result mp3 to be compressed and compatable with Asterisk. This means that you can playback your .mp3 files that you converted over Asterisk if you are using a ‘call-genie’ setup. I have also written scripts to convert your .g729/.gsm/etc => .mp3 so if you need one of those scripts leave a comment and I will email it to you (20090908 UPDATE: Check end of post for .g729 to MP3 file conversion script)
1. Download the script to your server. wget http://www.thiscoolsite.com/scripts/convertwav/convert_recordings.sh or download it here.
2. Put the script anywhere you wish, I tend to leave it in my home directory
3. chmod +x convert_recordings.sh
4. You need to install lame. Get the file from the lame site.
5. Extract the tarball. For Example… tar -zxvf lame-398-2.tar.gz
6. cd lame-398-2
9. make install
10. Now copy the mlame file from lame-398-2/misc/mlame to your .wav directory /var/spool/asterisk/monitor (or wherever your .wavs are)
11. chmod +x mlame
12. Edit the convert_recordings.sh recorddir variable to match your .wav directory path (no trailing ‘/’). The default directory is set to /var/spool/asterisk/monitor
13. Run the script by navigating to the directory and ./recordings_convert.sh
You should see it take a few seconds for each file and go on. I usually test it out by letting it convert a few files then Cntrl + C and ls -l the directory to check the filesizes and timestamps. There is a commented out section at the bottom of recordings_convert.sh that moves the .wav files to a separate directory (easier to check if it worked) and in my case, I keep the old files for a month or so for job security reasons. If you lose a bunch of verification recordings, you are going to have major problems.
Cron it, at it, and happy converting.
Code for .g729 to MP3 script. Very dirty, but works, please test on a small group of test files first.
Leave a comment if you need further assistance.
#Author: Gregg Hansen 20080414
#Used to convert from .g729 -in and -out files to .mp3
#Run on Recordings server
for i in `ls /ramdiskunload/*.g729`;
#convert all .g729 to wav first, then soxmix
DST=`echo $i | sed 's/.g729/.wav/g'`
asterisk -rx "file convert $i $DST"
rm -f $i
mv $DST /recordings
#all files should now be in the /recordings directory
#use soxmix and mlame to convert them to one file => mp3
for j in `ls /recordings/*-in.wav`;
INFILE=`echo $j | sed 's/-in/-out/g'`
MIXED=`echo $j | sed 's/-in//g'`
soxmix $j $INFILE $MIXED
rm -f $j
rm -f $INFILE
/root/test/mlame -f -o "-b 16 -m m -q 9 --resample 8" $MIXED
As always, leave a comment if you need help or clarification.
Posted: July 12th, 2008 | Author: Gregg | Filed under: Asterisk VoIP, Linux, Mac, Tech | Tags: asterisk failover, asterisk redundancy, Asterisk VoIP, bash, centos, failover, flip 1405, flip 1405 failover, flip1405, flip1405 failover, gregg hansen, Linux, redundancy, script, technology, uptime, voice over ip, voip, voip-info | 57 Comments »
Flip1405 is an Asterisk Failover solution that was created in early 2008. I found the need to create an easy to install failover solution for Asterisk servers. After a couple hours on a Sunday night, I had the first version completed. In 2009 someone who came across this script reworked the code to add new features, and I updated the site. Now, in 2011 I am glad to announce that there is a new version that has many new features and improvements over my existing code. Many thanks to Jonathan Bayer for updating the script again. His site is http://linuxnotes.us
Excerpt taken from his site:
Congratulations! You have now set up your first Asterisk-based VOIP server.
Next question (probably the first your boss will ask you): What happens when the server crashes, or loses power, or needs to be upgraded, or…….; well, you get the idea. If you only have a single server, you lose your phones until it is rebooted. Given that you probably installed this on a cheap, inexpensive piece of hardware, these questions are not out of the question, especially for a business.
We had the same questions, and have implemented a failover solution. I started with a script I got from this web page, but was dissatisfied with it. It seemed to be a bit of a kludge, in that it wasn’t a true HA solution, but was only a backup solution.
I did a massive reworking of the script, and the result downloadable from here:
This script is used to synchronize the /tftpboot with the /var/ftp/ directory:
The only dependencies for Flip1405.sh are nmap and arping
To use, first get your primary Asterisk server running smoothly. When ready, you can either clone it using Clonezilla (or some other utility) or just install Asterisk on the second box. Then follow these steps:
Setup shared-keys so the servers can copy between each other without user intervention. Setup Login without password
Set up ftp (I use vsftp), if needed. We use it to download the configurations for the Aastra phones. Usually we would use tftp, but since we have some phones outside our office we simply use ftp for everything.
Install this script into /usr/local/sbin on the primary/active system.
Run the script with the -s option:
The second script: syncftp.sh, is used to synchronize the /tftpboot directory with the /var/ftp directory. If you need it, install the syncftp.sh script into /usr/local/sbin
Open up the flip1405.sh in an editor, and check the various settings. I would recommend that if you need to change them, to use a config file (/etc/sysconfig/flip1405) rather than editing each file. The config file is NOT sync’d between the systems, so you can have system specific options in the file.
There is no need to specify the device, or whether the system is a master or slave. The script determines this at run time. The most important lines to set are the first three variables: MASTERIP, SLAVEIP, and FLOAT. These are:
MASTERIP IP address of the master system (arbitrary name)
SLAVEIP IP address of the slave system
FLOAT IP address that will float between the Master and Slave, and which your phones will access
All other variables are set for an Elastix system. Elastix is based on the following:
Make sure to set the bindaddr to the virtual IP address in /etc/asterisk/sip.conf or
bindaddr=192.168.1.12 ;IP of Virtual interface
Add the following line(s) to the root crontab (only install the syncftp.sh line if you are using it):
* * * * * /usr/local/sbin/flip1405.sh
*/5 * * * * /usr/local/sbin/syncftp.sh
If you like, you can add the following lines to /etc/crontab instead:
* * * * * root /usr/local/sbin/flip1405.sh
*/5 * * * * root /usr/local/sbin/syncftp.sh
If you have phones outside your network, you will need to configure your firewall to direct the following ports to the FLOAT address:
tcp 21 (if you are using ftp)
Click below to see previous versions (20090327)