3 votes

La commande SSH à distance avec sed ne fonctionne pas

Dans le serveur distant, je peux exécuter cette commande :

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

pour remplacer toute ligne contenant address con address xx.xx.xx.xx en /myfile

Cependant, depuis ma machine locale, cette commande ne fonctionne pas

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

Il donne l'erreur suivante :

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

Comment résoudre ce problème ?

3voto

heemayl Points 85741

Vous empêchez l'expansion sur le Shell local, mais vous devez tout préserver en ce qui concerne la commande à exécuter, sed dans ce cas, sur les deux coquilles.

Citer le sed à exécuter :

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

En fait, n'importe quelle méthode de citation ferait l'affaire, mais l'utilisation de guillemets doubles comme ci-dessus serait plus simple et plus propre.

0voto

SanHolo Points 157

Pour le remplacer, vous devez utiliser sed de cette façon :

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

Cette regex devrait trouver "adresse" dans votre fichier et le remplacer par "adresse xx.xx.xx.xx".

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X