diff options
Diffstat (limited to 'users/wpcarro/tools/systemd-shell/systemd-shell')
-rw-r--r-- | users/wpcarro/tools/systemd-shell/systemd-shell | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/users/wpcarro/tools/systemd-shell/systemd-shell b/users/wpcarro/tools/systemd-shell/systemd-shell new file mode 100644 index 0000000000..646d59143a --- /dev/null +++ b/users/wpcarro/tools/systemd-shell/systemd-shell @@ -0,0 +1,36 @@ +#!/usr/bin/env python3 + +# Drop into a new shell environment with the same variables defined in a systemd +# unit file (for debugging purposes). +# +# USAGE: +# $ systemd-shell -u buildkite-agent-foundation-1.service + +import argparse +import os + +def parse_env(entry): + x = entry[12:].split("=", 1) + return x[0].removeprefix("\"").removesuffix("\""), x[1].removeprefix("\"").removesuffix("\"") + +def run(unit): + envfile = [] + print("--- Environment ---") + for line in open(f"/etc/systemd/system/{unit}").readlines(): + if line.startswith("Environment="): + key, val = parse_env(line[:-1]) + print(f"export {key}={val}") + envfile.append(f"{key}={val}") + else: + continue + print() + + env = " ".join(envfile) + print("--- Command ---") + os.system(f"/usr/bin/env {env} /bin/sh") + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + parser.add_argument("-u", "--unit", type=str, required=True) + args = parser.parse_args() + run(args.unit) |