ssh.py: allow hostnames of the form hostname:port

Feature requested by Wayne Scott and Ed Maste.
This commit is contained in:
Avery Pennarun 2010-05-04 13:07:51 -04:00
parent 0cdd72c830
commit 8173925bcd
2 changed files with 8 additions and 3 deletions

View File

@ -45,7 +45,7 @@ def parse_ipport(s):
optspec = """
sshuttle [-l [ip:]port] [-r [username@]sshserver] <subnets...>
sshuttle [-l [ip:]port] [-r [username@]sshserver[:port]] <subnets...>
sshuttle --iptables <port> <subnets...>
sshuttle --server
--

9
ssh.py
View File

@ -2,8 +2,13 @@ import sys, os, re, subprocess, socket
import helpers
from helpers import *
def connect(rhost):
def connect(rhostport):
main_exe = sys.argv[0]
l = (rhostport or '').split(':', 1)
rhost = l[0]
portl = []
if len(l) > 1:
portl = ['-p', str(int(l[1]))]
nicedir = os.path.split(os.path.abspath(main_exe))[0]
nicedir = re.sub(r':', "_", nicedir)
myhome = os.path.expanduser('~') + '/'
@ -29,7 +34,7 @@ def connect(rhost):
sh -c PATH=%s:'$HOME'/%s:'$PATH exec sshuttle --server%s'
""" % (escapedir, escapedir2,
' -v' * (helpers.verbose or 0))
argv = ['ssh', rhost, '--', cmd.strip()]
argv = ['ssh'] + portl + [rhost, '--', cmd.strip()]
debug2('executing: %r\n' % argv)
(s1,s2) = socket.socketpair()
def setup():