from http.client import HTTPException
from os import chmod
from urllib.error import HTTPError, URLError
+from socket import timeout
from sys import stderr
from untangle.untangle import Untangle
# Default to success, change it if anything fails.
status = EXIT_OK
-# Parse the configuration file...
-config = configparser.ConfigParser()
+# Parse the configuration file. In this contect "interpolation" is
+# something completely berserk, and it breaks passwords containing '%'
+# characters. So, we turn it off.
+config = configparser.ConfigParser(interpolation=None)
config.read(args.config_file)
# And loop through each section.
msg = tpl.format(u.name, repr(e), u.host)
print(msg, file=stderr)
status = EXIT_BACKUPS_FAILED
+ except timeout as e:
+ # A socket.timeout exception occurs when something goes over
+ # the configured "timeout" limit.
+ tpl = '{:s}: socket timeout ({:s}) from {:s}'
+ msg = tpl.format(u.name, str(e), u.host)
+ print(msg, file=stderr)
+ status = EXIT_BACKUPS_FAILED
exit(status)