Autor: Giuseppe De Marco Data: Para: ciotoniflow Assunto: Re: [Ciotoflow] trovata soluzione a file che si rinomina,
si sposta e scompare
Ragazzi,
ieri a verde incontrando la dolce emy e ho colto l'occasione di dibattere sul nasconditore, ho tirato fuori il discorso io, come una scolaretta emozionata per il temino sul primo giorno di scuola.
Emmannaggialaputtana la dolce emy che ha tirato fuori:
"èh, bèh, ma che senso ha embedare python..." ...etc. "gne gne" ... e via dicendo...
Per rivitalizzarmi le olive ho appena buttato la versione "only bash":
<CODE>
#!/bin/bash
# per trovarlo se è stato rinominato con il vecchio sistema RANDOM
#find . -iregex '\./[a-z0-9/]*[0-9]$' -regextype posix-egrep -type f -cmin -5 | grep -e '/[0-9]*$'
# per trovarlo se è stato rinominato con il sistema MD5SUM+RANDOM :)
#find . -iregex '\./[a-z0-9/]*[0-9]$' -regextype posix-egrep -type f -cmin -5'
if [ -n "$1" ]
then
echo "$1 è la vittima sacrificale :)"
TRIPPER=$1
else
echo "vai $0, immolati nel filesystem... "
TRIPPER=$0
fi
#TOP_DIR=ls -d *"$P"/ | sort --random-sort | head -1 | xargs readlink --canonicalize
cd $TOP_DIR
#echo "$TOP_DIR"
COUNTER=0
while [ $COUNTER -lt $RECURSION ]; do
#echo The counter is $COUNTER
let COUNTER=COUNTER+1
CD=`ls -d "$P"/* | sed -e 's/lost+found//g' | sed -e 's/opt//g' |sort --random-sort | head -1 | xargs readlink --canonicalize`
#echo "$CD"
if [ -d "$CD" -a -w "$CD" ]
then
#echo "Directory scrivibile: $CD"
P="$CD"
#cd "$CD"
else
#echo "Directory non scrivibile: $CD"
P=`echo "$CD" | sed -e 's/[a-zA-Z0-9\.\_\+-]*$//g'`
#echo "Directory modificata: $P"
fi
if [[ -z "$P" ]]
then
#echo "manovra a u... ad monkiax"
let COUNTER=COUNTER+1
P="$P""./.."
#echo "$P"
fi
done
cd "$CWD"
NASCONDIGLIO="$P"
echo "$TRIPPER is taking away..."
mv ./$TRIPPER $NASCONDIGLIO/$NOME
Però, guardate i tests. Questa è la versione only bash:
root@LightCroma:/tmp# time ./nasconditore.only_bash.sh 1
1 è la vittima sacrificale :)
1 is taking away...
sono /sbin//d41d8cd98f00b204e9800998ecf8427e31685
real0m1.047s
user0m0.452s
sys0m0.560s
Mentre questa è la versione bash/python:
root@LightCroma:/tmp# time ./nasconditore.python_embedded.sh 2
2 è la vittima sacrificale :)
2 is taking away...
sono /lib/terminfo/p/d41d8cd98f00b204e9800998ecf8427e13769
real0m0.255s
user0m0.100s
sys0m0.052s
Cazzo, è tre volte più veloce.
Ai commenti: "Dipende da come l'hai scritto" segue: il codice è postato, sono gradite alternative o proof-of-concepts anche inutili e scontanti.