[Précédent (date)] [Suivant (date)] [Précédent (sujet)] [Suivant (sujet)] [Index par date] [Index par sujet]
Re: shell script
- To:
- Subject: Re: shell script
- From: Nicolas Couture <>
- Date: Wed Jun 26 17:05:01 2002
- Newsgroups: qc.comp.os.linux.aide
- User-agent: KNode/0.7.1
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/