Connaitre toutes les execution d'une commande

xunil2003 Messages postés 766 Date d'inscription   Statut Membre Dernière intervention   -  
jisisv Messages postés 3678 Statut Modérateur -
Bonjour,

Je voudrais savoir toutes les exécutions effectuer d'une commande situé dans :
/usr/bin/cm15

Y a t'il un moyen de savoir toutes les commande executer via
/usr/bin/cm15
genre comme un log ?

Es-ce que les système linux peut récupérer les commande exécuter et les mettre dans un fichier texte ?

Merci.

4 réponses

  1. jisisv Messages postés 3678 Statut Modérateur 936
     
    Qu'entends-tu par "toutes les exécutions effectuer d'une commande " ?
    Connaître les appels système effectués par le binaire ?

    Si c'est le cas , dirige-toi vers strace
    Un exemple: rechercher tous les essaisd'ouverture de la commande mdir n:
    johand@osiris: ~/tmp $ strace -o mdir.log mdir n: 
     Volume in drive N is ARCHOS 2    
     Volume Serial Number is E86A-0002 
    Directory for N:/ 
    
    PHOTO        <DIR>     1980-00-00   0:00  
    MUSIC        <DIR>     2012-05-11  18:12  
    VIDEO        <DIR>     1980-00-00   0:00  
    RECORD       <DIR>     1980-00-00   0:00  
            4 files          11 663 312 bytes 
                         15 732 834 304 bytes free 
    
    johand@osiris: ~/tmp $ grep open mdir.log  
    open("/etc/ld.so.cache", O_RDONLY)      = 3 
    open("/lib/x86_64-linux-gnu/libnsl.so.1", O_RDONLY) = 3 
    open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY) = 3 
    open("/usr/lib/locale/locale-archive", O_RDONLY) = 3 
    open("/etc/mtools.conf", O_RDONLY)      = 3 
    open("/etc/default/mtools.conf", O_RDONLY) = -1 ENOENT (No such file or directory) 
    open("/etc/mtools.conf", O_RDONLY)      = 3 
    open("/home/johand/.mtoolsrc", O_RDONLY) = -1 ENOENT (No such file or directory) 
    open("/dev/disk/by-uuid/E86A-0002", O_RDONLY|O_EXCL) = 3 
    open("/usr/lib/x86_64-linux-gnu/gconv/gconv-modules.cache", O_RDONLY) = 4 
    open("/usr/lib/x86_64-linux-gnu/gconv/IBM850.so", O_RDONLY) = 4 
    open("/etc/localtime", O_RDONLY)


    Donc: man 1 strace
    Gates gave ^H sold you the windows.
    GNU gave us the whole house.(Alexandrin)
    0
  2. xunil2003 Messages postés 766 Date d'inscription   Statut Membre Dernière intervention   14
     
    Bonsoir,

    C'est pour un projet.
    J'ai besoin de récupèrer toutes les exécution qui ont était réalisé avec la commande
    cm15
    situé dans
    /usr/bin/


    Exemple : si un utilisateur tape :
    cm15 A1 on
    cm15 E1 off
    cm15 P16 on

    uniquement pour cette commande, je veux pouvoir le voir dans un fichier log
    du genre :

    03-06-2012 - 07:16:47 - cm15 A1 on
    03-06-2012 - 16:16:47 - cm15 E1 off
    03-06-2012 - 18:16:47 - cm15 P16 on


    la question est comment faire ?

    Merci.
    0
  3. jisisv Messages postés 3678 Statut Modérateur 936
     
    Ecris un script du genre :
    johand@osiris: ~/tmp $ cat ls-log.sh    
    #!/bin/bash   
    CMD=/bin/ls   
    LOGFILE=/home/johand/log/$(basename $CMD ).log   
    NOW=$(date)
    # ou plus rapide  NOW=$(printf '%(%x %X)T' -1)
    # puisque printf est une commande interne de bash
    
    cat >> $LOGFILE <<LOGITEM   
    $NOW: $@   
    LOGITEM   
    
    exec $CMD $@   
    johand@osiris: ~/tmp $ cat ls-log.sh    
    #!/bin/bash   
    CMD=/bin/ls   
    LOGFILE=/home/johand/log/$(basename $CMD ).log   
    NOW=$(date)   
    
    cat >> $LOGFILE <<LOGITEM   
    $NOW: $@   
    LOGITEM   
    
    exec $CMD $@   
    johand@osiris: ~/tmp $ ./ls-log.sh /tmp /usr > /dev/null    
    johand@osiris: ~/tmp $ cat ~/log/ls.log    
    dimanche 3 juin 2012, 20:45:11 (UTC+0200): /tmp /usr


    Evidemment, si tu possèdes les sources du binaire, rien ne t'empêche d'ajouter une fonction de journalisation.

    Gates gave ^H sold you the windows.
    GNU gave us the whole house.(Alexandrin)
    0