2019-06-14 04:04:00 +00:00

65 lines
1.4 KiB
Python
Executable File

#!/usr/bin/python3 -u
try:
from pipes import quote
except ImportError:
from shlex import quote
import os
import subprocess
import sys
argv = list(sys.argv[1:])
if argv[0].startswith("--proxy="):
remotehost = argv[0][8:]
argv = argv[1:]
else:
remotehost = None
host, parms = argv[0], argv[1:]
path_to_bombshell = os.path.join(os.path.dirname(__file__), "bombshell-client")
if os.getenv("BOMBSHELL_DEBUG"):
cmd = [
path_to_bombshell,
"-d",
host,
] + parms
else:
cmd = [
path_to_bombshell,
host,
] + parms
if remotehost:
args = " ".join(quote(x) for x in parms)
with open(path_to_bombshell, "r") as f:
poop = quote(f.read())
therest_template = ('''
set -e
which bombshell-client >/dev/null 2>&1 && {
exec bombshell-client %s %s %s
} || {
echo %s > .bombshell-client.tmp
chmod +x .bombshell-client.tmp
mv -fT .bombshell-client.tmp .bombshell-client
exec ./.bombshell-client %s %s %s
}
''')
therest = therest_template % (
"-d" if os.getenv("BOMBSHELL_DEBUG") else "",
quote(host),
args,
poop,
"-d" if os.getenv("BOMBSHELL_DEBUG") else "",
quote(host),
args,
)
cmd = [
'ssh',
'-o', 'BatchMode yes',
remotehost,
therest,
]
os.execvp(cmd[0], cmd)