Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 29/12/2016, à 13: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, à 15: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, à 12:39

Beuhlet_Reseau

Re : Argument commandes SSH

mazarini a écrit :

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, à 15: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, à 11:17)


L'avenir appartient à ceux qui se lèvent tôt... Pas ceux qui crachent trop (vite?).

Hors ligne