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

64 lines
1.7 KiB
Python
Raw Normal View History

2016-11-10 10:27:53 +01:00
#!/usr/bin/env python3
# Example pause/resume script
# written by will@sowerbutts.com
import requests
import sys
class DuplicatiServer(object):
2024-06-19 13:54:10 +02:00
def __init__(self, base_url, password):
2016-11-10 10:27:53 +01:00
self.base_url = base_url
self.headers = dict()
2024-06-19 13:54:10 +02:00
self.password = password
self.access_token = None
2016-11-10 10:27:53 +01:00
def fetch(self, path, post=False, data=None):
2024-06-19 13:54:10 +02:00
if (self.access_token is None):
r = requests.post(self.base_url + 'api/v1/auth/login', headers=self.headers, data=b'{"Password":"%s"}' % self.password)
if r.status_code == 200:
self.access_token = r.json()['AccessToken']
2016-11-10 10:27:53 +01:00
else:
2024-06-19 13:54:10 +02:00
return r
self.headers['Authorization'] = 'Bearer %s' % self.access_token
if post:
r = requests.post(self.base_url + path, headers=self.headers, data=data)
else:
r = requests.get(self.base_url + path, headers=self.headers, data=data)
2016-11-10 10:27:53 +01:00
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__':
2024-06-19 13:54:10 +02:00
2016-11-10 10:27:53 +01:00
r = None
2024-06-19 13:54:10 +02:00
password = None
2016-11-10 10:27:53 +01:00
try:
cmd = sys.argv[1]
2024-06-19 13:54:10 +02:00
password = sys.argv[2]
2016-11-10 10:27:53 +01:00
except IndexError:
cmd = None
2024-06-19 13:54:10 +02:00
if not cmd:
print("Syntax: %s [pause|resume] [password]" % sys.argv[0])
sys.exit(1)
ds = DuplicatiServer("http://localhost:8200/", password)
2016-11-10 10:27:53 +01:00
if cmd == 'pause':
r = ds.pause()
elif cmd == 'resume':
r = ds.resume()
2024-06-19 13:54:10 +02:00
2016-11-10 10:27:53 +01:00
if r and r.status_code == 200:
print("OK")
else:
print("Something went wrong -- %d %s" % (r.status_code, r.reason))