#0 -1 » Bash test si IP KO - Ajout d'un si, mais c'est en erreur » Le 15/11/2019, à 12:27
- remi82
- Réponses : 5
Bonjour,
J'ai actuellement un bash, qui lit un fichier, et qui pour chaque ligne fait un ping. Si, KO, celui-ci m'envoi un mail.
#!/bin/bash
#Declaration des variables
wsmtp=smtp
wuser=user
wmdp=mdp
wexped=exped
wdest=adresse_mail
#fin
dir=/home/users/ping_routeurs_ip.txt
#read dir
if [ -e $dir ]
then
while read ligne #pour chaque ligne
do
wip=$(echo $ligne | cut -d: -f1)
wsujet=$(echo $ligne | cut -d: -f2)
wmessage=$(echo $ligne | cut -d: -f3)
#Envoi du mail si KO
HOST=$wip;COUNT=4;count=$(ping -c $COUNT $HOST | grep 'received' | awk -F',' '{ print $2 }' | awk '{ print $1 }');if [ $count -eq 0 ]; then sendEmail -s $wsmtp -xu $wuser -xp $wmdp -o tls=yes -f $wexped -t $wdest -u $wsujet -m $wmessage; fi
done < "$dir"
else
sendEmail -s $wsmtp -xu $wuser -xp $wmdp -o tls=yes -f $wexped -t $wdest -u 'Fichier non trouve' -m "Le fichier des IP n'a pas été trouvé";
fi
Cependant, il arrive que je ne veuille plus un ping d'une ligne pendant quelques temps.
Je modifie mon fichier des IP en commencant la ligne par #
J'ai ajouté dans mon bash
if [[ $wip != '#*' ]]
then
fi
dir=/home/users/ping_routeurs_ip.txt
#read dir
if [ -e $dir ]
then
while read ligne #pour chaque ligne
do
wip=$(echo $ligne | cut -d: -f1)
wsujet=$(echo $ligne | cut -d: -f2)
wmessage=$(echo $ligne | cut -d: -f3)
if [[ $wip != '#*' ]]
then
#Envoi du mail si KO
HOST=$wip;COUNT=4;count=$(ping -c $COUNT $HOST | grep 'received' | awk -F',' '{ print $2 }' | awk '{ print $1 }');if [ $count -eq 0 ]; then sendEmail -s $wsmtp -xu $wuser -xp $wmdp -o tls=yes -f $wexped -t $wdest -u $wsujet -m $wmessage;
fi
done < "$dir"
Mais j'obtiens le message d'erreur :
Syntax error: "done" unexpected (expecting "fi")
J'ai beau chercher, je ne vois pas mon erreur.
Merci
#1 Re : -1 » Bash test si IP KO - Ajout d'un si, mais c'est en erreur » Le 15/11/2019, à 12:51
- remi82
- Réponses : 5
Bonjour,
C'est quand j'ai copié mon code sur le forum. J'ai oublié un fi.
Et j'ai ajouté le fi manquant.
Maintenant, j'obtiens comme erreur :
[[: not found
Encore merci
#2 Re : -1 » Bash test si IP KO - Ajout d'un si, mais c'est en erreur » Le 15/11/2019, à 13:09
- remi82
- Réponses : 5
Je viens de modifier mon contrôle.
C'est maintenant ok.
Merci à tous
#3 Re : -1 » Squid ACL probleme » Le 14/05/2018, à 16:51
- remi82
- Réponses : 1
Bonjour,
Je ne sais pas trop d'où vient ton souci. Mais regarde ce lien. C'est grace à ce site que j'ai pu en parti mettre squid.
http://irp.nain-t.net/doku.php/220squid:start
#4 -1 » Driver ODBC Iseries (AS400) » Le 27/04/2018, à 11:46
- remi82
- Réponses : 2
Bonjour,
Je souhaiterais migrer une partie de mes postes utilisateurs sous ubuntu en remplacement de Windows 10.
Nous travaillons sur AS400. Aucun souci pour l'émulation 5250, du fait que client access soit développé sous java.
J'ai par contre besoin d'installer le driver ODBC iseries access. Après de longues heures de recherche pour ne pas dire jours, j'approche du but.
J'ai en premier installé unixodbc, puis le driver iseries access fournis par IBM.
Quand je lance ODBC Administrator, je vois bien mon driver IBM dans le menu advanced.
Je souhaite donc définir la source AS400 via le menu "Data source Names" Je clique donc sur add, puis sélectionne le driver IBM. Je valide par OK, défini mes deux trois paramètres. Mais lorsque je valide, j'obtiens le message d'erreur suivant :
Could not write (/etc/odbc.ini)
J'ai donc essayé en modifiant le chmod, mais sans succès. Et je ne trouve aucune info.
Merci
#5 Re : -1 » Driver ODBC Iseries (AS400) » Le 09/05/2018, à 13:12
- remi82
- Réponses : 2
Bonjour,
ODBC Administrator, ca provient d'unixodbc.
Quand au driver ODBC AS400, il faut un compte IBM pour le télécharger.
J'avance doucement. Quand j'aurais réussi, j’essaierai de tout expliquer.
#6 -1 » Récupérer une partie d'une chaine de caractère en bash » Le 20/02/2018, à 11:34
- remi82
- Réponses : 12
Bonjour,
J'ai installé dans ma salle info un thermomètre dont je peux récupérer les infos par snmp.
En cas de température supérieur à un seuil, je reçois une alerte par mail.
Mais j'aimerai avoir une meilleur lecture dans le sens ou je récupère actuellement la température de la sorte : pour 18°, je récupère 180
Je cherche donc à mettre en forme pour avoir 18,2° par exemple
J'ai essayé avec cut -d
Puis, b=${a:1:2}
Mais rien ne fonctionne. Le shell me retourne "Bad substitution".
Merci par avance.
#7 Re : -1 » Récupérer une partie d'une chaine de caractère en bash » Le 20/02/2018, à 14:11
- remi82
- Réponses : 12
Bonjour,
Je viens de réussir en utilsant perl
#8 -1 » [Résolu] Tester si une variable est vide (chaine) » Le 04/10/2017, à 09:51
- remi82
- Réponses : 10
Bonjour,
Je cherche à savoir si une variable est vide ou non. Il s'agit d'une chaine.
J'ai trouvé des réponses sur le net, mais rien ne fonctionne chez moi.
if [ ${VAR} ]; then ...
if [[ -z "$var" ]]
[ $(grep motif <<<$var) ] && echo ok
var0='chainedecar'
var1=$(echo $var0 | grep motif)
if [ $var1 != '' ]; then
echo 'ok'
fi
Merci pour votre aide
#9 Re : -1 » [Résolu] Tester si une variable est vide (chaine) » Le 04/10/2017, à 10:42
- remi82
- Réponses : 10
Bonjour pingouinux,
Merci pour ton retour, mais aucune de ces syntaxe ne fonctionne chez moi.
Syntax error: "done" unexpected (expecting "fi")
J'ai pourtant bien indiqué "fi" à la fin.
#10 Re : -1 » [Résolu] Tester si une variable est vide (chaine) » Le 04/10/2017, à 11:30
- remi82
- Réponses : 10
Re,
if [ "${VAR}" ]; then echo ko
if [ -z "${VAR}" ]; then echo ok
En retour :
Syntax error: "done" unexpected (expecting "fi")
Merci par avance.
#11 Re : -1 » [Résolu] Tester si une variable est vide (chaine) » Le 06/10/2017, à 16:20
- remi82
- Réponses : 10
Bonjour,
Désolé pour ma réponse tardive.
if [ "${VAR}" ]; then ...
fonctionne très bien. Je ne sais pas ce que j'ai fais la première fois.
Merci à vous.
Rémi
#12 -1 » [Résolu] sendEmail et pièce jointe dans une variable HS » Le 04/10/2017, à 11:50
- remi82
- Réponses : 9
Bonjour,
Je souhaite utiliser un shell pour envoyer des mails à mes utilisateurs dont il y a une pièce jointe.
Pour l'envoi des mails, j'utilise sendEmail (Attention pas sendmail)
sendEmail -s smtp.gmail.com -xu user -xp mdp -f monadressemail -t dest@mail.com -u 'sujet' -m 'mon message'
De se côté, pas de problème.
J'ai ensuite fais la même chose mais avec des variables pour les adresses mails, sujet et message. C'est également ok
Pour l'envoi de la pièce jointe, j'utilise l'option -a /mon_rep/fichier.pdf"
L'envoi fonctionne dans ce cas. Par contre, si je remplace
-a /mon_rep/fichier.pdf
par
-a $var
, j'obtiens le message d'erreur suivant :
] doesn't exist!linux sendEmail[23224]: ERROR => The attachment [/home/user/mon_rep/fichier.pdf
Merci par avance.
#13 Re : -1 » [Résolu] sendEmail et pièce jointe dans une variable HS » Le 04/10/2017, à 13:39
- remi82
- Réponses : 9
Bonjour credenhill,
Oui, ce fichier existe. Et pour test, j'affiche le contenu de ma variable, et j'obtiens bien le chemin d'accès avec le nom du fichier.
Merci
#14 Re : -1 » [Résolu] sendEmail et pièce jointe dans une variable HS » Le 05/10/2017, à 11:17
- remi82
- Réponses : 9
Bonjour,
Merci à vous tous. J'ai essayé toutes vos propositions, mais sans succès pour l'instant. Je continue de chercher.
Encore merci
Rémi
#15 Re : -1 » [Résolu] sendEmail et pièce jointe dans une variable HS » Le 05/10/2017, à 11:27
- remi82
- Réponses : 9
Ce qui est étrange, c'est que lorsque j'indique manuellement le chemin de mon fichier, c'est ok.
Je creuse.....
#16 Re : -1 » [Résolu] sendEmail et pièce jointe dans une variable HS » Le 06/10/2017, à 16:23
- remi82
- Réponses : 9
Bonjour,
Je viens de réussir.
Comme je le disais, lorsque j'indiquai le chemin manuellement, tout était OK.
J'ai testé après, en utilisant ma variable, mais en indiquant également le chemin manuellement. Et là, c'était OK.
Le problème venait en fait que je récupérai le chemin en lisant un fichier, et qu'il manquait une virgule.
Merci à vous pour votre aide.
Rémi
#17 -1 » Remplacer des antislash par des slash dans un shell » Le 03/10/2017, à 18:06
- remi82
- Réponses : 2
Bonjour,
Dans un shell, j'ai besoin de récupérer des fichiers pdf via un partage windows.
Je récupère la liste des fichiers à récupérer dans un fichier temporaire, mais avec la syntaxe suivante : c:\PDF\nom_des_fichiers.pdf
Comment faire pour le convertir en : /mnt/PDF/nom_des_fichiers.pdf
Merci par avance.
#18 Re : -1 » Remplacer des antislash par des slash dans un shell » Le 03/10/2017, à 18:40
- remi82
- Réponses : 2
Merci pour ton aide précieuse.
#19 -1 » [Résolu] Installation de client access solution sur xubuntu HS » Le 24/08/2017, à 10:44
- remi82
- Réponses : 1
Bonjour à tous,
Problématique : Installation de Client Access sous xubuntu
Client access est la solution d'IBM pour se connecter sur un AS400.
Celui-ci à besoin de Java. Je l'ai donc au préalable installé.
J'ai suivi l'aide d'IBM pour réaliser l'installation, de Client Access Solution pour linux, mais rien n'a faire, je ne peux lancer le fichier install_acs_32.
Ce qui est étrange, c'est que sur ubuntu, lubuntu, ça fonctionne parfaitement.
Je lance donc un terminal (non root) je me rends dans le dossier et tape la commande
sudo /mon_rep/inst et je fais tab pour qu'il complète automatiquement. Mais là, il ne complète pas.
Je rentre donc manuellement l'intégralité, mais lorsque je valide, rien ne se passe.
Auriez-vous une idée ?
Merci par avance.
#20 Re : -1 » [Résolu] Installation de client access solution sur xubuntu HS » Le 25/08/2017, à 07:49
- remi82
- Réponses : 1
Bonjour,
Je viens de trouver. Et franchement, c'était tout bête. J'ai simplement changé les droits sur le dossier d'installation.
Mais ce qui est étrange, c'est que sur ubuntu et lubuntu, je n'ai pas eu à le faire.
#21 -1 » Suppression des fichiers d'une année » Le 15/02/2017, à 09:54
- remi82
- Réponses : 4
Bonjour,
Je souhaite supprimer tous les fichiers d'une année.
Je connaissais la syntaxe suivante pour supprimer par exemple les fichiers de plus de 30 jours :
find /home/ -type f -mtime +30 -print0 | xargs -r0 rm
En cherchant, j'ai trouvé la commande suivante, permettant de lister tous les fichiers d'une année précise :
find /home/ -type f | awk '$(NF-1) ~ /'"$date_a_sup"'/ {print $0}'
Ce code fonctionne. "date_a_sup" étant une variable. Je me suis dit que tout simplement, j'allais ajouté "| xargs -r0 rm"
Soit :
find /home/ -type f | awk '$(NF-1) ~ /'"$date_a_sup"'/ {print $0}' | xargs -r0 rm
Mais la commande me retourne l'erreur suivante : xargs: ligne de paramètres trop longue
J'ai beau chercher, je ne trouve pas encore la solution.
Merci par avance.
#22 Re : -1 » Suppression des fichiers d'une année » Le 15/02/2017, à 12:25
- remi82
- Réponses : 4
J'ai trouvé,
J'utilise la première commande en écrivant le résultat dans un fichier.
Puis je fais une boucle pour lire chaque ligne, et ainsi supprimer mes fichiers.
#23 Re : -1 » Suppression des fichiers d'une année » Le 15/02/2017, à 18:45
- remi82
- Réponses : 4
Bonjour Maxire,
Merci pour ton retour. Je vais garder ma solution. Mais je garde précieusement la tienne.
Encore merci
#24 Re : -1 » "Cacher" un mot de passe dans un shell » Le 14/02/2017, à 18:59
- remi82
- Réponses : 6
Je vais essayer et te tiens au courant.
Je te remercie pour ton aide.