Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

heeelp SHELL

94 réponses
Avatar
yvslart
bonjour tout le monde,
J esp=E8re trouver r=E9ponse =E0 mes questions sur ce forum et j esp=E8re
que
vous aurez un peu de patience parce que je suis d=E9butante en
programmation et j aimerai faire un programme qui semble un
peu .....dur puisque je n ai pa encore trouver de r=E9ponses!
Bon on suppose qu on est l administrateur d un parc informatique et
qu on veut:
1.Etre alert=E9 par e mail si jamais :
-l un des utilisateurs a d=E9pass=E9 le quota ceci dit 1Mo
-ou bien s il a d=E9pass=E9 1000 copies d impression

2.Eteindre tous les ordinateurs chaque vendredi =E0 19h
3.Faire une sauvegarde de donn=E9es de chaque ordinateur et l
enregistrer dans un r=E9pertoire qui aura de nom la date du jour o=F9 la
sauvegarde a =E9t=E9 faite et ce r=E9pertoire doit avoir pour
extension .tgz
(archiv=E9 et compress=E9)
Je note que cette sauvegarde doit aussi se faire chaque dimanche =E0
minuit.
Voil=E0 ceci est le programme et j ai des difficult=E9s avec ....je sais
que je dois utiliser le CRONTAB pour les taches planifi=E9es mais =E0
part
sa....rien!!!
Plz help et je vous remercie =E0 l avance

10 réponses

Avatar
yvslart
Donc voilà ce que je suis parvenu à faire:

echo '00 19 5 * * shutdown now >> /crontab.log >moncrontab
crontab moncrontab

Et pour la première question je ne sais toujours pas comment combiner
avec le "if" mais voilà ce que j'ai fait jusque là mais je ne sais pas
encore si sa va marcher!

-je définis le nombre que je veux pour l'impression donc j'utilise
lpadmin -o job-page-limit00
-j'active les warnings en tapant xfs_quota -c 'warn -u 2 -d 'logname''
-pour le "if" je sais que je dois l'utiliser ainsi:
test expression -o expression

-pour le "mail" : cat sujet_mail | mail -s "attention"
(avec sujet_mail un fichier qui contiendera un texte explicatif)

Mais bon je sens que je suis bien loin de la solution parce que je ne
sais pas sur quelles conditions je pourrai effectuer ce test!
Avatar
Bruno Tréguier
Le 12/01/2010 à 21:27, yvslart a écrit :
Donc voilà ce que je suis parvenu à faire:

echo '00 19 5 * * shutdown now >> /crontab.log >moncrontab
crontab moncrontab



Ok. Bon, j'avais dit que je ne faisais pas de corrections, mais puisque
vous avez fait un effort de votre côté, je vais aussi en faire un du
mien. Je ne vous donne pas la solution, mais vous devriez pouvoir la
trouver.

1) il manque une deuxième "simple quote" quelque part dans votre ligne.
2) c'est pas très beau d'envoyer les logs directement sous la racine. Il
y a un répertoire fait pour ça (/var/log): utilisez-le !
3) il vaut mieux, dans une crontab, spécifier vos commandes via leur
chemin absolu (depuis la racine)
4) pour la spécification de l'heure et du jour du déclenchement de la
commande, vous venez de dire à votre machine: je veux que le shutdown se
passe à 19 heures chaque 5 du mois. Ce n'est pas ce que vous vouliez, je
crois que c'est 19 heures chaque vendredi, non ? Donc encore un petit
truc à corriger. ;-)


Et pour la première question je ne sais toujours pas comment combiner
avec le "if" mais voilà ce que j'ai fait jusque là mais je ne sais pas
encore si sa va marcher!

-je définis le nombre que je veux pour l'impression donc j'utilise
lpadmin -o job-page-limit00
-j'active les warnings en tapant xfs_quota -c 'warn -u 2 -d 'logname''
-pour le "if" je sais que je dois l'utiliser ainsi:
test expression -o expression

-pour le "mail" : cat sujet_mail | mail -s "attention"
(avec sujet_mail un fichier qui contiendera un texte explicatif)



Bon, ben ça commence à venir doucement, tout ça... Il y a de l'idée.

Cela dit, l'option "job-page-limit", à ma connaissance, n'envoie pas de
mail à l'utilisateur. L'effet est plus immédiat: si l'utilisateur a
atteint son quota de pages (ne pas oublier non plus d'ailleurs de
définir la période sur laquelle ce quota doit être pris en compte), il
ne pourra tout simplement plus imprimer. Ce n'est pas ce que vous
voulez, mais c'est presque mieux, dans le principe, non ?

Pour ce qui est des quotas, le problème est un peu similaire si vous
utilisez le système "natif" sous Linux: la vérification est faite à
chaque fois que l'utilisateur écrit dans un fichier, et s'il dépasse la
limite, il aura droit à un message immédiatement, pas par mail.

Je suppose donc que ce qu'on vous demande, c'est de ne pas utiliser ce
système et de le recréer manuellement ? Dans une telle optique, il faut
faire le total de ce que consomme *chaque* utilisateur, et envoyer un
mail à *chaque* "contrevenant"... Il va donc vous falloir faire une
boucle, là. Regardez aussi comment ça peut se faire en shell, ça.


