3 Back up Untangle configurations via the web admin UI.
6 from argparse
import ArgumentDefaultsHelpFormatter
, ArgumentParser
9 from urllib
.error
import HTTPError
, URLError
10 from sys
import stderr
12 from untangle
.untangle
import Untangle
14 # Define a few exit codes.
16 EXIT_BACKUPS_FAILED
= 1
18 # Create an argument parser using our docsctring as its description.
19 parser
= ArgumentParser(description
= __doc__
,
20 formatter_class
= ArgumentDefaultsHelpFormatter
)
22 parser
.add_argument('-c',
24 default
='/etc/untangle-https-backup.ini',
25 help='path to configuration file')
27 args
= parser
.parse_args()
29 # Default to success, change it if anything fails.
32 config
= configparser
.ConfigParser()
33 config
.read(args
.config_file
)
35 for section
in config
.sections():
36 u
= Untangle(config
[section
])
39 backup
= u
.get_backup()
40 filename
= u
.name
+ '.backup'
41 with open(filename
, 'wb') as f
:
43 chmod(filename
, 0o600)
46 msg
= u
.name
+ ': ' + str(e
.reason
) + ' from ' + u
.host
47 print(msg
, file=stderr
)
48 status
= EXIT_BACKUPS_FAILED
49 except HTTPError
as e
:
50 msg
= u
.name
+ ': ' + 'HTTP error ' + str(e
.code
) + ' from ' + u
.host
51 print(msg
, file=stderr
)
52 status
= EXIT_BACKUPS_FAILED