Ces scripts, sans prétentions, sont ici en grande patrie pour mon usage personnel, mais ils peuvent
 servir d'exemple à d'autres...


####################### GiveIpHtml##############################################
#!/bin/bash
#teste la connexion
ping -c 1 212.27.32.5 | grep 64 | gawk -F: '{ print $1 }'>/root/scripts/GiveIp/Ping_test && sleep 1 
#comparaison avec un test de réference
diff /root/scripts/GiveIp/Ping_ok /root/scripts/GiveIp/Ping_test
if [ `echo $?` -eq 0 ];
	then echo "ça passe"
	
	else echo "ça passe pas, je vire les traces et je relance"
	#vire les traces
	/root/scripts/GiveIp/stopadsl
	#remonte la connexion et attend que ppp soit monté
	/usr/bin/pptp 10.0.0.138 2>/dev/null
	/sbin/ifconfig | grep ppp
	while test `echo $?` -ne 0  #$? renvoie la valeur 0 si ppp est montée
	do
		sleep 5 
		echo "patience encore 5s"
		/sbin/ifconfig | grep ppp
	done
	/usr/local/bin/dns2go
fi

#teste si l'ip a changé ou non, si oui, mets à jour la page html
#recuperation de l'ip actuelle
/root/scripts/GiveIp/ipppp > /root/scripts/GiveIp/ip
#comparaison avec l'ancienne ip
diff /root/scripts/GiveIp/ip_old /root/scripts/GiveIp/ip
if [ `echo $?` -eq 0 ];
	then echo "l/'ip n'a pas changée"
	else echo "l/'ip a changée, je mets à jour la page html" 
	#injection de l'entête HTML
	/bin/cat /root/scripts/GiveIp/debuthtml > /root/scripts/GiveIp/GiveIp.html
	#injection de l'ip
	cat /root/scripts/GiveIp/ip >> /root/scripts/GiveIp/GiveIp.html
	#injection du milieu de page
	/bin/cat /root/scripts/GiveIp/milieuhtml >> /root/scripts/GiveIp/GiveIp.html
	#injection de l'ip
	cat /root/scripts/GiveIp/ip >> /root/scripts/GiveIp/GiveIp.html
	#injection du milieu de page
	/bin/cat /root/scripts/GiveIp/milieu2html >> /root/scripts/GiveIp/GiveIp.html
	/bin/cat /root/scripts/GiveIp/br.txt >> /root/scripts/GiveIp/GiveIp.html
	/bin/cat /root/scripts/GiveIp/br.txt >> /root/scripts/GiveIp/GiveIp.html
	#injection de date et heure et de l uptime
	echo `date` | gawk '{ print $1, $3, $2, $4, $6 }' >> /root/scripts/GiveIp/GiveIp.html
	/bin/cat /root/scripts/GiveIp/br.txt >> /root/scripts/GiveIp/GiveIp.html
	uptime >> /root/scripts/GiveIp/GiveIp.html
#injection de la fin de page
	/bin/cat /root/scripts/GiveIp/finhtml >> /root/scripts/GiveIp/GiveIp.html
	#envoi de la page sur mon site
	/usr/bin/ftp -n ftpperso.free.fr < /root/scripts/GiveIp/FtpGiveIp.txt
	/root/scripts/misaleur
fi
#archivage de lip actuelle pour comparaison future
cp -f /root/scripts/GiveIp/ip /root/scripts/GiveIp/ip_old
#mise a l heure



#########################FACTEUR #######################################################

#Script de rapatriement automatique d'un courrier POP
# prerequis :
# POP deja configure "ifup" sur "ifcfg-ppp0"
# ainsi que sendmail et eventuellement procmail

#lancement du "daemon" sendmail

/usr/sbin/sendmail -bd -os

#connexion par le modem sur  "ppp0"
/etc/sysconfig/network-scripts/ifup ppp0

