if test ! -e /etc/cron.weekly/majlisterpm
then
ln -s /root/majlisterpm /etc/cron.weekly/majlisterpm
fi
Réaliser un test
JOUR=`date +%A`
if test $JOUR = "lundi" -o $JOUR = "mardi" ;
then
echo "nous sommes lundi ou mardi"
fi
Autre syntaxe :
if [ "$JOUR" = "lundi" ] || [ "$JOUR" = "mardi" ]
Ma préférence va à la première syntaxe, mais chacun fait ce qu’il veut...
La commande test (ou [ ] )
chaine1 = chaine2 : vraie si chaine1 est égale a chaine2
chaine1 != chaine2 : vraie si chaine1 n’est pas égale à chaine2
pour les entiers (integer) :
n1 -eq n2 : vraie si n1 est égal a n2
n1 -ne n2 : vraie si n1 est diffèrent de n2
n1 -gt n2 : vraie si n1 est plus grand strictement a n2
n1 -ge n2 : vraie si n1 est plus grand ou égal à n2
n1 -lt n2 : vraie si n1 est plus petit strictement a n2
n1 -le n2 : vraie si n1 est plus petit ou égal à n2
-o : OR
-a : AND
-f :est un fichier ordinaire
-d :est un répertoire
-p :est une représentation interne d’un dispositif de communication
-c :est un pseudo-fichier du type accès caractère par caractère
-b :est un pseudo-fichier du type accès par bloc
-L :est un lien symbolique
-u : son Set UID=1
-g :son Set GID=1
-k :son Sticky Bit=1
-s :est non-vide
-z chaîne : la chaîne est vide
-w chaîne : la chaîne est non vide
A partir d’un serveur, on a recopié au préalable la clé publique (/root/.ssh/id_dsa.pub) vers les serveurs distants, dans /root/.ssh/authorized_keys, pour pouvoir s’identifier par échange de clés et sans avoir besoin de taper des mots de passe.
Création d’un fichier listeserveurs, avec, sur chaque ligne, le nom du serveur à atteindre.
Création d’un script à exécuter sur le serveur distant (ce script va modifier l’adresse de destination des messages systèmes envoyés depuis Postfix, en modifiant le fichier aliases) :
cp /etc/postfix/aliases /etc/postfix/aliases.old
sed s/^root:.*$/"root: monadresse@mondomaine.fr"/ /etc/postfix/aliases.old > /etc/postfix/aliases
Le fichier est rendu exécutable :
chmod +x commandedistante.sh
Le code du script permettant d’exécuter ce fichier sur les serveurs distants :
for serveur in $(cat listeserveurs)
do
echo "serveur en cours de traitement : "$serveur
scp commandedistante.sh $serveur:/root/
ssh $serveur /root/commandedistante.sh
done
Un fichier texte en entrée, on veut rajouter devant chaque ligne la commande mkdir, et le signe " de part et d’autre de la ligne
while read ligne
do
echo "mkdir -p " \"$ligne\" >>creation_arbo.sh
done < creation_arbo.txt
find /var/log/samba/winbind*gz -exec rm -f {} \;
Pour calculer la taille occupée par un type de fichiers, par exemple les fichiers jpg, dans une arborescence :
ls -lR /opt/donnees | grep 'jpg' | awk '{ sum += $5 } END { print sum }'