#!/usr/bin/env python import posixpath import sys import requests try: import urllib.parse as urlparse except ImportError: import urlparse # change base_url to point to your SFTPGo installation base_url = "http://127.0.0.1:8080" # set to False if you want to skip TLS certificate validation verify_tls_cert = True # set the credentials for a valid admin here admin_user = "admin" admin_password = "password" # insert here the users you want to update users_to_update = ["user1", "user2", "user3"] # set here the fields you need to update fields_to_update = {"status":0, "quota_files": 1000, "additional_info":"updated using the bulkuserupdate example script"} # get a JWT token auth = requests.auth.HTTPBasicAuth(admin_user, admin_password) r = requests.get(urlparse.urljoin(base_url, "api/v2/token"), auth=auth, verify=verify_tls_cert, timeout=10) if r.status_code != 200: print("error getting access token: {}".format(r.text)) sys.exit(1) access_token = r.json()["access_token"] auth_header = {"Authorization": "Bearer " + access_token} for username in users_to_update: r = requests.get(urlparse.urljoin(base_url, posixpath.join("api/v2/users", username)), headers=auth_header, verify=verify_tls_cert, timeout=10) if r.status_code != 200: print("error getting user {}: {}".format(username, r.text)) continue user = r.json() user.update(fields_to_update) r = requests.put(urlparse.urljoin(base_url, posixpath.join("api/v2/users", username)), headers=auth_header, verify=verify_tls_cert, json=user, timeout=10) if r.status_code == 200: print("user {} updated".format(username)) else: print("error updating user {}, response code: {} response text: {}".format(username, r.status_code, r.text))