-
-
Save corny/3cf7af0f6cb7a00adeb3 to your computer and use it in GitHub Desktop.
| #!/bin/bash -e | |
| # | |
| # Improved backup script for Ubiquiti UniFi controller | |
| # original source: http://wiki.ubnt.com/UniFi#Automated_Backup | |
| # | |
| # must contain: | |
| # username=<username> | |
| # password=<password> | |
| source ~/.unifi-backup | |
| baseurl=https://localhost:8443 | |
| output=/root/backups/unifi | |
| filename=`date +%Y%m%d%H%M`.unf | |
| keep_days=1 | |
| # create output directory | |
| mkdir -p $output | |
| curl_cmd="curl --cookie /tmp/cookie --cookie-jar /tmp/cookie --insecure --silent --fail" | |
| # authenticate against unifi controller | |
| if ! $curl_cmd --data '{"username":"'$username'","password":"'$password'"}' $baseurl/api/login > /dev/null; then | |
| echo Login failed | |
| exit 1 | |
| fi | |
| # ask controller to do a backup, response contains the path to the backup file | |
| path=`$curl_cmd --data 'json={"cmd":"backup","days":"-1"}' $baseurl/api/s/default/cmd/system | sed -n 's/.*\(\/dl.*unf\).*/\1/p'` | |
| # download the backup to the destinated output file | |
| $curl_cmd $baseurl$path -o $output/$filename | |
| # logout | |
| $curl_cmd $baseurl/logout | |
| # delete outdated backups | |
| find $output -ctime +$keep_days -type f -delete | |
| echo Backup successful |
I don't understand, for me it's an html file or no download. Can you tell me how you test please ? I miss something I think. Thanks.
- installed powershell V6 (V6 adds
-SkipCertificateCheckthat i had to use because i dont have setup certs for my controller) - open powershell
- set stuff like
$BaseURIand$Usernameto my values - execute command by command
will keep working on it, but right now, this just produces a 0KB backup from my UDMP when run from a linux machine. Clearly something isn't working. =/ I did modify endpoint as mentioned in this discussion.
will keep working on it, but right now, this just produces a 0KB backup from my UDMP when run from a linux machine. Clearly something isn't working. =/ I did modify endpoint as mentioned in this discussion.
I had the same problem on one of my controllers. Problem is that the user you are using to connect must be a Super Administrator.
I had the user set to just Administrator and i got 0Kb files.
Careful!
This script can result in deleting a lot of unwanted files!
# delete outdated backups
find $output -ctime +$keep_days -type f -delete
should be ammended with
# delete outdated backups
find $output -ctime +$keep_days -type f -delete -iname "*.unf"
I got a link to a backup file and used your later command to download it.
Was a file with about 300KB.
Looked like a backup file (had just random noice in it. Did not try to restore it)