remove tunnel
This commit is contained in:
parent
b81e5d1ec4
commit
f1e08b32be
1 changed files with 0 additions and 64 deletions
|
@ -1,64 +0,0 @@
|
||||||
#!/usr/bin/env nu
|
|
||||||
|
|
||||||
use std log
|
|
||||||
|
|
||||||
def start-ssh-controller [host: string] {
|
|
||||||
log info $"initializing connection to ($host)"
|
|
||||||
ssh -M -f -N $host
|
|
||||||
}
|
|
||||||
|
|
||||||
def is-null [ name: string, arg: any] {
|
|
||||||
if $arg == null {
|
|
||||||
log error $"expected argument for --($name)"; exit 1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# script `--help` will improve :)
|
|
||||||
# https://github.com/nushell/nushell/pull/13445
|
|
||||||
|
|
||||||
# control background tunnels
|
|
||||||
# usage:
|
|
||||||
# tunnel up -p 4321 computer
|
|
||||||
# tunnel down computer
|
|
||||||
def main [] {
|
|
||||||
print "use subcommands up/down to control ssh tunnels"
|
|
||||||
help main
|
|
||||||
}
|
|
||||||
|
|
||||||
# activate ssh tunnel
|
|
||||||
def "main up" [
|
|
||||||
host: string # host name
|
|
||||||
--port: int # port number
|
|
||||||
] {
|
|
||||||
is-null "port" $port
|
|
||||||
|
|
||||||
if (ssh -O check $host | complete).exit_code != 0 {
|
|
||||||
start-ssh-controller $host
|
|
||||||
}
|
|
||||||
ssh -fNL $"($port):localhost:($port)" $host
|
|
||||||
}
|
|
||||||
|
|
||||||
# shutdown ssh tunnels on host
|
|
||||||
def "main down" [
|
|
||||||
host: string # host name
|
|
||||||
] {
|
|
||||||
log info $"exiting connection to ($host)"
|
|
||||||
ssh -O exit $host
|
|
||||||
}
|
|
||||||
|
|
||||||
def "main show" [] {
|
|
||||||
let sockets = (
|
|
||||||
ls ~/.ssh/
|
|
||||||
| where name =~ control
|
|
||||||
| get name
|
|
||||||
)
|
|
||||||
let n_sockets = $sockets | length
|
|
||||||
if $n_sockets > 0 {
|
|
||||||
print $"($n_sockets) active connections"
|
|
||||||
$sockets
|
|
||||||
| split column "-"
|
|
||||||
| get column2
|
|
||||||
} else {
|
|
||||||
log info "no open connections"
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in a new issue