mirror of
https://git.proxmox.com/git/fwupd
synced 2025-04-29 18:33:13 +00:00
69 lines
1.6 KiB
Python
69 lines
1.6 KiB
Python
#!/usr/bin/python3
|
|
# SPDX-License-Identifier: LGPL-2.1+
|
|
|
|
import sys
|
|
import argparse
|
|
from urllib import request, parse
|
|
import base64
|
|
import ssl
|
|
|
|
if __name__ == "__main__":
|
|
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument(
|
|
"-u",
|
|
"--user",
|
|
type=str,
|
|
help="Redfish user name",
|
|
default="ADMIN",
|
|
)
|
|
parser.add_argument(
|
|
"-p",
|
|
"--password",
|
|
type=str,
|
|
help="Redfish user password",
|
|
default="ADMIN",
|
|
)
|
|
parser.add_argument(
|
|
"-f",
|
|
"--file",
|
|
type=str,
|
|
help="License file",
|
|
)
|
|
parser.add_argument("hostname", type=str, help="BMC IP of hostname")
|
|
|
|
args = parser.parse_args()
|
|
license = ""
|
|
if len(sys.argv) == 1:
|
|
print("hostname required")
|
|
sys.exit(1)
|
|
if not args.file:
|
|
print("License:")
|
|
license = sys.stdin.read()
|
|
else:
|
|
with open(args.file, "r") as fd:
|
|
license = fd.read()
|
|
|
|
sslctx = ssl.create_default_context()
|
|
sslctx.check_hostname = False
|
|
sslctx.verify_mode = ssl.CERT_NONE
|
|
url = (
|
|
f"https://{args.hostname}/redfish/v1/Managers/1/LicenseManager/ActivateLicense"
|
|
)
|
|
auth = str(
|
|
base64.b64encode(bytes(f"{args.user}:{args.password}", "latin1")),
|
|
encoding="latin1",
|
|
)
|
|
headers = {
|
|
"Content-Type": "application/json",
|
|
"Authorization": f"Basic {auth}",
|
|
}
|
|
req = request.Request(url, headers=headers, data=bytes(license, "latin1"))
|
|
resp = request.urlopen(req, context=sslctx)
|
|
|
|
if resp.status < 300:
|
|
print("Success")
|
|
else:
|
|
print("Failed")
|
|
sys.exit(-1)
|