48 lines
1.5 KiB
Bash
Executable file
48 lines
1.5 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
|
|
source "$CURRENT_DIR/helpers.sh"
|
|
|
|
get_username() {
|
|
tty=${1:-$(tmux display -p '#{pane_tty}')}
|
|
ssh_only=$2
|
|
# shellcheck disable=SC2039
|
|
if [ x"$OSTYPE" = x"cygwin" ]; then
|
|
pid=$(ps -a | awk -v tty="${tty##/dev/}" '$5 == tty && /ssh/ && !/vagrant ssh/ && !/autossh/ && !/-W/ { print $1 }')
|
|
[ -n "$pid" ] && ssh_parameters=$(tr '\0' ' ' < "/proc/$pid/cmdline" | sed 's/^ssh //')
|
|
else
|
|
ssh_parameters=$(ps -t "$tty" -o command= | awk '/ssh/ && !/vagrant ssh/ && !/autossh/ && !/-W/ { $1=""; print $0; exit }')
|
|
fi
|
|
if [ -n "$ssh_parameters" ]; then
|
|
# shellcheck disable=SC2086
|
|
username=$(ssh -G $ssh_parameters 2>/dev/null | awk 'NR > 2 { exit } ; /^user / { print $2 }')
|
|
# shellcheck disable=SC2086
|
|
[ -z "$username" ] && username=$(ssh -T -o ControlPath=none -o ProxyCommand="sh -c 'echo %%username%% %r >&2'" $ssh_parameters 2>&1 | awk '/^%username% / { print $2; exit }')
|
|
else
|
|
# shellcheck disable=SC2039
|
|
if [ x"$OSTYPE" = x"cygwin" ]; then
|
|
username=$(whoami)
|
|
else
|
|
username=$(ps -t "$tty" -o user= -o pid= -o ppid= -o command= | awk '
|
|
!/ssh/ { user[$2] = $1; ppid[$3] = 1 }
|
|
END {
|
|
for (i in user)
|
|
if (!(i in ppid))
|
|
{
|
|
print user[i]
|
|
exit
|
|
}
|
|
}
|
|
')
|
|
fi
|
|
fi
|
|
|
|
echo "$username"
|
|
}
|
|
|
|
main() {
|
|
local tmux_username=$(get_username)
|
|
echo "$tmux_username"
|
|
}
|
|
main
|