Comando SSH remoto com sed não funcionando

1

No servidor remoto, posso executar este comando:

sed -i '/address/c\address xx.xx.xx.xx' /myfile

para substituir qualquer linha que contenha address com address xx.xx.xx.xx em /myfile

No entanto, na minha máquina local, este comando não está funcionando

ssh root@ip sed -i '/address/c\address xx.xx.xx.xx' /myfile

Ocorre o seguinte erro:

sed: can't read xx.xx.xx.xx: No such file or directory

Como corrigir esse problema?

    
por aye 24.04.2017 / 12:22

2 respostas

1

Você está impedindo a expansão no shell local, mas é necessário preservar tudo até o comando a ser executado, sed neste caso, em ambos os shells.

Cite o comando sed para executar:

ssh root@ip "sed -i '/address/c\address xx.xx.xx.xx' /myfile"

Em essência, qualquer método de citação sobre a corrente também seria usado, mas usar aspas duplas como acima seria mais simples e mais limpo.

    
por heemayl 24.04.2017 / 12:26
0

Para substituir você deve usar o sed dessa maneira:

sed -i 's/^.*address/address xx.xx.xx.xx/' yourfile

Este regex deve encontrar "endereço" no seu arquivo e substituí-lo por "endereço xx.xx.xx.xx".

    
por SanHolo 24.04.2017 / 13:14