Files
duplicati/Tools/Commandline/pause-resume.py
T

54 lines
1.6 KiB
Python

#!/usr/bin/env python3
# Example pause/resume script
# written by will@sowerbutts.com
import requests
import urllib.parse
import sys
class DuplicatiServer(object):
def __init__(self, base_url):
self.base_url = base_url
self.cookiejar = requests.cookies.RequestsCookieJar()
self.headers = dict()
def fetch(self, path, post=False, data=None):
for attempt in range(2): # we may get a "Missing XSRF token" error on the first attempt
if post:
r = requests.post(self.base_url + path, cookies=self.cookiejar, headers=self.headers, data=data)
else:
r = requests.get(self.base_url + path, cookies=self.cookiejar, headers=self.headers, data=data)
self.cookiejar.update(r.cookies)
self.headers['X-XSRF-Token'] = urllib.parse.unquote(r.cookies['xsrf-token'])
if r.status_code != 400:
break
return r
def pause(self):
return self.fetch('api/v1/serverstate/pause', post=True, data=b'')
def resume(self):
return self.fetch('api/v1/serverstate/resume', post=True, data=b'')
if __name__ == '__main__':
ds = DuplicatiServer("http://localhost:8200/")
r = None
try:
cmd = sys.argv[1]
except IndexError:
cmd = None
if cmd == 'pause':
r = ds.pause()
elif cmd == 'resume':
r = ds.resume()
else:
print("Syntax: %s [pause|resume]" % sys.argv[0])
sys.exit(1)
if r and r.status_code == 200:
print("OK")
else:
print("Something went wrong -- %d %s" % (r.status_code, r.reason))