Ich versuche, ein kleines Setup-Skript erstellen, die Benutzer ihre eigene IP-Adresse eingeben müssen ... Ich versuche, die Standard-IP-Adresse sein der verbundenen SSH-Sitzung.So erhalten Sie Remote-Client-SSH-IP von Sudo'd Skript
Wenn ich ${SSH_CLIENT%% *}
in der Befehlszeile ausführen, zeigt es 99.99.99.99: command not found
und wenn ich echo ${SSH_CLIENT%% *}
tun zeigt es nur 99.99.99.99
(wo 99.99.99.99
ist meine eigentliche WAN IP) ...
jedoch der folgende Code (im lief eine bash-Skript) zeigt
[6/9] Enter your public IP address. (eg.) :
declare CONNECTED_IP=${SSH_CLIENT%% *}
read -e -p "[6/9] Enter your public IP address. (eg. $CONNECTED_IP) : " ipAddress
[ -z "$ipAddress" ] && ipAddress=$CONNECTED_IP
Update 1
Bei der weiteren Überprüfung es funktioniert ... außer wenn ich das Skript mit sudo
ausführe. Kann mir jemand dieses Verhalten erklären und gibt es einen Workaround?
Update 2
Also, es sein worden ist erklärt, dass dieses Verhalten auf die Tatsache zurückzuführen ist, dass Umgebungsvariablen wird nicht beibehalten, wenn Benutzerwechsel (sudo
) und dass ich die -E
Flags verwenden könnte, wenn das Skript ausführen zu Die Umwelt bewahren.
Leider ist dies ein Skript, das geteilt wird, und ich kann daher nicht sicherstellen, dass der Benutzer das Skript mit dem -E
Flag ausführt. Außerdem weiß ich nicht einmal, ob sie überhaupt sudo
verwenden werden.
Das Gesagte, ich bin auf der Suche nach einer einheitlichen Möglichkeit, die IP-Adresse des Benutzers über SSH verbunden zu erhalten.
Ich kann das Problem nicht reproduzieren. – iBug
Fügen Sie es zu einer Skriptdatei hinzu und führen Sie es dann aus ... wenn ich kopiere, was ich oben in das Terminal geschrieben habe, funktioniert es gut. Wenn es sich jedoch in 'script.sh' befindet und ich es ausführe, wird keine IP-Adresse angezeigt. – user1960364
@ user1960364 Da diese Frage nicht mehr von 'read' oder Variablen handelt, sollten Sie sie vielleicht von Grund auf neu schreiben (zB" Wie bekomme ich Client IP von einem Skript mit sudo über ssh ") –