[Précédent (date)] [Suivant (date)] [Précédent (sujet)] [Suivant (sujet)] [Index par date] [Index par sujet]

Re: shell script



On Wednesday 26 June 2002 12:11 pm Fabien Ninoles <[email protected]> wrote 
in <[email protected]>:
> test est une commande populaire aussi connu sous le nom de '['.
> autrement dit if [ $? -eq 0 ]; est équivalent à if test -eq 0; (le ] est
> un argument optionnel
> ignoré par test),
> 
> Pour ton script, le diff n'est pas la meilleure solution car il ne
> garantie pas que les lignes précédé d'un > seront les nouvelles du
> fichiers.  Si tu veux vraiment que le neuf,
> 
> # Extrait les lignes nouvelles de suid vs. suid.old
> (cat suid suid.old | sort | uniq -u; cat suid) | sort | uniq -d > suid.new
> # sort trie les lignes en ordre (nécessaire pour uniq)
> # uniq -u n'imprime que les lignes uniques
> # uniq -d n'imprime que les lignes dupliquées (une seule fois)
> # cat suid suid.old | sort | uniq -u récupère donc les lignes qui
> n'appartiennent
> # qu'à un seul des deux fichiers
> # on ajoute ensuite le contenu du nouveau fichier: cat suid
> # L'ensemble de la sortie sera trié et seule les lignes dupliquées
> (appartenant
> # donc à la fois aux lignes uniques des deux fichiers et à suid
> # seront sélectionnées ( | sort | uniq -d )
> # 'test -s file' vérifie si le fichier a une taille plus grande que zéro.
> if [ -s suid.new ]; then
>   echo "proceed suid.new";
> else
>   echo "No new suid files found."
> fi
> 
> A+
> Fabien

Le seul probleme c'est que je n'veux pas savoir s'il y a eu des fichiers 
effaces. Dans ce cas, je n'ai seulement trouve ce que je cherchais avec 
diff. Ce que je veux vraiment faire c'est de ne voir que la difference avec 
le nouveau fichier cree et pas le .old.

<snip>
#! /bin/sh
# Copyright 2001, 2002 Nicolas Couture, Rosemere, Quebec, CA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
# permitted provided that the following conditions are met:
#
# 1. Redistributions of this script must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
#
#  THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 
IMPLIED
#  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
#  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN 
NO
#  EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
#  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED 
TO,
#  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
PROFITS;
#  OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
#  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
#  OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
#  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# vrfy if user is root before executing this script.
        if [ ! "$UID" = "0" ]; then
            echo "You need to be root to run this script."
            exit 1
        fi


# vrfy and create needed files and directories.
        if [ -r ./md5sum ]; then
                mv ./md5sum ./md5sum.old
        for path in `echo $PATH | tr : '\n'`; do
                for file in $path/*; do
                        md5sum $file > ./md5sum; done;
                                done;
        else if [ ! -r ./md5sum ]; then
                for path in `echo $PATH | tr : '\n'`; do
                        for file in $path/*; do
                                md5sum $file > ./md5sum; done;
                                        done; fi;
                                                fi;

        if [ -r ./suid ]; then
                mv ./suid ./suid.old
                find / \( -perm -004000 -o -perm -002000 \) -type f -print >
../suid; else
                        find / \( -perm -004000 -o -perm -002000 \) -type f 
-print > ./suid ; fi

        if [ -r ./guid ]; then
                mv guid ./guid.old
                find / -group kmem -perm -2000 -print > ./guid; else
                        find / -group kmem -perm -2000 -print > ./guid; fi


# vrfy if any new suid file(s) have being created.
echo
        if [ "$(diff suid suid.old | grep "<" | cut -d " " -f2)" = "" ]; 
then
                echo "No new suid file found."; fi

        if [ "$(diff suid suid.old | grep "<" | cut -d " " -f1)" = "<" ]; 
then
                        echo "The fallowing suid file(s) has being added: "
                        diff suid suid.old | grep "<" | cut -d " " -f2; fi


# vrfy if any new suid file(s) have being created.
echo

        if [ "$(diff guid guid.old | grep "<" | cut -d " " -f2)" = "" ]; 
then
                echo "No new guid file found."; fi

        if [ "$(diff guid guid.old | grep "<" | cut -d " " -f1)" = "<" ]; 
then
                        echo "The fallowing guid file(s) has being added: "
                        diff guid guid.old | grep "<" | cut -d " " -f2; fi

# vrfy if any executable didnt respond correctly to their md5sum.
echo
        if [ "$(diff md5sum md5sum.old  | grep "<" | cut -d " " -f4)" = "" 
]; then
                echo "All executables responded correctly to their md5sum."; 
echo
                exit 1; fi

                echo "The Fallowing file(s) didnt answer correctly to their 
md5sum or have being added:"
                 diff md5sum md5sum.old  | grep "<" | cut -d " " -f4

                # Output the bad md5sums.
                echo "With the md5sum(s): "
                 diff md5sum md5sum.old  | grep "<" | cut -d " " -f2
<snip>

Voila!

Si tu as une suggestion je suis le premier en vouloir en entendre parler! :)

Merci,
        Nicolas
-- 
PGP Key 0x3C6C07FD aviable at http://www.keyserver.net/