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