en inserant des lignes en début avec sed
version 2
le script balaie les lignes du fichier toto.txt, les recopie au début de toto2.txt, qui est renommé ensuite .
A la fin, l'ordre des lignes est donc inversé. Un backup préalable est écrit
#!/bin/bash
file="toto.txt"
cp "$file" "$file".bk
echo "">toto2.txt
while IFS= read -r line
do
sed -i 1i"$line" toto2.txt
done <"$file"
mv toto2.txt "$file"
version 1
le script balaie les lignes du fichier1, et les recopie au début de fichier2.
A la fin, l'ordre des lignes est donc inversé.
nota: la commande sed -i 1i"$line" fichier2.txt insère à la 1° ligne. (2i pour la 2° ligne).
#!/bin/bash
file="fichier1.txt"
while IFS= read -r line
do
sed -i 1i"$line" fichier2.txt
done <"$file"
comment les échapper
un espace dans une variable gêne une commande avec sed dans un script ( qui insère une ligne en début de fichier)
l'espace entre année Y et heure H fait échouer la commande sed. De même, l'espace entre la date et var2 est un souci.
var1=$(date +"%d-%m-%Y %H:%M")" "$var2
sed -i 1i$var1 fichier.txt
solution : mettre $var1 entre guillemets . Les espaces dans la variable ne seront plus problématiques
sed -i 1i"$var1" fichier.txt
Script très simple, mais juste ce qu'il faut pour savoir si une machine est connectée
Je me suis très largement inspiré de cette page
J'ai juste ajouté un second tableau, qui contient un libellé pour chaque adresse IP, qui sera affiché à côté de celle-ci, dans le compte-rendu
Il suffit d'ajouter tab[3], etc pour autant d'adresses utiles
#!/bin/bash
tab[0]=127.0.001
tab[1]=82.17.11.14
tab[2]= 82.127.25.17
tabs[0]=local
tabs[1]=site1
tabs[2]=site2
i=1
while (( $i < ${#tab[*]} )); do
ping -c 1 ${tab[$i]} -q
tabR[$i]=${?};
i=$((i+1));
done
clear
i=1
while (( $i < ${#tab[*]} )); do
if [ ${tabR[$i]} -eq 0 ];
then echo " ${tab[$i]} : ${tabs[$i]} OK. "
else echo " ${tab[$i]} : ${tabs[$i]} ne répond pas."
fi
i=$((i+1));
done