Suponha que eu tenha uma sessão SSH em um host remoto e digamos que eu conheça o PID dessa sessão em minha máquina local. Eu estou tentando chegar a um caminho para um processo na minha máquina local para obter programaticamente o diretório de trabalho da sessão SSH no host remoto .
Aqui está a melhor maneira que eu criei.
$ sh -c "$(cat /proc/$SSH_PID/cmdline | tr '$ sh -c "$(cat /proc/$SSH_PID/cmdline | tr '%pre%' ' ')\
'readlink /proc/\$(pgrep -P \
\$(pgrep -u \$(whoami) sshd | tail -n2 | head -n1)\
\$(basename \$SHELL))/cwd'"
' ' ')\
'readlink /proc/\$(pgrep -P \
\$(pgrep -u \$(whoami) sshd | tail -n2 | head -n1)\
\$(basename \$SHELL))/cwd'"
Em outras palavras, obtenha a linha de comando da sessão SSH existente pelo PID e, em seguida, execute-a novamente com um comando para ler o CWD do shell da segunda para a última conexão feita pelo sshd por esse usuário (desde o última seria a conexão executando o comando em si).
Esta claramente não é uma solução muito robusta ou elegante. Existe uma maneira melhor?
Tags ssh networking sshd linux