#cette boucle s'insere avant "sendmail -q"
#dans /etc/sysconfig/network-scripts.
#test de montage de l'interface "ppp0" pour déclencher la suite.

ifconfig | grep ppp0
while test `echo $?` -ne 0  #$? renvoie la valeur 0 si ppp0 est montée
  do
   sleep 7 
   echo "patience..."
   ifconfig | grep ppp0
  done

#envoi
echo "envoi"
/usr/sbin/sendmail -q
#boucle de test d'activite de la file d'attente
ls /var/spool/mqueue | grep df
while test `echo $?` -eq 0
	do
		sleep 1
		echo "il reste de mails en boite d'envoi"
		ls /var/spool/mqueue | grep df
	done

echo "recherche des nouveaux messages"
#rapatriement des mails de free.fr
/usr/bin/fetchmail 

#boucle a insere apres "/usr/sbin/fetchmail"
ps -e | grep fetchmail
while test `echo $?` -eq 0  #$? renvoie la valeur 0 tant que fetchmail est

  do
   sleep 1
   echo "fetchmail n'a pas terminé de rapatrier le courrier"
   ps -e | grep fetchmail
  done
  echo "OK"
#Tout est envoyé et rapatrié; deconnexion de free
/root/scripts/disconnect

############################ COMPTEUR ####################################

#!/bin/sh
N=1
until ((N==254)); do
echo $N
((N=N+1))
# ou ((N+=1))
done



################### TAKE IP ###########################################
#!/bin/bash
#je restaure mon hosts de reference avant de mettre la ligne concernant 

cp -f /etc/hosts.ref /etc/hosts
cd /tmp
rm -f /tmp/GiveIp*
wget -t 2 ADRESSEurl/GiveIP.html
sleep 2 
# ce script est un peu tordu, mais ça fonctionne
# l'adresse IP de la cible apparaissant deux fois dans la page, que j'extrais en brut
# avec wget, le premier grep me donne deux lignes
# qui commencent par 193 (wanadoo)
# le gawk prend le premier champ, donc l'adresse en entier et elle seule, mais deux fois
# je refais donc un grep numerote, que je regrep sur 1:, et que je gawk sur le champs 
# (pour changer) j'obtiens donc l'adresse (ouf...) je pense qu'il y a plus simple !

grep 193 GiveIP.html | gawk '{ print $1 }' | grep -n 193 | grep 1: | gawk -F: '{ print $2 }' > iplau
IPLAU=`cat iplau`
echo $IPLAU
echo -n $IPLAU >> /etc/hosts
echo  "     lau" >> /etc/hosts


####################### PHOTOCOPIE ############################
#!/bin/bash
#prerequis un scanimage qui accepte les opions resolution mode etc...
#prerequis pnmtops installe
#prerequis gs installe
#prerequis spécifique a ce scipt, plustek 600, epson stylus colr uniprint stcany
#prerequis toutes options de scaimage sont ici proprietaires plustek

spcopie=/var/spool/photocopie
x=210
y=297

case $1 in
tif)
echo "sortie dans /sas/scan.tif"
scanimage --resolution 150 -x $x -y $y > /$spcopie/phcp &&
pnmtotiff /$spcopie/phcp > /sas/scan.tif
;;
c)
echo "couleur"
scanimage --resolution 150 -x $x -y $y > /$spcopie/phcp &&
pnmtops /$spcopie/phcp > /$spcopie/phcp.ps 2>/dev/null &&
gs @stcany.upp -sOutputFile=/dev/lp0 /$spcopie/phcp.ps -c quit
;;
nb)
echo "nuances de gris"
scanimage --mode Gray --resolution 150 -x $x -y $y > /$spcopie/phcp &&
pnmtops /$spcopie/phcp > /$spcopie/phcp.ps 2>/dev/null &&
gs @stcany.upp -sOutputFile=/dev/lp0 /$spcopie/phcp.ps -c quit
;;
hd)
echo "haute definition"
scanimage --resolution 300 -x $x -y $y > /$spcopie/phcp &&
pnmtops /$spcopie/phcp > /$spcopie/phcp.ps 2>/dev/null &&
gs @stcany.upp -sOutputFile=/dev/lp0 /$spcopie/phcp.ps -c quit
;;
-h)
echo "copie tif (fichier); copie nb (noir et blanc); copie c (couleur); copie hd (haute definition)"
exit
;;
*)
echo "copie tif (fichier); copie nb (noir et blanc); copie c (couleur); copie hd (haute definition)"
exit
;;
esac

