Expressions arithmétiques avec Bash

Listes des opérations possible

  • - + plus et moins unaire
  • ! ~ négations logique et binaire
  • * / % multiplication, division, reste
  • + - addition, soustraction
  • << >> décalage arithmétique à gauche et à droite
  • <= >= < > comparaisons
  • == != égalité et différence
  • & ET binaire
  • ^ OU exclusif binaire
  • | OU binaire
  • && ET logique
  • || OU logique
  • = *= /= %= += -= <<= >>= &= ^= |= assignations

Syntaxe

Les opérations devrons être faite a l’intérieur de $(( )) cela retournera le résultat

[Lire]

Force Noire, Force Verte - Les super héros du Bash

Pour les personnes qui font du scripting shell à un haut niveau, les astuces et les méthodes ne manquent pas. Il est même amusant de constater après plusieurs mois voire années de “programmation”, on en découvre encore des finesses ou des moyens détournés afin de parvenir à nos fins.

Récemment, sur la mailing-list de Léa-Linux, un jeu avait été lancé sur des astuces du shell et quelques liens sont apparus grâce à un contributeur anonyme et poilu :

[Lire]

Postfix – Supprimer les mailerdaemon

postqueue -p | grep MAILER-DAEMON | awk '{print $1}' | sed 's/[\*\!]//g' | postsuper -d -
  • postqueue -p : Affiche la liste des emails en queue
  • grep MAILER-DAEMON : Affiche uniquement les lignes qui contiennent MAILER-DAEMON
  • awk 'print $1' : Affiche uniquement la première chaine de caractères
  • sed 's/[\*\ !]//g' : Supprime les * de la chaine de caractères.
  • postsuper -d - : Injecte les id précédant dans la commande postsuper -d qui supprime les mails

Named – Checkconf Bind

#!/bin/sh
echo -n /tmp/liste-espace
echo " * Liste des fichiers de zone avec des espaces dans le domaine (find dans /var/named/) : " /tmp/liste-espace
find /var/named/ -name " *.fwd " -print0 | xargs -0 grep -F  " . " | awk -F ": " {' print $1 '} >/tmp/liste-espace
echo "  " >/tmp/liste-espace
echo " * Liste des domaines avec un espace dans le named.com " >/tmp/liste-espace
grep 'zone " ' /etc/named.conf | grep -F '  " {' >/tmp/liste-espace
echo "  " >/tmp/liste-espace
echo " * Liste des domaines avec un _ dans le nom dans le fichier de zone (grep du named.conf) : " >/tmp/liste-espace
grep 'zone " ' /etc/named.conf | awk -F' "' {' print $2 '} | grep " _ " >/tmp/liste-espace
echo "  " >/tmp/liste-espace
echo " * Liste des fichiers de zone manquant (grep dans syslog): " >/tmp/liste-espace
grep 'named' /var/log/syslog | grep " file not found " | awk '{ print $7}' | awk -F "/ " '{ print $1 }' | sort | uniq >/tmp/liste-espace
echo "  " >/tmp/liste-espace
grep named /var/log/syslog | grep " file not found " >/tmp/liste-espace
echo " * Nombre de zones : " >/tmp/liste-espace
echo " Nombre de zone dans /etc/named.conf : \`grep zone /etc/named.conf | wc -l\`, nombre de fichier de zones : \`ls -la /var/named/ | wc -l\` " >/tmp
/liste-espace
echo "  " >/tmp/liste-espace
cat /tmp/liste-espace | mail -s " sujet mail " [email protected]

Nettoyer une arborescence

Ce script rechercher les fichiers de plus de 30 jours et les effaces puis efface les dossiers vide.

#!/bin/sh
#
# Configuration
PWD_DIR=/home/ftp_users
TEMP_DIR=/tmp
LOG_SCRIPT=/var/log/menage_ftp.log
DATE_MAX_FICHIER=30
DATE_MAX_DOSSIER=30

# Fichiers temporaire
LISTEFICHIER=$TEMP_DIR/menagemail_listefichier
LISTEDOSSIER=$TEMP_DIR/menagemail_listedossier

# Recherche des fichiers
find /home/ftp_users/\*/\* -type f -mtime $DATE_MAX_FICHIER | sort -r $LISTEFICHIER

# Recherche des dossiers
find /home/ftp_users/\*/\* -type d -mtime $DATE_MAX_DOSSIER | sort -r $LISTEDOSSIER
cat  $LISTEDOSSIER | while read i; do
  $CONTENU_DOSSIER_USER=\`ls -a $i | sed -e " /\.$/d " | wc -l\`
  if [ $CONTENU_DOSSIER_USER -eq 0 ]; then
    echo " a " /dev/null
  else
    rm -fr $i
  fi
done

Convertir un fichier ISO-8859-15 en UTF-8

Le Paquet

Vérifier d’avoir le paquet Debian installe

# dpkg -l | grep iconv
ii  libtext-iconv-perl

La Commande

La commande pour convertir le fichier ISO en UTF-8

iconv -f utf-8 -t iso-8859-15 fichier-ISO.txt > fichier-utf8.txt