Outils pour utilisateurs

Outils du site


linux:scripts_bash:vrac

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
linux:scripts_bash:vrac [03/12/2006 15:50] – (ancienne révision restaurée) 127.0.0.1linux:scripts_bash:vrac [22/07/2010 17:29] (Version actuelle) daniel
Ligne 1: Ligne 1:
 ====== Bout de scripts en vrac ====== ====== Bout de scripts en vrac ======
 +
 +
 +===== dates =====
 +  * date => timestamp : ''date -d "2008-01-17 16:05:44 CET" "+%s"''
 +  * timestamp => date : ''date -d "1970-01-01 UTC +1200582344 seconds"'', que l'on peut formater avec par exemple ''date -d "1970-01-01 UTC +1200582344 seconds" "+%d/%m/%Y %H:%M:%S"''
 +
 +
 +===== lister fichiers avec md5, taille, etc =====
 +Pour faire un csv avec dossier;fichier;date;heure;taille;md5 :
 +<code bash>
 +rep=dossier_dans_lequel_chercher
 +csv=liste_fichiers.csv;
 +echo '"Dossier";"Fichier";md5sum;date;heure;taille' > $csv;
 +find "$rep" -type f|while read f;
 +do
 +  fich="$(basename "$f")";
 +  rep="$(dirname "$f")";
 +  md5=$(md5sum "$f"|cut -d " " -f 1);
 +  echo -n "\"$rep\";\"$fich\";$md5;">>$csv;
 +  ls -l "$f" | awk '{print $6";"$7";"$5}' >> $csv;
 +done;
 +</code>
 +
 ===== parsing de logs ===== ===== parsing de logs =====
  
Ligne 13: Ligne 36:
     done;\     done;\
   done;   done;
 +
  
  
