Connaitre toutes les execution d'une commande

Fermé
xunil2003 Messages postés 766 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 29 septembre 2024 - Modifié par xunil2003 le 3/06/2012 à 14:05
jisisv Messages postés 3645 Date d'inscription dimanche 18 mars 2001 Statut Modérateur Dernière intervention 15 janvier 2017 - 3 juin 2012 à 20:49
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.

A voir également:

4 réponses

dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 621
3 juin 2012 à 14:10
hello
regarder du côté de l'accounting : https://linux-attitude.fr/post/process-accounting
0
jisisv Messages postés 3645 Date d'inscription dimanche 18 mars 2001 Statut Modérateur Dernière intervention 15 janvier 2017 934
Modifié par jisisv le 3/06/2012 à 19:37
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
xunil2003 Messages postés 766 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 29 septembre 2024 14
3 juin 2012 à 20:00
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
jisisv Messages postés 3645 Date d'inscription dimanche 18 mars 2001 Statut Modérateur Dernière intervention 15 janvier 2017 934
Modifié par jisisv le 3/06/2012 à 21:12
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