OVH Cloud OVH Cloud

script shell

19 réponses
Avatar
adresse_non_valide
Bonsoir,

j'aimerai automatiser l'effacement de mes fichiers log. Pour ça j'ai
écrit le script shell suivant :

sudo cp /dev/null /chemin/fichier1.log
sudo cp /dev/null /chemin/fichier2.log
sudo cp /dev/null /chemin/fichier3.log
exit0

le script me demande bien le mot de passe pour rentrer en root mais le
probleme c'est que ça ne fonctionne pas : les fichiers ne sont pas
effacés. Ma question : comment faire pour faire executer au system
plusieurs instructions en tant que root ?
Merci pour vos contributions.

10 réponses

1 2
Avatar
Patrick Stadelmann
In article <1h5kgz1.11bylq3jh8yyuN%,
(Barbabule) wrote:

j'aimerai automatiser l'effacement de mes fichiers log. Pour ça j'ai
écrit le script shell suivant :

sudo cp /dev/null /chemin/fichier1.log
sudo cp /dev/null /chemin/fichier2.log
sudo cp /dev/null /chemin/fichier3.log
exit0

le script me demande bien le mot de passe pour rentrer en root mais le
probleme c'est que ça ne fonctionne pas : les fichiers ne sont pas
effacés. Ma question : comment faire pour faire executer au system
plusieurs instructions en tant que root ?


Utiliser sudo pour lancer le script au lieu de l'utiliser à l'intérieur.

Patrick
--
Patrick Stadelmann

Avatar
adresse_non_valide
Patrick Stadelmann wrote:

In article <1h5kgz1.11bylq3jh8yyuN%,
(Barbabule) wrote:

j'aimerai automatiser l'effacement de mes fichiers log. Pour ça j'ai
écrit le script shell suivant :

sudo cp /dev/null /chemin/fichier1.log
sudo cp /dev/null /chemin/fichier2.log
sudo cp /dev/null /chemin/fichier3.log
exit0

le script me demande bien le mot de passe pour rentrer en root mais le
probleme c'est que ça ne fonctionne pas : les fichiers ne sont pas
effacés. Ma question : comment faire pour faire executer au system
plusieurs instructions en tant que root ?


Utiliser sudo pour lancer le script au lieu de l'utiliser à l'intérieur.

Patrick


ok merci ça fonctionne, mais comme j'avais créer un fichier
resetlog.command executable (chmod 755) j'aurai voulu une solution ou je
fait un double clic sur le fichier et le script et lancé. Voir même si
possible sans avoir a rentrer un mot de passe un peu comme les cript
automatique de nettoyage.
Merci pour ta réponse.


Avatar
junk
Barbabule wrote:

j'aimerai automatiser l'effacement de mes fichiers log. Pour ça j'ai
écrit le script shell suivant :

sudo cp /dev/null /chemin/fichier1.log
sudo cp /dev/null /chemin/fichier2.log
sudo cp /dev/null /chemin/fichier3.log
exit0

le script me demande bien le mot de passe pour rentrer en root mais le
probleme c'est que ça ne fonctionne pas : les fichiers ne sont pas
effacés. Ma question : comment faire pour faire executer au system
plusieurs instructions en tant que root ?


Utiliser sudo pour lancer le script au lieu de l'utiliser à l'intérieur.

Patrick


ok merci ça fonctionne, mais comme j'avais créer un fichier
resetlog.command executable (chmod 755) j'aurai voulu une solution ou je
fait un double clic sur le fichier et le script et lancé. Voir même si
possible sans avoir a rentrer un mot de passe un peu comme les cript
automatique de nettoyage.
Merci pour ta réponse.


Tu peux faire quelque chose comme ça en AppleScript :

-----------------
display dialog "Remove log files?" buttons {"Cancel", "Remove"} default
button "Remove" with icon note

set the user_choice to the button returned of the result

if the user_choice is "Remove" then
do shell script "rm /chemin/fichier1.log; /chemin/fichier2.log;"
with administrator privileges
end if
-----------------

fu2 fcsmp

--
Nicolas Seriot



Avatar
kurtz le pirate
In article <1h5kgz1.11bylq3jh8yyuN%,
(Barbabule) wrote:

