From 0ddebdeee66eeaaaf521efc1eba2c718f89bc936 Mon Sep 17 00:00:00 2001 From: Alex Jurkiewicz Date: Wed, 9 Aug 2023 09:50:34 +0800 Subject: [PATCH] Add support for SSHUTTLE_ARGS environment variable --- docs/manpage.rst | 12 ++++++++++++ sshuttle/cmdline.py | 11 ++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/docs/manpage.rst b/docs/manpage.rst index fa1106f..2053eee 100644 --- a/docs/manpage.rst +++ b/docs/manpage.rst @@ -321,6 +321,18 @@ annotations. For example:: 192.168.63.0/24 +Environment Variable +-------------------- + +You can specify command line options with the `SSHUTTLE_ARGS` environment +variable. If a given option is defined in both the environment variable and +command line, the value on the command line will take precedence. + +For example:: + + SSHUTTLE_ARGS="-e 'ssh -v' --dns" sshuttle -r example.com 0/0 + + Examples -------- diff --git a/sshuttle/cmdline.py b/sshuttle/cmdline.py index eaca961..5480815 100644 --- a/sshuttle/cmdline.py +++ b/sshuttle/cmdline.py @@ -1,5 +1,8 @@ +import os import re +import shlex import socket +import sys import sshuttle.helpers as helpers import sshuttle.client as client import sshuttle.firewall as firewall @@ -11,7 +14,13 @@ from sshuttle.sudoers import sudoers def main(): - opt = parser.parse_args() + if 'SSHUTTLE_ARGS' in os.environ: + env_args = shlex.split(os.environ['SSHUTTLE_ARGS']) + else: + env_args = [] + args = [*env_args, *sys.argv[1:]] + + opt = parser.parse_args(args) if opt.sudoers_no_modify: # sudoers() calls exit() when it completes