Re: root OK sudo non OK : pourquoi ?

Startseite

Nachricht beantworten
Autor: Pierre Mazein
Datum:  
To: guilde
Betreff: Re: root OK sudo non OK : pourquoi ?
Bonjour,

Ne pouvez vous pas utiliser un fichier script pour éviter la ligne de
commande est le travail de substitution de bash :

       -f script-file, --file=script-file

              add the contents of script-file to the commands to be
executed

Expérience par l'esprit :

$ cat sedsctipt.txt
's/^#$//g; /./,/^$/\!d'

$sudo bash -c "sed -f sedscript.txt jail.conf > jail.local"

Travail fait ?

Pierre

Le 06/03/2018 à 08:11, Marc TERRIER a écrit :
> Le 05/03/2018 à 14:35, BOITEUX, Frederic a écrit :
>>     Bonjour,
>>
>> Ton erreur « !d': event not found » vient du bash, pas de sed : par
>> défaut le caractère « ! » permet de rappeler une commande précédente
>> en bash… Pour éviter ton souci, je pense qu'il faut que tu mettes un
>> anti-slash devant ton ! pour qu'il ne soit pas interprété par bash
>> ; attention, tu as aussi un $ dans ton expression sed. Tu peux essayer :
>>
>> $ sudo bash -c "sed 's/^#$//g; /./,/^$/\!d' jail.conf > jail.local"
>>
>> Mais peut-être faudra-t-il des \ supplémentaires, car il y a 2
>> niveaux de subsitutions : le bash où tu lances ton sudo, et celui
>> lancé par ton sudo !
>>
>>     Cdlt,
>>         Fred.
>
> Bonjour,
>
> Piste intéressante, les antislashs, mais je n'ai pas encore trouvé
> *la* solution (excepté celle proposée par Christian) :
>
> pi@raspi:/etc/fail2ban $ sudo bash -c "sed 's/^#$//g; /./,/^$/!d'
> jail.conf > jail.local"
> -bash: !d': event not found
> pi@raspi:/etc/fail2ban $ sudo bash -c "sed 's/^#$//g; /./,/^$/\!d'
> jail.conf > jail.local"
> sed: -e expression n°1, caractère 19: commande inconnue: `\'
> pi@raspi:/etc/fail2ban $ sudo bash -c "sed 's/^#$//g; /./,/^$/\\!d'
> jail.conf > jail.local"
> sed: -e expression n°1, caractère 19: commande inconnue: `\'
> pi@raspi:/etc/fail2ban $ sudo bash -c "sed \'s/^#$//g; /./,/^$/!d\'
> jail.conf > jail.local"
> -bash: !d\': event not found
> pi@raspi:/etc/fail2ban $ sudo bash -c "sed \\'s/^#$//g; /./,/^$/!d\\'
> jail.conf > jail.local"
> -bash: !d\\': event not found
> pi@raspi:/etc/fail2ban $
>
> Je découvre aussi, à cette occasion, que quand la commande provoque
> une erreur comme le "!d': event not found", la commande n'est pas
> ajoutée dans l'historique des commandes.
>
> Mais ces histoires d'environnement et de niveaux de substitution sont
> clairement des pistes intéressantes à creuser.
>
> Merci.
>