summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Jurkiewicz <alex@jurkiewi.cz>2023-08-09 09:50:34 +0800
committerBrian May <brian@linuxpenguins.xyz>2023-08-09 15:06:05 +1000
commit0ddebdeee66eeaaaf521efc1eba2c718f89bc936 (patch)
tree9dd199d49f99a7be78969a7471d36cba09655d31
parent3c3f5de6728ebdea818d5cef611d20979c8170b4 (diff)
Add support for SSHUTTLE_ARGS environment variable
-rw-r--r--docs/manpage.rst12
-rw-r--r--sshuttle/cmdline.py11
2 files changed, 22 insertions, 1 deletions
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