Alle 17:28, giovedì 23 gennaio 2003, erlug-request@xxxxxxxxxxxxxx ha scritto:
> La tua missione, se deciderai di accettarla, e` scrivere uno script
> che faccia il confronto con cio` che hai sul filesystem.
Grazie ai tuoi consigli, ho deciso di fare il mio primo script bash, scartando
il pitone benché convinto della sua validità.
Sono arrivato allo scrippettino in calce.
Com'è ovvio, non funziona. In particolare la parte "find / > file.list" non
produce una lista completa dei file del fs, ed ovviamente lo script ritorna
più file rimossi di quelli che lo sono in realtà.
Ho pensato che sia un limite del buffer per la ridirezione dell'output, ma mi
pare molto strano.
Dove sbaglio? a voi l'ardua sentenza...
------------------------------------------------------------------------------
#!/bin/bash
where=`pwd`
# Whe get the list of the files into the filesystem
find / > file.list
# We exlude the paths listed into exclude.list
exclude=`cat exclude.list`
for x in exlude; do
cat file.list | grep -v $x > file.list
done
# Deleting the old temp files:
rm deb.list
rm fileadded.list
cp file.list fileadded.list
touch fileremoved.list
# We get all the file list of installed deb packages
find /var/lib/dpkg/info/ -name "*.list" > deb.list
find /var/lib/dpkg/info/ -name "*.conffiles" >> deb.list
deblist=`cat deb.list`
for i in $deblist ; do
echo Parsing deb package $i
echo "++++++++++++++++++++" >> fileremoved.list
echo $i >> fileremoved.list
packagefiles=`cat $i`
for j in $packagefiles ; do
cat fileadded.list | grep "^$j$"
if [ $? == 0 ]; then
cat fileadded.list | grep -v "^$j$" > fileadded.list
echo "!!!!!!!!!!!!!!!!!!!!!!!!"
else
echo $j >> fileremoved.list
echo "File removed:"
echo $j;
fi
done
done
------------------------------------------------------------------------------
--
Alessandro Ronchi,
http://students.csr.unibo.it/~ronchi
|