Korben, roi d’internet, logo bébé avec des lunettes en mode thug life

Aide Création Script Crontab--Terminal --


#1

Bonjour,

J’ai besoin d’aide sur la création d’un script Crontab -dans mon projet —ce script aura pour rôle de supprimer - des comptes utilisateurs ( pour des postes libre service ) détruire les profils à chaque fin de session sur le poste de travail —

Le compte utilisateur aura pour UID un nombre exemple : 78525, celui devra être supprimer à chaque fin de session ou bien au reboot de la machine — Je n’ai pas la maîtrise assez large des commandes Terminal -Linux -Unix —.

Merci pour votre aide !.


#2

C’est vraiment pas clair ce que tu veux faire (contexte ?), qu’est-ce que tu as essayé de faire jusque là ? Pourquoi un script cron ?

http://www.lmgtfy.com/?q=unix+end+session+execute+command

http://www.lmgtfy.com/?q=execute+script+at+logout+linux


#3

Bonsoir,

Merci pour ta réponse, — mon objectif étant de supprimer un compte utilisateur lorsque celui-ci est connecté à un poste, dès sa session de travail terminée, je dois supprimer le contenu de son home directory, par un script automatique, car les postes d’usage sont des postes libre service.

Voilà.


#4

Qu’est-ce que tu as essayé de faire jusque là ?

Sinon… https://superuser.com/a/65526


#5

Bonjour à tous …

Le script cité, non n’est pas l’action que je souhaite effectuer :

-Néanmoins, l’usage de la crontab sous Mac OS X–est fonctionnel, mais je parviens pas à trouver la bonne syntaxe …

Je souhaite supprimer tous les répertoires utilisateurs sauf 2 comptes ; exemple :slight_smile:
Dans le répertoire : cd /Users/ admin, toto, titi,user1

Je souhaite supprimer tous les users sauf : admin, et user1 par exemple ////

j’ai trouvé cette syntaxe, mais pas fonctionnel, une erreur de variable ?

shopt -s extglob rm -rf ! (adminIuser1)

Je suis toujours bloqué …sur cette syntaxe .


#6

Peux-tu donner le contenu exact de la commande que tu essaies de faire ainsi que l’erreur retournée ?

Quel est le contenu exact de ta crontab finalement ?

Ta commande est fausse, tu confonds I et |, elle devrait être shopt -s extglob rm -rf !(admin|user1) glob#extglob (alt+maj+L pour faire le caractère “pipe” sur clavier mac os, les espaces sont importants aussi).


#7

Bonjour à toi BugMenot, merci pour ton retour ainsi que les échanges d’infos --sympas .

Résumé pour mon projet :

Mon objectif étant de supprimer tous les comptes Users qui seront connectés sur le poste libre service ‘‘des comptes OD/AD’’, au reboot par le biais de la crontab qui va supprimer tous les profils connectés sur le poste pour ainsi éviter de stocker en permanence les comptes, lorsque les invités auront terminés leurs sessions ’ libre service qui tourne’’.

Donc j’ai trouvé les premiers éléments d’infos, mais quelques variables manquent pour un fonctionnement optimal …En gros …

Peu importe le nom de session, il devra être supprimer sauf le compte admin local qui se nomme ‘‘admin’’ et un autre compte ‘‘usertemplate’’ qui a servi générer un profil par défaut avec toutes les applications et éviter ainsi de tout remettre ‘‘applications , réglages, préférences, etc’’ de ce côté tout va bien , maintenant la crontab est :

@reboot shopt -s extglob rm -rf ! (admin | usertemplate)

Visiblement non fonctionnel car au reboot , je constate que les comptes users de tests que j’ai crée ‘‘toto, tâta, titi’’ sont encore dans le répertoires cd/Users/…

