Connaitre toutes les execution d'une commande

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. Modérateur
    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)
    1. 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.
      1. Modérateur
        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)