#rm -f /$spcopie/phcp &&
#rm -f /$spcopie/phcp.ps
########################################################################

################## SAUVEGARDE #######################################
#!/bin/sh
# ce script de sauvegarde est pour mes besoins personnels
# les commentaires sont perso, non exhaustifs
# et decoulent parfois de tests succints
# mon objectif ici etant avant tout la sauvegarde :-)

# je commence par verifier si machine est allumé
# le ping repond 0 si ok
# 1 si absent mais connu
# 2 si inconnu
 
ping -c1 machine
if [ `echo $?` -eq 1 ];
	then echo "machine est éteint"
	exit
	else echo "ca roule pour moi"
fi

# je teste si le partage distant est monte
# grep renvoie 0 si sa recherche aboutit
# 1 si non trouve
# 2 si erreur

/bin/df > /tmp/df.log
grep "machine/mp3" /tmp/df.log
# surement pipable

if [ `echo $?` -eq 0 ];
	then echo "deja monté"
	else echo "pas monté, je monte" 
	smbmount //machine/mp3_svge /mnt/mp3_svge -o username=toto,password=toto
fi

# au cas ou la machine distante a rebootee
# le montage peut etre present mais vide
# il faut donc le remonter aussi dans ce cas
# car je ne sais pas comment rafraichir les montages :-)
# diff renvoie 0 si egalite
# 1 si difference
# 2 si erreur

ls /mnt/mp3_svge > /tmp/lsmp3svge.tmp
diff /tmp/lsmp3svge.tmp /dev/null

if [ `echo $?` -eq 0 ];
	then echo "vide, je remonte"
    smbmount //machine/mp3_svge /mnt/mp3_svge -o username=toto,password=toto
	else echo "ca va, c'est bien monte"
fi
sleep 5 

