Bashスクリプトは、SSH構成(外部IP)の末尾の文字列を読み取って置き換えます。

Bashスクリプトは、SSH構成(外部IP)の末尾の文字列を読み取って置き換えます。

外部 ioaddress をインポートし、SSH 構成ファイルの末尾で置き換えるスクリプトが必要です。

今まで

#!/bin/sh
IP=$(wget http://ipecho.net/plain -qO-)

変数の場合はエコーできますが、SSH設定で現在の外部IPを新しいIPに置き換える方法が必要です。

Host $IP

    User UserName
    Port 22
    IdentityFile ~/.ssh/id_rsa

Host home

    HostName 192.168.0.1

Host away

    HostName 97.113.55.62

去るのは外部的です

だから私が必要とするのは、私のSSH設定exで外部IPを交換することです。ホスト名192.168.0.1(既存のIP)ホスト名192.168.0.2(新しいIP)

ベストアンサー1

また、OLDIPを交換したいので、それを識別する必要があります。

OLDIP=`grep -w away -A 1 /etc/ssh/ssh_config | awk '/Hostname/ {print $2}'`

ここのホスト名行は、この行の直下になければなりません。それ以外の場合にHost away調整する必要があります。-A 1-A 2


-w away「away」という単語を含む行と一致します。

-A 1以前に一致した行の後に行を表示します。

awk '/Hostname/ {print $2}'前の一致行では、ホスト名の行のみを保持し、2番目の列のみを保持します。


次に、OLDIPをIPに置き換えるためにsedを実行します。

sed -i "s/$OLDIP/$IP/g" /etc/ssh/ssh_config

穴は次のとおりです。

#!/bin/sh
IP=$(wget http://ipecho.net/plain -qO-)
OLDIP=`grep -w away -A 1 /etc/ssh/ssh_config | awk '/Hostname/ {print $2}'`
sed -i "s/$OLDIP/$IP/g" /etc/ssh/ssh_config

おすすめ記事