Mais bon je sens que je suis bien loin de la solution parce que je ne
sais pas sur quelles conditions je pourrai effectuer ce test!



Eh bien là encore il faut que vous regardiez quelle est la commande à
employer pour vérifier la place disque prise par un répertoire et ses
sous-répertoires (en supposant que chaque utilisateur ne peut écrire que
dans son propre répertoire et en-dessous, par exemple). Il vous faudra
ensuite comparer cette valeur numérique au maximum autorisé, et en
fonction du résultat, envoyer ou pas un mail.

Bon courage !

Cordialement,

Bruno
Avatar
Benoit Izac
Bonjour,

le 12/01/2010 à 22:58, Bruno Tréguier a écrit dans le message
<hiir92$3e7$ :

echo '00 19 5 * * shutdown now >> /crontab.log >moncrontab
crontab moncrontab



Ok. Bon, j'avais dit que je ne faisais pas de corrections, mais
puisque vous avez fait un effort de votre côté, je vais aussi en faire
un du mien. Je ne vous donne pas la solution, mais vous devriez
pouvoir la trouver.

1) il manque une deuxième "simple quote" quelque part dans votre ligne.
2) c'est pas très beau d'envoyer les logs directement sous la racine.
Il y a un répertoire fait pour ça (/var/log): utilisez-le !
3) il vaut mieux, dans une crontab, spécifier vos commandes via leur
chemin absolu (depuis la racine)
4) pour la spécification de l'heure et du jour du déclenchement de la
commande, vous venez de dire à votre machine: je veux que le shutdown
se passe à 19 heures chaque 5 du mois. Ce n'est pas ce que vous
vouliez, je crois que c'est 19 heures chaque vendredi, non ? Donc
encore un petit truc à corriger. ;-)



5) pas besoin de passer par un fichier temporaire, l'usage de crontab
est plutôt : echo 'la ligne qui va bien' | crontab


-pour le "mail" : cat sujet_mail | mail -s "attention"
(avec sujet_mail un fichier qui contiendera un texte explicatif)





UUOC : mail -s "attention" <corps_mail

--
Benoit Izac
Avatar
yvslart
Merci d'avoir fait une exception en tout cas :)

Bon pour le "shutdown" tu as tout à fait raison je me rattrappe:
echo ' 00 19 * * 5 shutdown now ' >> /var/log/crontab.log >/home/
`logname`/moncrontab
crontab /home/`logname`/moncrontab

Pour le test alors comme tu l'as conclu je dois faire l'envoi
manuellement.
Pour l'impression j'aimerai bien lui envoyer un mail avant qu'il
n'atteigne vraiment son quota disons quand il aura imprimé 999 pages
et quand il aura atteint 1000 alors là comme tu suggères plus
d'impression.
-->je ne comprends pas: (ne pas oublier non plus d'ailleurs de
définir la période sur laquelle ce quota doit être pris en compte)
-->j'ai trouvé que lpadmin -A mail -W permettait d'envoyer une alerte
par mail avec -W temps à choisir
-->il y aussi lpstat -u 'logname' permet de donner toutes les
informations concernant un utilisateur.
En fait je ne sais pas comment les utiliser je suis un peu perdue
evec ce que je veux faire et ce que je "peux" faire .....

Pour les quotas je pense que la commande du /home pourra faire
l'affaire non!?
Avatar
yvslart
Dsl je ne l'avais pas vu merci tout de même.
Donc maintenant sa sera :echo ' 00 19 * * 5 shutdown now ' |crontab
et :mail -s "attention" <sujet_mail

Bon le plus dur est ce qui reste :s
Avatar
Cyrille Lefevre
yvslart a écrit :

Pour les quotas je pense que la commande du /home pourra faire
l'affaire non!?



je ne me souviens pas avoir vu passer l'os et sa version ?
genre Solaris 10 ou Linux Ubuntu 9.10, etc.

Cordialement,

Cyrille Lefevre.
--
mailto:Cyrille.Lefevre-news%
supprimer "%nospam% et ".invalid" pour me repondre.
Avatar
Benoit Izac
Bonjour,

le 13/01/2010 à 03:43, Cyrille Lefevre a écrit dans le message
<hijc0n$i4r$ :

5) pas besoin de passer par un fichier temporaire, l'usage de crontab
est plutôt : echo 'la ligne qui va bien' | crontab



*pas bon non plus*, l'idée est de ne pas remplacer la crontab
existante, mais de l'augmenter, soit :



J'ai juste gardé l'idée d'origine.

-pour le "mail" : cat sujet_mail | mail -s "attention"
(avec sujet_mail un fichier qui contiendera un texte explicatif)





UUOC : mail -s "attention" <corps_mail



crois-tu quel sache ce qu'est un UUOC ? => useless use of cat



Aucune idée, mais ça prend dix secondes avec google pour le savoir.

--
Benoit Izac
Avatar
Bruno Tréguier
yvslart wrote:
Merci d'avoir fait une exception en tout cas :)