# ben la on peut commencer la sauvegarde...
cp -urf /mp3/* /mnt/mp3_svge

# on attend la fin de la copie pour demonter
# je reutilse le grep

ps -ax | grep cp | grep "//machine/mp3"

while test `echo $?` -eq 0
do
	echo "copie en cours"
	sleepl 2
    ps -ax | grep cp | grep "//machine/mp3"
done

echo "fini"
echo "je demonte"
umount /mnt/mp3_svge
############################################################

################## Net Speed Meter ##########################


#!/bin/bash
#le premier argument est l'interface concérnée
carte=$1
#le deuxieme argument est le temps du test (en secondes)
intervalle=$2
log1=/var/log/if1
log2=/var/log/if2

#definition de la carte par défaut
if [ "$carte" == "" ]
then carte=eth0
echo commande lancée sans choix de carte, eth0 par défaut.
fi

#definition du temps de test par défaut
if [ "$intervalle" == "" ]
then intervalle=5
echo commande lancée sans choix de temps, intervalle de "test" par défaut : 5 seconde
fi


echo interface $carte sur $intervalle secondes
ifconfig $carte > $log1
sleep $intervalle
ifconfig $carte > $log2

rx1=`grep "RX bytes" $log1 | awk '{ print $2 }' | awk -F: '{ print $2 }'`
rx2=`grep "RX bytes" $log2 | awk '{ print $2 }' | awk -F: '{ print $2 }'`
tx1=`grep "RX bytes" $log1 | awk '{ print $6 }' | awk -F: '{ print $2 }'`
tx2=`grep "RX bytes" $log2 | awk '{ print $6 }' | awk -F: '{ print $2 }'`

diffrx=`expr $rx2 - $rx1`
difftx=`expr $tx2 - $tx1`
debrx=`expr $diffrx / $intervalle`
debtx=`expr $difftx / $intervalle`
vitrx=`expr $debrx / 1024`
vittx=`expr $debtx / 1024`

#cat $log1 && cat $log2
#echo $rx1 $rx2
#echo $tx1 $tx2
#echo $diffrx
#echo $difftx
#echo $debrx
#echo $debtx

echo debit en reception : $vitrx Ko/s "("$debrx octets/s")"
echo débit en émission"  ": $vittx Ko/s "("$debtx octets/s")"

######################################################################

################# majspyp2p ##########################################
# ce script fait avec des mouffles n'a que le mérite de fonctionner...
# si on a ipcount...
#
#il génère un script iptables anti espions-p2p
#le but est purement pédagogique : le traitement d'un fichier texte
#!/bin/sh
cd /tmp
rm -f guarding.p2p.zip
rm -f guarding.tmp
rm -f guarding.tm1
rm -f guarding.tm2
rm -f /guarding.tm3
wget http://methlabs.org/sync/guarding.p2p.zip
unzip -o guarding.p2p.zip
#selection des plages d'adresses en deuxieme champs séparés par des :
cat guarding.p2p | gawk -F: '{ print $2 }' >> guarding.tmp
#transformation des adresses en iptables
cat /tmp/guarding.tmp | while true
do
	read ligne
		if [ "$ligne" = "" ]
		then ((vide=vide+1))
		else
		vide=0
		fi
		if [ $vide = 2 ]
		then break
		fi
	ipcount $ligne >> /tmp/guarding.tm1 2>>/dev/null
done
#suppression des blancs et dechets? et enapsualtion iptable
vide=0
cat /tmp/guarding.tm1 | while true
do 
	read ligne

	if [ "$ligne" != "" ]
	then	ligne2=`echo $ligne | gawk '{ print $1 }'`
		ligne3=`echo $ligne2 | gawk -F, '{ print $1 }'`	
		ligne4=`echo iptables -t filter -I INPUT -s $ligne3 -j MLDONKEY_LOGDROP`
		echo $ligne4 >> guarding.tm2
	fi
	#test sur deux lignes vides pour arret de fichier
	if [ "$ligne" = "" ]
	then ((vide=vide+1))
	else 
	vide=0
	fi
	if [ $vide = 2 ] 
	then break
	fi	
done

#création de l'entete du script iptable
rm -f /tmp/guarding.rule
echo #!/bin/sh > /tmp/guarding.rule
echo iptables -t filter -N MLDONKEY >> /tmp/guarding.rule
echo iptables -t filter -F MLDONKEY >> /tmp/guarding.rule
echo iptables -t filter -N MLDONKEY_LOGDROP >> /tmp/guarding.rule
echo iptables -t filter -F MLDONKEY_LOGDROP >> /tmp/guarding.rule
echo iptables -t filter -A MLDONKEY_LOGDROP -j LOG --log-prefix "MLDONKEY" >> /tmp/guarding.rule
echo iptables -t filter -A MLDONKEY_LOGDROP -j DROP >> /tmp/guarding.rule

cat /tmp/guarding.tm2 >> /tmp/guarding.rule
######################################################################

#          MAGNETOSCOPE
#    Prerequis : freebox, mais la partie mencoder est interessante.
#!/bin/sh
#Syntaxe utilisée 
#sh scope nomchaine nomfilm heurefin

#pour le recoupage apres coup, -ss pour le debut, -endpos pour la fin

#$1 chaine en nom a peu pres clair
#$2 Nom du fichier de sortie sans extension
#$3 duree en HH:MM:SS
CHEMIN=/data/scope
# Recherche du code de la chaine
case $1 in 
"France2") code=201;;
"France3") code=202;;
"France5") code=203;;
"Euronews") code=205;;
"Arte") code=204;;
"Direct8") code=372;;
"W9") code=373;;
"NT1") code=374;;
"NRJ 12 5.1") code=381;;
"NRJ 12 Stéréo") code=382;;
"LCP") code=226;;
"France4") code=376;;
"BFMTV") code=418;;
"iTELE") code=417;;
"Europe2") code=416;;
"Gulli") code=419;;
"RTL9") code=210;;
"AB1") code=211;;
"TV5") code=206;;
"FranceO") code=238;;
"GameOne") code=220;;
"MTVFrance") code=219;;
"ZIK") code=218;;
"EquipeTV") code=209;;
"ABMoteurs") code=222;;
"MotorsTV") code=216;;
"BloombergTV") code=207;;
"CNBC") code=208;;
"Sky News International") code=355;;
"KTO") code=223;;
"TFJ") code=224;;
"Beur TV") code=225;;
"Demain !") code=227;;
"FashionTV") code=221;;
"Teleplaisance.org") code=320;;
"Liberty TV.com") code=215;;
"Freenews TV") code=428;;
"Best of Shopping") code=358;;
"M6 Boutique") code=359;;
"Astro Center TV") code=415;;
"TLM") code=267;;
"TLT") code=281;;
"TV7") code=268;;
"TV8 Mont-Blanc") code=319;;
"TéléGrenoble") code=423;;
"Telif") code=360;;
"La Locale") code=363;;
"Normandie TV") code=383;;
"Télénantes/Nantes 7") code=389;;
"La Chaîne Marseille") code=414;;
"T.TV") code=385;;
"God TV") code=386;;
"Arte Allemand") code=270;;
"DW-TV") code=312;;
"ETB Sat") code=371;;
"Real Madrid TV") code=387;;
"RTPi") code=388;;
"Rai Uno") code=309;;
"Rai Due") code=314;;
"Rai Tre") code=315;;
"TV Polonia") code=278;;
"Bulgaria TV") code=321;;
"TV Romania") code=318;;
"RTR Planeta") code=317;;
"Adjara TV") code=316;;
"2M Maroc") code=272;;
"RTM Maroc") code=273;;
"Canal Algérie") code=274;;
"TV7 Tunisia") code=277;;
"TRT INT") code=369;;
"Kanal 7 INT") code=370;;
"Samanyolu TV") code=391;;
"Armenia TV") code=380;;
"Al Masriya") code=275;;
"Al jazeera") code=276;;
"Al Jazeera Children") code=412;;
"Phoenix Chinese News and Entertainment") code=266;;
"CCTV 4") code=271;;
*) echo "Pas de réponse";; 
esac 


#enregistrement de la chaine en mode copie
#mencoder rtsp://mafreebox.freebox.fr/freeboxtv/$code -ovc copy -oac copy -endpos $3 -o $CHEMIN/$2.avi

#Enregistrement de la chaine en mode copie puis compression en divx
mencoder rtsp://mafreebox.freebox.fr/freeboxtv/$code -ovc copy -oac copy -endpos $3 -o $CHEMIN/$2.avi && mencoder $CHEMIN/$2.avi -vf scale=640:480 -ovc lavc -lavcopts vcodec=mpeg4:vhq:vbitrate=1000 -ffourcc divx -oac mp3lame -lameopts br=192 -o $CHEMIN/$2-fmp4.avi && rm -f $CHEMIN/$2.avi && mv $CHEMIN/$2-fmp4.avi $CHEMIN/$2.avi

#enregistrement direct en divx
#mencoder rtsp://mafreebox.freebox.fr/freeboxtv/$code -vf scale=640:480 -ovc lavc -lavcopts vcodec=mpeg4:vhq:vbitrate=1000 -ffourcc divx -oac mp3lame -lameopts br=192 -o $CHEMIN/$2.avi