Files
df/tree/.local/nu/tailscale.nu

32 lines
739 B
Plaintext

def "tailscale peer" [
hostname?: string
path?: cell-path
]: nothing -> any {
let path = ($path | default ([] | into cell-path))
let status = (^tailscale status --json | from json)
let peers = ($status | get Peer | transpose key fields | flatten fields)
let peers = ($peers | each { |peer|
let ipv4 = $peer.TailscaleIPs | where { |ip| "." in $ip } | first
let ipv6 = $peer.TailscaleIPs | where { |ip| ":" in $ip } | first
{
host: $peer.HostName,
ipv4: $ipv4,
ipv6: $ipv6,
online: $peer.Online,
active: $peer.Active,
rx: ($peer.RxBytes | into filesize),
tx: ($peer.TxBytes | into filesize),
}
})
if $hostname == null {
$peers
} else {
$peers | where host == $hostname | first | get $path
}
}