Pages : 1
#1 Le 29/12/2016, à 12:22
- Beuhlet_Reseau
Argument commandes SSH
Bonjour à tous,
Voici un bout de code pour tester si présence d'erreurs sur un fichier de log d'une application.
Je me bats avec la commande ssh et quand cela semble bon c'est maintenant le if qui ne plaît pas. Dois-je revenir à la ligne quand j'initialise mon if ?
for i in srv1 srv2 srv3
do
ssh -q $i 'if grep -i error /application/apps2/logs/ap_arch_$(date +%Y%m%d -d '1 day ago')
then
echo "Erreur sur $(hostname)"
else
echo "Aucune erreur sur $(hostname)"
fi'
done
La c'est dans le cas où je suis sous le bon utilisateur...
MAIS
Dans le cas où je veux lancer ce script sous un autre profil, à chaque ssh un mot de passe est demandé un hic quand on veut automatiser tout ça !
J'ai essayé ceci :
ssh -q srv1@user2
Mais il veut à tout prix un mot de passe.. Je ne pense pas qu'on peut le passer en argument mais dans le cas contraire cela impliquerait qu'il soit en clair dans le script ?
L'avenir appartient à ceux qui se lèvent tôt... Pas ceux qui crachent trop (vite?).
Hors ligne
#2 Le 29/12/2016, à 14:52
- mazarini
Re : Argument commandes SSH
Pour lancer une tache avec cron, on indique l'utilisateur qui lance le script.
Voilà un exemple sur ma machine :
17 * * * * root cd / && run-parts --report /etc/cron.hourly
Tu peux remplacer root par l'utilisateur que tu souhaite.
Dans les scripts lancé via cron, il vaut mieux mettre le chemin complet car pas de PATH. donc mettre /usr/bin/ssh et pas juste ssh
Pour le reste, je ne suis pas compétent.
S'il existait une école de la politique, les locaux devraient être édifiés rue de la Santé. Les élèves pourraient s'habituer. (Pierre Dac)
Hors ligne
#3 Le 30/12/2016, à 11:39
- Beuhlet_Reseau
Re : Argument commandes SSH
Pour lancer une tache avec cron, on indique l'utilisateur qui lance le script.
Voilà un exemple sur ma machine :17 * * * * root cd / && run-parts --report /etc/cron.hourly
Tu peux remplacer root par l'utilisateur que tu souhaite.
Dans les scripts lancé via cron, il vaut mieux mettre le chemin complet car pas de PATH. donc mettre /usr/bin/ssh et pas juste ssh
Pour le reste, je ne suis pas compétent.
D'accord je te remercie.
Dans le cas où j'aurais besoin de plusieurs utilisateurs je peux les additionner côte à côte pour que le programme ne rencontre pas de blocage ?
17 * * * * user1 usr2 cd / && run-parts --report /etc/MonScript
L'avenir appartient à ceux qui se lèvent tôt... Pas ceux qui crachent trop (vite?).
Hors ligne
#4 Le 30/12/2016, à 14:16
- Beuhlet_Reseau
Re : Argument commandes SSH
Voici mon avancement sur mes param lancés avec ssh
set -x
verif_archi_inf=/TM/perso/tmp/verif_archi_inf
result_archi_inf=/TM/perso/out/result_archi_inf
jour=$(date +%Y%m%d -d '1 day ago')
for i in srv01 #srv02 #srv03
do
[ -f $result_archi_inf_$i ] && mv $result_archi_inf_$i_old
[ -f $verif_archi_inf_$i ] && rm -f $verif_archi_inf_$i
ssh -q $i 'grep -i error /application/apps2/logs/ap_arch_$jour* > $verif_archi_inf_$i'
if [ -s $verif_archi_inf_$i ] #Si le fichier existe et n'est pas vide
then
echo "Erreur sur $i >> $result_archi_inf_$i
else
echo "Aucune erreur sur $i >> $result_archi_inf_$i
fi
echo $result_archi_inf_$i
done
Les retours d'erreurs avec set -x :
++ verif_archi_inf=/TM/perso/tmp/verif_archi_inf
++ result_archi_inf=/TM/perso/out/result_archi_inf
+++ date +%Y%m%d -d '1 day ago'
++ jour=20161229
++ for i in srv01
++ '[' -f srv01 ']'
++ '[' -f srv01 ']'
++ ssh -q srv01 'grep -i error /application/apps2/logs/ap_arch_$jour* > $verif_archi_inf_$i'
ksh: cannot create : No such file or directory
++ '[' -s srv01 ']'
++ echo srv01
srv01
Une idée ?
Dernière modification par Beuhlet_Reseau (Le 02/01/2017, à 10:17)
L'avenir appartient à ceux qui se lèvent tôt... Pas ceux qui crachent trop (vite?).
Hors ligne