Faut il ajouter ? = rm -rf /Users/* ! (admin | usertemplate ) c’est la réflexion ?

En gros = tous les users devront être supprimés sauf ‘‘admin et usertempalte’’

Merci à toi pour ton aide. Cool.


#8

Teste ta commande à la main avant d’essayer de la faire exécuter dans ton cron. Tu verras les éventuelles erreurs immédiatement et ce sera plus simple pour tester.
La bonne commande est la suivante :
shopt -s extglob && rm -rf /Users/!(admin|usertemplate). Ce sont deux commandes à la suite : shopt qui permet d’utiliser la syntaxe qui fait une exclusion puis rm qui supprime les fichiers.
Pour tester manuellement tu peux remplacer rm -rf par file, qui est juste une commande qui affiche le type d’un fichier, ça pourra t’éviter de supprimer n’importe quoi par erreur.

J’insiste sur le fait qu’il ne faut pas que tu rajoutes des espaces comme tu le fais, c’est une partie importante de la syntaxe.
Pour vérifier qu’une commande s’effectue bien dans une crontab, fais-là écrire dans un fichier (commande > /Users/admin/unfichierdedebug par ex)


#9

Merci pour ta réactivité –

J’si resté la commande sous shekl bash, en mode sudo :

Voici mes étapes :

Depuis le terminal : lorsque je saisis la commande :
shopt -s extglob && rm -rf /Users/ ! (admin | usertemplate)

Erreur : event ?

Si je saisie en 2 fois : j’appel la 1ere cmde
shopt -s extglob ( je valode )

Ensuite je saisi la sexonde cmde : rm -tf / Users/ ! (admin | usertemplate)

La commande fonctionne ! Il me supprime tous les users sauf ceux indiqué -

Lorsque j’essaie de l’intégrer dans la crontab — pas de résultats –

J’ai fait ces essais sur un poste d’essai

Une idee ?
Sho


#10

Cherche l’intitulé du message d’erreur sur Internet, Erreur : event ? ne ressemble à rien. Si tu as un message d’erreur tu le copies/colles en l’encadrant par trois accents graves pour plus de lisiblité.

Arrête de mettre des espaces là où je n’en mets pas dans les commandes. Fais du copier/coller…

Essaie shopt -s extglob ; rm -rf /Users/!(admin|usertemplate) (&& remplacé par ;).

La commande est fonctionnelle, le problème c’est qu’il faut que je devine ce que tu fais exactement sur ton poste.

Pour ce qui est de l’absence de résultat pour la crontab


#11

Ok–

Y a t il un moyen de t’adresserr par mail les captures d’écran ? Autrement je peux te donner un accès TeeamViewer – tu auras de visu le déroulement de la séquence ?

A toute …:grinning:


#12

Salut BUGMENOT,

J’ai testé en faisant un copier/coller de ta ligne de commande –

Erreur est : -sh: ! : event not found

Pourtant j’ai respecté ta commande ?.. Si tu souhaites, j’ai installé un contrôle à distance, ainsi tu constateras visuellement ce qui se passe ?

Je suis dispo ?


#13

Bon …

J’ai testé la commande, elle fonctionne bien, pas de souci …en revanche, les dossiers de départ sont bien supprimés, mais les comptes de session restent présent , j’ai cherché, j’ai trouvé qu’une commande de type

dscl . -delete /Users/nom de session, supprime le compte, mais comment dans ce cas, supprimer tous les autres comptes sauf, le compte admin et usertemplate ?

J’ai trouvé cette ligne, je n’ai pas assez d’expérience pour réaliser, comment fait on dans le cas, je souhaite supprimer tous les comptes de session sauf les 2 comptes ?

dscl . delete /Users/"$a"; #delete the account ( suppression de compte de session ).

sudo find /Users/* -type d -maxdepth 0 ! -name admin -exec rm -rf {} ; ( valable pour 1 répertoire user )

Je sèche totalement…

@ plus.


#14

Salut Bugmenot…

Je voulais te remercier pour ton aide précieuse qui m’a permis de me mettre sur la bonne voie …

Les commandes sont fonctionnelles — ainsi que dans la crontab —

Autre question sur le même sujet : …les users sont bien supprimés sauf ceux cités -----OK pas de souci …

En revanche la suppression ne concerne que les dossiers de départ ‘’ home directory ‘’…

La commande : dscl . delete/Users/’‘nom de session’’ peut elle disposer aussi d’une exception ??

dscl = directory service commande line

J’ai tenté : un ajout avec shopt -s extglob dscl . delete /Users/!(admin|user1) ===pas fonctionnel --j’ai tenté à tout hasard sans conviction ne sachant pas possible une exception ?..avec dscl?

J’ai effectué une recherche —mais rien …de nouveau difficile de trouver une info …


#15

Ca ne fonctionne pas parce que dscl ne prend pas une liste de répertoires mais qu’un seul répertorie à la fois.
Fais une boucle sur chaque répertoire dans /Users et appelle la commande dscl pour les dossiers qui ne sont pas “admin” ou “usertemplate”. Je ne vais pas te donner la solution toute faite mais voici la documentation utile :


#16

Très bien,

Des remerciements tardifs, la recherche a portée ses fruits, merci à la communauté.

Bien cordial.