::Bonsoir,
::
::j'aimerai automatiser l'effacement de mes fichiers log. Pour ça j'ai
::écrit le script shell suivant :
::
::sudo cp /dev/null /chemin/fichier1.log
::sudo cp /dev/null /chemin/fichier2.log
::sudo cp /dev/null /chemin/fichier3.log
::exit0
::
::le script me demande bien le mot de passe pour rentrer en root mais le
::probleme c'est que ça ne fonctionne pas : les fichiers ne sont pas
::effacés. Ma question : comment faire pour faire executer au system
::plusieurs instructions en tant que root ?
::Merci pour vos contributions.

bien sur que tes fichiers ne seront pas effacés!!!
<cp> a veux dire copy :)))

utilises <rm>. et si tes fichiers sont nommés comme l'exemple, un seule
ligne est suffisante : <rm /chemin/fichier*>

klp
Avatar
adresse_non_valide
kurtz le pirate wrote:

In article <1h5kgz1.11bylq3jh8yyuN%,
(Barbabule) wrote:

::Bonsoir,
::
::j'aimerai automatiser l'effacement de mes fichiers log. Pour ça j'ai
::écrit le script shell suivant :
::
::sudo cp /dev/null /chemin/fichier1.log
::sudo cp /dev/null /chemin/fichier2.log
::sudo cp /dev/null /chemin/fichier3.log
::exit0
::
::le script me demande bien le mot de passe pour rentrer en root mais le
::probleme c'est que ça ne fonctionne pas : les fichiers ne sont pas
::effacés. Ma question : comment faire pour faire executer au system
::plusieurs instructions en tant que root ?
::Merci pour vos contributions.

bien sur que tes fichiers ne seront pas effacés!!!
<cp> a veux dire copy :)))

utilises <rm>. et si tes fichiers sont nommés comme l'exemple, un seule
ligne est suffisante : <rm /chemin/fichier*>

klp


je ne veux pas les effacer définitivement, juste effacer leur contenu,
mais le fichier doit rester en place. En fait je cherche a faire un
script de nettoyage de certain fichiers log non géré par les script
apple.
merci pour vos réponses.

Avatar
kurtz le pirate
In article <1h5lmhh.q5ejx21kzn7ggN%,
(Barbabule) wrote:

::kurtz le pirate wrote:
::
::> In article <1h5kgz1.11bylq3jh8yyuN%,
::> (Barbabule) wrote:
::>
::> ::Bonsoir,
::> ::
::> ::j'aimerai automatiser l'effacement de mes fichiers log. Pour ça j'ai
::> ::écrit le script shell suivant :
::> ::
::> ::sudo cp /dev/null /chemin/fichier1.log
::> ::sudo cp /dev/null /chemin/fichier2.log
::> ::sudo cp /dev/null /chemin/fichier3.log
::> ::exit0
::> ::
::> ::le script me demande bien le mot de passe pour rentrer en root mais le
::> ::probleme c'est que ça ne fonctionne pas : les fichiers ne sont pas
::> ::effacés. Ma question : comment faire pour faire executer au system
::> ::plusieurs instructions en tant que root ?
::> ::Merci pour vos contributions.
::>
::> bien sur que tes fichiers ne seront pas effacés!!!
::> <cp> a veux dire copy :)))
::>
::> utilises <rm>. et si tes fichiers sont nommés comme l'exemple, un seule
::> ligne est suffisante : <rm /chemin/fichier*>
::>
::> klp
::
::je ne veux pas les effacer définitivement, juste effacer leur contenu,
::mais le fichier doit rester en place. En fait je cherche a faire un
::script de nettoyage de certain fichiers log non géré par les script
::apple.
::merci pour vos réponses.

ha, c'est pas même chose 'effacer' un fichier et 'vider'. alors essayes
un truc du genre : cat /dev/null > /chemin/fichier.log

si le fichier existe déjà, il est vidé, sinon, il est créé vide.
ça répond mieux à ta demane ?

klp
Avatar
pere.noel
kurtz le pirate wrote:

