Es wurde versucht, die eingehende SSH-IP-Adresse in der tmux-Statusleiste festzulegen

2

Ich versuche, die eingehende IP-Adresse meines SSH-Clients in der tmux-Statusleiste festzulegen, aber für mein ganzes Leben kann ich das nicht herausfinden. Dies ist meine aktuelle Einstellung in meiner .tmux.conf

set -g status-right '#[fg=white]#(echo $SSH_CONNECTION | awk '{print $1}')'

Was gibt?

Josh D
quelle
2
Was ist echo $SSH_CLIENT|cut -d " " -f 1? Oder um bei Ihrem Beispiel zu bleiben: echo $SSH_CONNECTION | awk "{print \$1}"...
0xC0000022L
Das unmittelbare Problem bei Ihnen status-rightist, dass Sie versuchen, einfache Anführungszeichen in andere einfache Anführungszeichen zu setzen. Der Kommentar von STATUS_ACCESS_DENIED und meine Antwort sprechen dieses Problem an.
Chepner

Antworten:

1

Versuche dies. Mit der Bash-Parameter-Erweiterung können Sie mithilfe des% -Operators ein Suffix aus der Erweiterung einer Variablen entfernen. Ein einzelnes% -Zeichen entspricht dem kürzesten Suffix, %% dem längsten. Da SSH_CONNECTIONes drei durch Leerzeichen getrennte Felder gibt, müssen Sie %% verwenden, um alle Felder außer dem ersten (der IP-Adresse) zu entfernen.

${SSH_CONNECTION%% *}  # Remove the first space and everything that follows it.

Da der Wert von zuerst status-rightverarbeitet wird strftime(3), müssen Sie die Prozentzeichen verdoppeln, da strftime%% durch ein Literal% ersetzt wird.

set -g status-right '#[fg=white]#(echo ${SSH_CONNECTION%%%% *})'
chepner
quelle
1
Befehle in #()erben die "globale" Umgebung. Dies bedeutet, dass der angezeigte Wert von dem Zeitpunkt an stammt, an dem der Server gestartet wurde. Wenn das OP möchte, dass der vom letzten Client bereitgestellte Wert an die Sitzung angehängt wird, muss die Ausgabe von analysiert werden tmux show-env. So etwas wie set -g status-right 'foo…#(tmux show-env|grep ^SSH_CONNECTION=|cut -d= -f2|cut -d" " -f1)…bar'(leichter zu verstehen?) Oder set -g status-right 'foo…#(tmux show-env|sed -n "/^SSH_CONNECTION=/{s/[^=]*=//;s/ .*//;p;}")…bar'(weniger Prozesse).
Chris Johnsen
Sehr guter Punkt, und verdient eine eigene Antwort.
chepner
Nichts von dieser Arbeit für mich :( Was könnte es sein? Ich habe hier jedes andere Beispiel ausprobiert - immer leere Bar.
FelikZ