Pas de quoi... Vous avez remarqué que depuis que vos messages
comprennent des bouts de code et des hypothèses montrant que vous avez
fait un effort, vous avez plus de réponses ? :-)


Bon pour le "shutdown" tu as tout à fait raison je me rattrappe:
echo ' 00 19 * * 5 shutdown now ' >> /var/log/crontab.log >/home/
`logname`/moncrontab
crontab /home/`logname`/moncrontab



C'est mieux effectivement. C'est correct en tout cas, maintenant, libre
à vous d'optimiser un peu, en fonction des autres propositions, de
Cyrille et Benoît notamment.


Pour le test alors comme tu l'as conclu je dois faire l'envoi
manuellement.
Pour l'impression j'aimerai bien lui envoyer un mail avant qu'il
n'atteigne vraiment son quota disons quand il aura imprimé 999 pages
et quand il aura atteint 1000 alors là comme tu suggères plus
d'impression.



Et s'il est arrivé à 998 pages et qu'il demande l'impression d'un
document de 3 pages ? ;-) Bon là je blague, hein. C'est une bonne idée,
d'envoyer un avertissement avant, si vous pouvez le faire.


-->je ne comprends pas: (ne pas oublier non plus d'ailleurs de
définir la période sur laquelle ce quota doit être pris en compte)



Disons que 1000 pages par jour c'est beaucoup, mais 1000 pages par an,
c'est tout à fait envisageable. Il faut donc que les quotas soient
définis pour une période donnée, au bout de laquelle les compteurs sont
remis à zéro...


-->j'ai trouvé que lpadmin -A mail -W permettait d'envoyer une alerte
par mail avec -W temps à choisir



Tiens, je ne connaissais pas cette option... C'est sur quel système ça ?
Mais si ça existe, tant mieux !


-->il y aussi lpstat -u 'logname' permet de donner toutes les
informations concernant un utilisateur.
En fait je ne sais pas comment les utiliser je suis un peu perdue
evec ce que je veux faire et ce que je "peux" faire .....

Pour les quotas je pense que la commande du /home pourra faire
l'affaire non!?



Si vous n'avez pas de consigne particulière, je pense, oui. A vous de
trouver la bonne commande pour cela maintenant. En "googlant" un peu ça
ne devrait pas être trop dur.

Cordialement,

Bruno
Avatar
yvslart
Bon du répertoire va me donner tous les fichiers et leurs taille et
sa s'arrête à la fin avec ;taille du répertoir(première colonne)
nom du répertoire(seconde colonne) ----->on a fait sa en cours.

J'ai pense à rediriger le du vers un fichier et puis utiliser le cut
pour récupérer le nombre qui représente la taille du home.
A peu près sa: du /home | tail -n 1 | cut -c1

Ai-je besoin de définir le type de séparateur entre les colonnes ou
non?
Et puis disons que j'ai la taille,pour la comparer est-ce que je
reprends ma commande et je fais:
if test 'commande' -ge 1000 -o 'ici la partie impression qui
n'est pas encore résolue'
then
'commande du mail
fi

Et pour la version on utilise Kubuntu 9.04 c'est la version que j'ai.
Avatar
Bruno Tréguier
Le 14/01/2010 à 11:55, yvslart a écrit :
Bon du répertoire va me donner tous les fichiers et leurs taille et
sa s'arrête à la fin avec ;taille du répertoir(première colonne)
nom du répertoire(seconde colonne) ----->on a fait sa en cours.

J'ai pense à rediriger le du vers un fichier et puis utiliser le cut
pour récupérer le nombre qui représente la taille du home.
A peu près sa: du /home | tail -n 1 | cut -c1



Encore une fois, "y'a d'l'idée"... ;-) Mais il y a aussi des erreurs,
assez triviales qui plus est. Vous n'avez pas une machine pour faire les
tests ?

Allez, encore un peu d'aide:
- le "tail" est superflu. Il existe une option dans "du" qui limite la
sortie au total, sur une seule ligne. Cherchez laquelle !
- l'option du "cut" ne vous donnera que le 1er caractère. C'est le 1er
*champ* que vous voulez. Cherchez la bonne option !


Ai-je besoin de définir le type de séparateur entre les colonnes ou
non?



Avec quelques tests, vous devriez pouvoir répondre toute seule à cette
question. ;-)


Et puis disons que j'ai la taille,pour la comparer est-ce que je
reprends ma commande et je fais:
if test 'commande' -ge 1000 -o 'ici la partie impression qui
n'est pas encore résolue'
then
'commande du mail
fi



Ca peut être ça, mais:

- le mail sera différent selon le type de dépassement... Pourquoi
voulez-vous absolument faire ce "ou" entre les deux conditions ?

- vous pouvez aussi utiliser des variables, ça allège l'écriture,
surtout si votre commande est "composite"

# Attention, il s'agit bien de "quotes inversées", ci-dessous. La sortie
# de la commande sera affectée à la variable TAILLE
TAILLE=`commande`
if test $TAILLE -ge 1000
then
envoi_du_mail
fi

Cordialement,

Bruno