IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

liste de comptes doublons (cron)


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 65
    Par défaut liste de comptes doublons (cron)
    Bonjour à tous,

    avec la commande uniq je n'arrive pas a sortir quelques choses de propres de cette liste pour insérer les vrai compte comme (pas comme - , cron , Poller )
    dans le fichier cron.allow si il n'y sont pas deja.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
     
     
     
     
     
    cron
     
     
    -
    nagios
     
     
    nagios
     
     
     
     
    cron
     
     
     
    nagios
     
    Poller
    nagios
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    de
    nagios
     
    donnees
    nagios
     
    root
    root
    root
     
     
    root
    root
    pour l'instant j'en suis ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    cd /etc/cron.d/
    for i in *; do cat $i | awk -F " " '{print $6}'; done >> liste.txt
    il existe une autre commande mieux que uniq pour faire ça ?

    merci d'avance

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 65
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    for i in *; do cat $i | awk -F " " '{print $6}'; done | sed '/^$/d' | awk '!($1 in a);{a[$1]}' >> liste.txt
    maintenant il faut que je test si chaque ligne est un vrai utilisateur avec passwd et l'inserer dans cron.allow si il n'y est pas deja...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 65
    Par défaut
    j'en suis la :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    for i in *; do cat $i | awk -F " " '{print $6}'; done | sed '/^$/d' | awk '!($1 in a);{a[$1]}' >> liste.tmp
     
    awk -F ":" '{print $1}' /etc/passwd >> liste-reel-user.tmp
     
    for z in `cat liste.tmp`; do grep $z liste-reel-user.tmp; done >> user-futur-cron.tmp
     
    for z in `cat user-futur-cron.tmp`
    do
    if ! grep $z cron.allow
    then
     echo $z >> cron.allow
    else
     echo lol >> /dev/null
    fi
    done
    ça marche mais y a un petit bug avec un user "shutdown" qui traine et se retrouve dans mon cron.allow alors qu'il a rien a y foutre.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 65
    Par défaut
    fini en faite fallait juste pas laisser le fichier script dans le meme repertoire sinon il se traite aussi

  5. #5
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 658
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 658
    Par défaut
    Bonjour,

    Code non testé : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #!/bin/bash
    
    Le_Repertoire=/path/repertoire
    users=( $(cut -d':' -f1 /etc/passwd | sort) )
    for file in $Le_Repertoire
    do while read senfout senfout senfout senfout senfout SENFOUTPAS senfout
       do y_est=0
          for user in "${users[@]}"
          do [ "$user" = "$SENFOUTPAS" ] && y_est=1
          done
       done
       [ $y_est -eq 0 ] && echo $SENFOUTPAS >> cron.allow
       done < <(sort -u $file)
    done
    ...
    ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 65
    Par défaut
    execution avec set -x il bloque ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    + Le_Repertoire=/etc/cron.d/
    + users=($(cut -d':' -f1 /etc/passwd | sort))
    ++ cut -d: -f1 /etc/passwd
    ++ sort
    ++ sort -u
    + for file in '$Le_Repertoire'
    + read senfout senfout senfout senfout senfout SENFOUTPAS senfout

  7. #7
    Membre émérite Avatar de jmelyn
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2007
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2007
    Messages : 703
    Par défaut
    Bonjour,

    Est-ce que ce code fonctionne? Je ne peux pas le tester ou je suis...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    awk '/^[0-9]/ {print $6}' /etc/cron.d/* | sort -u > /tmp/cron.users
    awk -F ':' {print $1}' /etc/passwd | join - /tmp/cron.users > /etc/cron.d/cron.allow

Discussions similaires

  1. [VBA-E] Liste unique sans doublon
    Par MatMeuh dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 20/07/2007, 10h39
  2. Manipulation de listes (moyenne de doublons)
    Par BaBoU_77 dans le forum Prolog
    Réponses: 4
    Dernier message: 06/06/2007, 01h44
  3. [Formulaire]liste déroulante sans doublon
    Par kovrov dans le forum IHM
    Réponses: 15
    Dernier message: 01/04/2007, 20h09
  4. [Formulaire]Liste déroulante sans doublons
    Par frevale dans le forum IHM
    Réponses: 2
    Dernier message: 22/03/2007, 21h54
  5. Réponses: 3
    Dernier message: 24/04/2006, 19h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo