mirror of
https://github.com/sshuttle/sshuttle.git
synced 2025-02-17 10:50:55 +01:00
Update exec-sshuttle script and related files
This commit is contained in:
parent
db9ec36fac
commit
371258991f
@ -3,6 +3,8 @@
|
|||||||
```bash
|
```bash
|
||||||
test-bed up -d # start containers
|
test-bed up -d # start containers
|
||||||
|
|
||||||
|
exec-sshuttle <node> [--copy-id] [--shuttle-bin=/path/to/sshttle] [sshuttle-args...]
|
||||||
|
|
||||||
exec-sshuttle node-1 # start sshuttle to connect to node-1
|
exec-sshuttle node-1 # start sshuttle to connect to node-1
|
||||||
|
|
||||||
exec-tool curl node-1 # curl to nginx instance running on node1 via IP that is only reachable via sshuttle
|
exec-tool curl node-1 # curl to nginx instance running on node1 via IP that is only reachable via sshuttle
|
||||||
|
@ -1,29 +1,73 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
node=$1
|
function with_set_x() {
|
||||||
|
set -x
|
||||||
|
"$@"
|
||||||
|
{
|
||||||
|
ec=$?
|
||||||
|
set +x
|
||||||
|
return $ec
|
||||||
|
} 2>/dev/null
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ssh_cmd='ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null'
|
||||||
|
args=()
|
||||||
|
while [[ $# -gt 0 ]]; do
|
||||||
|
arg=$1
|
||||||
|
shift
|
||||||
|
case "$arg" in
|
||||||
|
-v)
|
||||||
|
ssh_cmd+='-v'
|
||||||
|
;;
|
||||||
|
--copy-id)
|
||||||
|
ssh_copy_id=true
|
||||||
|
continue
|
||||||
|
;;
|
||||||
|
--sshuttle-bin=*)
|
||||||
|
sshuttle_bin="${arg#*=}"
|
||||||
|
continue
|
||||||
|
;;
|
||||||
|
-*)
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
if [[ -z "$node" ]]; then
|
||||||
|
node=$arg
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
args+=("$arg")
|
||||||
|
done
|
||||||
|
|
||||||
if [[ ! $node =~ [1-9]+ ]]; then
|
|
||||||
echo "node argument missing. should be '1' , '2' etc"
|
|
||||||
exit 2
|
|
||||||
fi
|
|
||||||
shift
|
|
||||||
|
|
||||||
port="2222"
|
port="2222"
|
||||||
subnet_args="-N"
|
|
||||||
host=$("$(dirname "$0")/test-bed" get-ip "$node")
|
|
||||||
user="test:test"
|
user="test:test"
|
||||||
|
|
||||||
|
if [[ $node == node-* ]]; then
|
||||||
|
host=$("$(dirname "$0")/test-bed" get-ip "$node")
|
||||||
|
index=${node#node-}
|
||||||
|
args+=("10.55.$index.0/24")
|
||||||
|
else
|
||||||
|
host=$node
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "${args[$(( ${#args[@]} - 1 ))]}" != *.* && "${args[$(( ${#args[@]} - 1 ))]}" != *:* ]]; then
|
||||||
|
echo "No subnet specified. Using -N" >&2
|
||||||
|
args+=('-N')
|
||||||
|
fi
|
||||||
|
|
||||||
if ! command -v sshpass >/dev/null; then
|
if ! command -v sshpass >/dev/null; then
|
||||||
echo "sshpass is not found. You have to manually enter ssh password: 'test'" >&2
|
echo "sshpass is not found. You might have to manually enter ssh password: 'test'" >&2
|
||||||
user="test"
|
user=${user%:*}
|
||||||
fi
|
|
||||||
ssh_cmd='ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null'
|
|
||||||
|
|
||||||
if [[ "$*" =~ -v ]]; then
|
|
||||||
ssh_cmd+='-v'
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
SSHUTTLE_BIN=${SSHUTTLE_BIN:-"$(dirname "$0")/../run"}
|
if [[ $ssh_copy_id == true ]]; then
|
||||||
|
echo "Trying to make it passwordless" >&2
|
||||||
|
with_set_x ssh-copy-id -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -p "$port" "$user@$host"
|
||||||
|
fi
|
||||||
|
|
||||||
|
sshuttle_bin=${sshuttle_bin:-"$(dirname "$0")/../run"}
|
||||||
set -x
|
set -x
|
||||||
exec "${SSHUTTLE_BIN}" -r "$user@$host:$port" --ssh-cmd "$ssh_cmd" "$@" $subnet_args
|
exec "${sshuttle_bin}" -r "$user@$host:$port" --ssh-cmd "$ssh_cmd" "${args[@]}"
|
||||||
|
@ -5,8 +5,13 @@ tool=${1?:"tool argument missing. should be one of iperf3,ping,curl,ab"}
|
|||||||
node=${2?:"node argument missing. should be 'node-1' , 'node-2' etc"}
|
node=${2?:"node argument missing. should be 'node-1' , 'node-2' etc"}
|
||||||
shift 2
|
shift 2
|
||||||
|
|
||||||
index=${node#node-}
|
if [[ $node == node-* ]]; then
|
||||||
ip="10.55.$index.77"
|
index=${node#node-}
|
||||||
|
host="10.55.$index.77"
|
||||||
|
else
|
||||||
|
host=$node
|
||||||
|
fi
|
||||||
|
|
||||||
connect_timeout_sec=3
|
connect_timeout_sec=3
|
||||||
|
|
||||||
function with_set_x() {
|
function with_set_x() {
|
||||||
@ -21,19 +26,22 @@ function with_set_x() {
|
|||||||
|
|
||||||
case "$tool" in
|
case "$tool" in
|
||||||
ping)
|
ping)
|
||||||
with_set_x exec ping -W $connect_timeout_sec "$@" "$ip"
|
with_set_x exec ping -W $connect_timeout_sec "$@" "$host"
|
||||||
;;
|
;;
|
||||||
iperf3)
|
iperf3)
|
||||||
port=5001
|
port=5001
|
||||||
with_set_x exec iperf3 --client "$ip" --port=$port --connect-timeout=$((connect_timeout_sec * 1000)) "$@"
|
with_set_x exec iperf3 --client "$host" --port=$port --connect-timeout=$((connect_timeout_sec * 1000)) "$@"
|
||||||
;;
|
;;
|
||||||
curl)
|
curl)
|
||||||
port=8080
|
port=8080
|
||||||
with_set_x exec curl "http://$ip:$port/" -v --connect-timeout $connect_timeout_sec "$@"
|
with_set_x exec curl "http://$host:$port/" -v --connect-timeout $connect_timeout_sec "$@"
|
||||||
;;
|
;;
|
||||||
ab)
|
ab)
|
||||||
port=8080
|
port=8080
|
||||||
with_set_x exec ab -n 100 -c 20 -s $connect_timeout_sec "$@" "http://$ip:$port/"
|
if [[ " $*" != *" -n "* && " $*" != *" -c "* ]]; then
|
||||||
|
set -- -n 500 -c 50 "$@"
|
||||||
|
fi
|
||||||
|
with_set_x exec ab -s $connect_timeout_sec "$@" "http://$host:$port/"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "Unknown tool: $tool" >&2
|
echo "Unknown tool: $tool" >&2
|
||||||
|
@ -16,11 +16,12 @@ function with_set_x() {
|
|||||||
|
|
||||||
benchmark() {
|
benchmark() {
|
||||||
local sshuttle_bin="${1?:}"
|
local sshuttle_bin="${1?:}"
|
||||||
|
local node="${2:-'node-1'}"
|
||||||
echo -e "\n======== Benchmarking sshuttle: $sshuttle_bin ========"
|
echo -e "\n======== Benchmarking sshuttle: $sshuttle_bin ========"
|
||||||
if [[ "$sshuttle_bin" == dev ]]; then
|
if [[ "$sshuttle_bin" == dev ]]; then
|
||||||
sshuttle_bin="../run"
|
sshuttle_bin="../run"
|
||||||
fi
|
fi
|
||||||
SSHUTTLE_BIN=$sshuttle_bin ./exec-sshuttle 1 --listen 55771 &
|
./exec-sshuttle "$node" --sshuttle-bin="$sshuttle_bin" --listen 55771 &
|
||||||
sshuttle_pid=$!
|
sshuttle_pid=$!
|
||||||
trap 'kill -0 $sshuttle_pid &>/dev/null && kill -15 $sshuttle_pid' EXIT
|
trap 'kill -0 $sshuttle_pid &>/dev/null && kill -15 $sshuttle_pid' EXIT
|
||||||
while ! nc -z localhost 55771; do sleep 0.1; done
|
while ! nc -z localhost 55771; do sleep 0.1; done
|
||||||
@ -33,6 +34,6 @@ benchmark() {
|
|||||||
if [[ "$1" ]]; then
|
if [[ "$1" ]]; then
|
||||||
benchmark "$1"
|
benchmark "$1"
|
||||||
else
|
else
|
||||||
benchmark "${SSHUTTLE_BIN:-/bin/sshuttle}"
|
benchmark "${SSHUTTLE_BIN:-/bin/sshuttle}" node-1
|
||||||
benchmark dev
|
benchmark dev node-1
|
||||||
fi
|
fi
|
||||||
|
@ -5,5 +5,5 @@ cd "$(dirname "$0")/.."
|
|||||||
export PYTHONPATH=.
|
export PYTHONPATH=.
|
||||||
|
|
||||||
set -x
|
set -x
|
||||||
|
python -m flake8 sshuttle tests
|
||||||
python -m pytest .
|
python -m pytest .
|
||||||
python -m flake8 .
|
|
||||||
|
Loading…
Reference in New Issue
Block a user