utilises <rm>. et si tes fichiers sont nommés comme l'exemple, un seule
ligne est suffisante : <rm /chemin/fichier*>


j'ajouterais que, pour éviter d'avoir à entrer le pwd, il suffit de
faire :

echo <ton-pwd> | sudo rm -f /path/to/le/fichier-a-deruire

l'inconvénient étant que dans ce cas, le pwd est en clair dans un
fichier *.command
--
une bévue

Avatar
adresse_non_valide
kurtz le pirate wrote:

In article <1h5lmhh.q5ejx21kzn7ggN%,
(Barbabule) wrote:

::kurtz le pirate wrote:
::
::> In article <1h5kgz1.11bylq3jh8yyuN%,
::> (Barbabule) wrote:
::>
::> ::Bonsoir,
::> ::
::> ::j'aimerai automatiser l'effacement de mes fichiers log. Pour ça j'ai
::> ::écrit le script shell suivant :
::> ::
::> ::sudo cp /dev/null /chemin/fichier1.log
::> ::sudo cp /dev/null /chemin/fichier2.log
::> ::sudo cp /dev/null /chemin/fichier3.log
::> ::exit0
::> ::
::> ::le script me demande bien le mot de passe pour rentrer en root mais le
::> ::probleme c'est que ça ne fonctionne pas : les fichiers ne sont pas
::> ::effacés. Ma question : comment faire pour faire executer au system
::> ::plusieurs instructions en tant que root ?
::> ::Merci pour vos contributions.
::>
::> bien sur que tes fichiers ne seront pas effacés!!!
::> <cp> a veux dire copy :)))
::>
::> utilises <rm>. et si tes fichiers sont nommés comme l'exemple, un seule
::> ligne est suffisante : <rm /chemin/fichier*>
::>
::> klp
::
::je ne veux pas les effacer définitivement, juste effacer leur contenu,
::mais le fichier doit rester en place. En fait je cherche a faire un
::script de nettoyage de certain fichiers log non géré par les script
::apple.
::merci pour vos réponses.

ha, c'est pas même chose 'effacer' un fichier et 'vider'. alors essayes
un truc du genre : cat /dev/null > /chemin/fichier.log

si le fichier existe déjà, il est vidé, sinon, il est créé vide.
ça répond mieux à ta demane ?

klp


Oui c'est ce que je veux faire, mais pour ça il me faut les privilèges
root. Ma question et comment implementer la commande sudo dans le script
shell pour plusieurs lignes de commande.

Avatar
Patrick Stadelmann
In article <1h5lmru.meyn0zpv4j9jN%,
(Une bévue) wrote:

kurtz le pirate wrote:

utilises <rm>. et si tes fichiers sont nommés comme l'exemple, un seule
ligne est suffisante : <rm /chemin/fichier*>


j'ajouterais que, pour éviter d'avoir à entrer le pwd, il suffit de
faire :

echo <ton-pwd> | sudo rm -f /path/to/le/fichier-a-deruire

l'inconvénient étant que dans ce cas, le pwd est en clair dans un
fichier *.command


Mieux vaut passer par un AppleScript et utiliser le Trousseau pour
récupérer le mot de passe. Ou alors utiliser le bit "suid" sur le shell
script pour qu'il s'exécute en root.

Patrick
--
Patrick Stadelmann


Avatar
adresse_non_valide
Patrick Stadelmann wrote:

In article <1h5lmru.meyn0zpv4j9jN%,
(Une bévue) wrote:

kurtz le pirate wrote:

utilises <rm>. et si tes fichiers sont nommés comme l'exemple, un seule
ligne est suffisante : <rm /chemin/fichier*>


j'ajouterais que, pour éviter d'avoir à entrer le pwd, il suffit de
faire :

echo <ton-pwd> | sudo rm -f /path/to/le/fichier-a-deruire

l'inconvénient étant que dans ce cas, le pwd est en clair dans un
fichier *.command


Mieux vaut passer par un AppleScript et utiliser le Trousseau pour
récupérer le mot de passe. Ou alors utiliser le bit "suid" sur le shell
script pour qu'il s'exécute en root.

Patrick


et l'on fait comment pour faire ça ? (récupérer le bit 'suid').



1 2