Erreur operteur uninaire attendu

Résolu
chrisee Messages postés 181 Date d'inscription   Statut Membre Dernière intervention   -  
chrisee Messages postés 181 Date d'inscription   Statut Membre Dernière intervention   -
Bonsoir,
Je veux créer un script qui à partir d'un fichier text possedant des nom de post et adresses ip,fais des pings successive pour voir au finish un fichier texte dans lequel se trouve toutes les adresses IP online,voici mon script:
#!/bin/bash
touch my_ips_online.txt
for ip in $(cat /mes_scripts/adresses.txt |cut -d " " -f 2);do
  if [ $(ping -c 1 $ip |grep "tll"|cut -d " " -f 6) == "ttl"];then
   ping -c 1 $ip|grep "ttl"|cut -d ":" -f 1|cut -d " " -f 4 »my_ips_online.txt
  elif [ $(ping -c 1 $ip |grep "Unreachable"|cut -d " " -f 6) == "Unreachable"];then
   echo "Hote hors ligne"
 fi
done



Et j'ai un message d'erreur me disant:
./monfichier.sh: ligne 5 :[:==:Operateur uninaire attendu

Et même message pour la ligne 7,d'où vient l'erreur,merci pour votre aide.

3 réponses

UnGars
 
Salut,

Avec un seul "[" il faut seulement un signe "=".
De plus, il faut un espace de part et d'autre du caractère "[" ou "]".
1
chrisee Messages postés 181 Date d'inscription   Statut Membre Dernière intervention   10
 
Merci beacoup,ca marche maintenant
0
Utilisateur anonyme
 
"ttl" et pas "tll"

Sinon tu peux utiliser le ping une seule fois :


#!/bin/bash
rm -f online
for ip in `cat a | cut -d\ -f2`
do
ping -c 1 $ip > /dev/null
if [ "$?" = "0" ];then
echo "$ip : connecté" >> online
else
echo "$ip : hors ligne"
fi
done
1
chrisee Messages postés 181 Date d'inscription   Statut Membre Dernière intervention   10
 
J'ai finalement vu l'origine de l'erreur c'est la ligne 4 et 6 je devais ajouter un des crochets supplemenataires


#!/bin/bash
touch my_ips_online.txt
for ip in $(cat /mes_scripts/adresses.txt |cut -d " " -f 2);do
if [[ $(ping -c 1 $ip |grep "ttl"|cut -d " " -f 6) == "ttl"]];then
ping -c 1 $ip|grep "ttl"|cut -d ":" -f 1|cut -d " " -f 4 »my_ips_online.txt
elif [[ $(ping -c 1 $ip |grep "Unreachable"|cut -d " " -f 6) == "Unreachable"]];then
echo "Hote hors ligne"
fi
done
0