Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 24/09/2015, à 10:46

Boombastick

Mauvaise syntaxe sed ?

Salut les basheux !

Dans un script, j'ai besoin d'insérer à la place de la ligne commençant par :

#KILL_ROUTE=

  la ligne de code suivante :

 KILL_ROUTE="/sbin/iptables -I INPUT -s $TARGET$ -j DROP" 

Du coup j'utilise sed de la façon suivante :

sed -i "s/^#KILL_ROUTE=\"\/sbin\/iptables -I INPUT -s $TARGET$ -j DROP\".*$/KILL_ROUTE=\"\/sbin\/iptables -I INPUT -s $TARGET$ -j DROP\"" /etc/portsentry/portsentry.conf

Pourtant sed me notifie une erreur, j'ai beau chercher partout je ne vois pas où est mon erreur sad

Hors ligne

#2 Le 24/09/2015, à 11:13

pingouinux

Re : Mauvaise syntaxe sed ?

Bonjour,
Essaye

sed -i 's@^#KILL_ROUTE=.*@KILL_ROUTE="/sbin/iptables -I INPUT -s $TARGET$ -j DROP"@' fichier

Hors ligne

#3 Le 24/09/2015, à 11:21

nany

Re : Mauvaise syntaxe sed ?

Bonjour,

l’erreur ne serait-elle pas commande `s' inachevée ?
En effet la commande n’est pas fermée, il manque un slash.
De plus, il il faut également échapper les symboles $ sinon sed va rechercher une variable qui n’existe pas et ne va donc pas trouver l’expression.

sed -i "s/^#KILL_ROUTE=\"\/sbin\/iptables -I INPUT -s \$TARGET\$ -j DROP\".*$/KILL_ROUTE=\"\/sbin\/iptables -I INPUT -s \$TARGET\$ -j DROP\"/" /etc/portsentry/portsentry.conf

Mais comme tu dis que tu veux remplacer la ligne « commençant par », il y a plus simple :

sed -i "s/^#KILL_ROUTE=.*$/KILL_ROUTE=\"\/sbin\/iptables -I INPUT -s \$TARGET\$ -j DROP\"/" /etc/portsentry/portsentry.conf

EDIT : grillé une fois de plus par pingouinux (l’homme qui tire des lignes de commande plus vite que son ombre).
À ma décharge : j’ai pris le temps d’expliquer.

Dernière modification par nany (Le 24/09/2015, à 11:46)

En ligne

#4 Le 24/09/2015, à 11:32

pingouinux

Re : Mauvaise syntaxe sed ?

nany #3 a écrit :

j’ai pris le temps d’expliquer

C'est vrai, j'aurais dû le faire…

et en plus il n’a pas échappé les dollars donc le remplacement ne sera pas complet.

Que nenni, nany ! Mon expression est encadrée par ' ' et non " ".

Hors ligne

#5 Le 24/09/2015, à 11:44

nany

Re : Mauvaise syntaxe sed ?

Oui, j’ai vu après coup et j’ai ré-édité. wink

EDIT : sauf qu’une erreur 502 a fait que mon second edit n’avais pas été pris en compte. Cette fois-ci, c’est corrigé.

Dernière modification par nany (Le 24/09/2015, à 11:48)

En ligne

#6 Le 24/09/2015, à 12:16

pingouinux

Re : Mauvaise syntaxe sed ?

[HS]C'est vrai que depuis hier, avec cette foutue Erreur 502, on ne sait jamais si l'envoi a été pris en compte.[/HS]

Hors ligne