ユーザーが自分のIPアドレスを入力する必要がある小さなセットアップスクリプトを作成しようとしています...私はデフォルトのIPアドレスを接続されたSSHセッションのSudo'dスクリプトからリモートクライアントSSH IPを取得する方法
私は、コマンドラインで${SSH_CLIENT%% *}
を実行すると、それは99.99.99.99: command not found
を示し、私はecho ${SSH_CLIENT%% *}
を行うときで実行したとき、それは(次のコード、しかし...(99.99.99.99
は私の実際のWAN IPです)
をちょうど99.99.99.99
を示しbashスクリプト)をさらに精査することにより、更新1
[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
を示し、それは動作しません...私はsudo
でスクリプトを実行する場合を除いて。誰かがこの行動を私に説明し、回避策がありますか?アップデートは2
だから、この動作は、ユーザー(sudo
)を切り替える際に、環境変数が保存されていないことに起因していることであることを説明しにスクリプトを実行するときに、私は-E
フラグを使用することができるとされています
環境を保護する。
残念ながら、これは共有されるスクリプトなので、ユーザーが-E
フラグを使用してスクリプトを実行することは保証できません。さらに、私は彼らがsudo
をまったく使用するかどうかも分かりません。
つまり、私はSSH経由で接続されたユーザのIPアドレスを取得する一貫した方法を探しています。
問題を再現できません。 – iBug
これをスクリプトファイルに追加して実行します。上記の内容をターミナルにコピーすると正常に動作します。しかし、 'script.sh'にあり、実行している場合、IPアドレスは表示されません。 – user1960364
@ user1960364この質問はもはや 'read'や変数に関するものではないので、最初から書き直すべきです(例えば、" ssh経由で実行されるスクリプトからクライアントIPを得る方法 " –