Script Bash para ler e substituir string (ip externo) no final da configuração ssh

0

Eu estou precisando de um script para obter ioaddress externo e substituir no final de um arquivo de configuração ssh

Eu tenho até agora

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

Para uma variável eu posso ecoar, mas preciso de uma maneira de substituir o ip externo curent por um novo em ssh config que se parece com

Host $IP

    User UserName
    Port 22
    IdentityFile ~/.ssh/id_rsa

Host home

    HostName 192.168.0.1

Host away

    HostName 97.113.55.62

Fora é externo

Então o que eu preciso é substituir o ip externo na minha configuração ssh ex. HostName 192.168.0.1 (ip antigo) HostName 192.168.0.2 (novo ip)

    
por user162818 25.03.2016 / 19:41

1 resposta

0

Também precisamos determinar o OLDIP porque é isso que substituímos:

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

É necessário que aqui a linha Nome do host esteja exatamente abaixo da linha Host away , caso contrário você teria que ajustar -A 1 para -A 2 .

-w away corresponde à linha em que você está com a palavra

-A 1 mostra uma linha após a linha ter sido correspondida

awk '/Hostname/ {print $2}' das poucas linhas correspondidas anteriormente, só mantemos a linha de nome de host e, a partir delas, mantemos apenas a segunda coluna.

Então, apenas fazemos um sed para substituir o OLDIP pelo IP.

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

A coisa do buraco seria algo como:

#!/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
    
por 25.03.2016 / 20:08