Ligne 36: Ligne 60:
 La syntaxe id3ed est en effet (''id3ed --help'') La syntaxe id3ed est en effet (''id3ed --help'')
   id3ed [-s songname] [-n artist] [-a album] [-y year] [-c comment] [-k tracknum] [-g genre] fichier   id3ed [-s songname] [-n artist] [-a album] [-y year] [-c comment] [-k tracknum] [-g genre] fichier
 +
 +
 +
 +===== Effacer des images orphelines =====
 +<code bash>
 +# dans un rep d'image d'un site qcq
 +# backup !
 +cp -a . ../img.bak
 +mkdir ../tmp
 +# les fichiers dans lesquels il faut fouiller
 +fichiers="../*.php ../inc/*.html ../inc/*.php ../*.css"
 +# on fouille
 +for img in *; do echo $img; >../tmp/$img.txt; for f in $fichiers; do grep -c $img $f >>../tmp/$img.txt; done;done;
 +# et on efface ce qui n'a renvoyé que des 0
 +for f in ../tmp/*.txt; do n=$(grep -v "^0$" $f|wc -l); [ $n -eq 0 ] && todel=$(basename $f .txt) && echo $todel && rm -f $todel; done;
 +# ensuite, si tout est OK, on peut effacer img.bak et tmp
 +</code>
 +
 +
 +===== Colorer la sortie d'un script =====
 +Pour afficher [OK] en vert et [KO] en rouge en fonction du bon déroulement d'une commande (cf une [[ http://www.trustonme.net/didactels/132.html#path_schell|liste de code couleur bash]], avec les raccourcis )
 +<code>
 +OK='[ \e[0;47m\e[0;32mOK\e[0;00m ]'
 +KO='[ \e[0;47m\e[0;31mKO\e[0;00m ]'
 +commande && echo -e $OK || echo -e $KO
 +</code>
 +
 +
 +
 +
 +===== Récupérer les journaux de france culture =====
 +D'après leur podcast
 +<code bash>
 +[ $# -ne 1 ] && echo "Il faut passer un argument (7,12,18,22) pour le journal choisi)" && exit 1
 +
 +urls=([7]=http://radiofrance-podcast.net/podcast09/rss_10055.xml [12]=http://radiofrance-podcast.net/podcast09/rss_10059.xml [18]=http://radiofrance-podcast.net/podcast09/rss_10060.xml [22]=http://radiofran
 +url=''
 +for i in ${!urls[*]}
 +do
 +  [ $1 -eq $i ] && url=${urls[i]} && h=$i
 +done
 +[ -z "$url" ] && echo "Vous devez donner un journal existant (7, 12, 18 ou 22)" && exit 1
 +
 +wget $url -O fc${h}.xml
 +mp3=$(sed -nre '
 +{
 +  :boucle
 +  N
 +  $! b boucle
 +}
 +s#.*http://([^<]*)</guid>.*#http://\1#p' < fc${h}.xml)
 +
 +echo -e "\nOn va essayer de récupérer \e[0;47m\e[0;32m$mp3\e[0;00m\n"
 +wget "$mp3" -O fc${h}.mp3 && rm -f fc${h}.xml
 +</code>
 +
 +Et avec zenity (à peaufiner...)
 +<code bash>
 +#!/bin/bash
 +
 +# les urls des rss, à modifier si ça devait changer...
 +urls=([7]=http://radiofrance-podcast.net/podcast09/rss_10055.xml [12]=http://radiofrance-podcast.net/podcast09/rss_10059.xml [18]=http://radiofrance-podcast.net/podcast09/rss_10060.xml [22]=http://radiofrance-podcast.net/podcast09/rss_10061.xml)
 +
 +# qq tests
 +which zenity >/dev/null
 +# Attention avec $?, 0 => OK, on change
 +[ $? -eq 0 ] && zenok=TRUE || zenok=FALSE 
 +
 +which notify-send >/dev/null
 +[ $? -eq 0 ] && notifok=TRUE || notifok=FALSE
 +# faudrait plutôt se baser sur le test [ -z "$TERM" ]
 + 
 +
 +# les fonctions
 +
 +get_heure() {
 +  if [ $# -eq 0 ] && [ "$zenok" = "TRUE" ]
 +  then
 +    ret=$(zenity --title='Lequel ?' --text="Attention, pas de barre de progression,\nça télécharge puis s'ouvrira tout seul" --height=250 --list --radiolist \
 +      --column='' --column='Journal de' \
 +      'FALSE' 7h \
 +      'TRUE' 12h30 \
 +      'FALSE' 18h \
 +      'FALSE' 22h)
 +    [ -z "$ret" ] && exit 0 # clic sur annuler
 +    case "$ret" in
 +      7h)     h=7;;
 +      12h30) h=12;;
 +      18h)   h=18;;
 +      22h)   h=22;;
 +      *) set_msg "Heure $ret inconnue" && exit 1;;
 +    esac
 +  else
 +    [ $# -ne 1 ] && echo "Il faut passer un argument (7,12,18,22) pour le journal choisi)" && exit 1
 +    h=$1
 +  fi
 +  return $h
 +}
 + 
 +set_msg() {
 +  [ $notifok = "TRUE" ] && notify-send -t 1000 $1 || echo $1
 +}    
 + 
 +check_heure() {
 +  url=''
 +  for i in ${!urls[*]}
 +  do
 +    [ $1 -eq $i ] && url=${urls[i]} && h=$i
 +  done
 +  [ -z "$url" ] && set_msg "Vous devez donner un journal existant (7, 12, 18 ou 22)" && exit 1
 +}
 + 
 +ask2continue() {
 +  if [ $zenok = TRUE ]
 +  then
 +     zenity --question --text="$1"
 +     [ $? != "0" ] && exit 0
 +  else
 +    echo $1
 +    echo "Continuer ? (o/n)"
 +    read rep
 +    [ "$rep" != 'o' ] && echo "Abandon" && exit 0
 +  fi
 +}
 + 
 +get_url() {
 +  xml="/tmp/fc${h}.xml"
 +  wget $url -O "$xml"
 +  mp3=$(sed -nre '
 +    {
 +      :boucle
 +      N
 +      $! b boucle
 +    }
 +    s#.*http://([^<]*)</guid>.*#http://\1#p' < $xml)
 + 
 +  jour=$(date '+%d.%m.%Y')
 +  [ "$(echo $mp3|grep -c $jour)" != '1' ] && ask2continue "Apparemment ce n'est pas le journal du jour : $mp3\nOn continue quand même ?"
 + 
 +  # si abandon on est déjà sorti
 +  fich=/tmp/fc${h}.mp3
 +  wget "$mp3" -O $fich
 +  if [ $? ]
 +  then
 +    rm -f fc${h}.xml
 +    set_msg "On a récupéré un mp3 ($fich)"
 +    xdg-open $fich
 +#    rm -f $fich # xdg rend la main tout de suite
 +  fi
 +}
 + 
 +# et le main
 +get_heure $*
 +h=$?
 +check_heure $h
 +get_url $url
 +</code>
 +
linux/scripts_bash/vrac.1165157410.txt.gz · Dernière modification : 10/08/2007 17:41 (modification externe)