IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

Connection a plusieurs serveurs distant, lancer script et recuperer


Sujet :

Linux

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 9
    Points : 6
    Points
    6
    Par défaut Connection a plusieurs serveurs distant, lancer script et recuperer
    Bonjour a tous,

    Petite questions sur du script shell.

    Je souhaiterais creer un script qui se connecte a un pool de serveur distant, lance un script qui est sur le serveur local (prealablement copier sur le serveur distant), executer le script et recuperer l'output sur le serveur local.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    #!/bin/sh
     
    username=<username>
    password=<password>
    pathToUse= /tmp/
     
     
    SERVERS="server1 server2 server3 ..."
     
     
    for b in $SERVERS
    do
    	ftp $b -u $username -pwd $password
    		cd $pathToUse
    		put script1.sh
    	exit
     
    	OUTPATH=./output-for-
    	OUTFILENAME=${OUTPATH}${b}.txt
    	touch $OUTFILENAME
     
    	set force_conservative 1;  
    	set timeout 60  
    	spawn ssh -l $username $b  
    	expect "password: $"  
    	send "$password\r"  
    	/tmp/script1.sh >> $OUTFILENAME
    	exit
    done
    Pensez vous que ceci marchera et existe t'il des moyens plus efficaces?

    Merci d'avance

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    Bonjour,

    plutôt que expect, tu devrais envisager l'emploi de clés SSH, qui permettent de s'identifier sans mot de passe.
    (il y a contradiction entre avoir un mot de passe en clair dans un script, et le "Secure" de SSH).

    la copie du script n'est pas indispensable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for server in $Servers
    do cat "$path/script.sh" | ssh $server sh > "${output}-$server.txt"
    done
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Le script de demarrage est en sencer etre utiliser une fois puis supprimer.

    L'emploi de cles n'est pas vraiment envisageable dans le cas present :/
    (c'est une des specificite du projet).

    Aussi l'utilisateur ne devra changer que qq parametre, et ne devra pas rester devant le pc pour validation etc D'ou le expect ...

  4. #4
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Points : 28 119
    Points
    28 119
    Par défaut
    Bonjour,

    Si tu deposes les scripts dans /tmp, ils seront accessibles a tout le monde, et supprimes au prochain redemarrage. Donc tu dois au moins corriger cela, en sachant que tu vas donc etre confronte au fait de trouver un repertoire non temporaire ou poser ton fichier.

    Ensuite, tu ne peux pas esperer que le script s'execute sur les machines distantes et ecrivent leur resulat sur ton serveur sans que cela soit prevu (rediriger la sortie ne fait pas partie des solutions, a moins que tu n'aies une partition montee a distance bien sur). Donc la encore, un point a corriger.

    Ensuite, mettre un mot de passe dans un script, c'est l'antithese de la securite. Ca ne sert a rien d'utiliser ssh dans ce cas, utilise rsh, ca suffit largement.

    Enfin, la solution proposee par N_BaH semble etre a peu pres optimale. Peut-etre un chemin ou deux a passer en chemin absolu pour etre certain que le script fonctionne en crontab.
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  5. #5
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    Bonjour gangsoleil,

    Ensuite, tu ne peux pas esperer que le script s'execute sur les machines distantes et ecrivent leur resulat sur ton serveur sans que cela soit prevu (rediriger la sortie ne fait pas partie des solutions, a moins que tu n'aies une partition montee a distance bien sur).
    Je ne suis pas sûr de comprendre :
    ce que j'ai écrit, redirige la sortie du script dans un fichier sur le poste client;
    placé entre guillemets simples (cat "$path/script.sh" | ssh $server 'sh > "${output}-$server.txt"'), cela le ferait sur le poste serveur.

    Peut-etre un chemin ou deux a passer en chemin absolu pour etre certain que le script fonctionne en crontab.
    +1

    -
    Edit: cat script | n'a rien d'obligatoire, une simple redirection du script vers l'entrée standard fonctionne aussi bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    < script ssh $server sh > $logFile
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  6. #6
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Points : 28 119
    Points
    28 119
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    Je ne suis pas sûr de comprendre :
    ce que j'ai écrit, redirige la sortie du script dans un fichier sur le poste client;
    Ce que toi tu as ecrit, oui : tu le lances sur le serveur, qui execute le script a distance sur les differentes machines, et recupere le resultat sur le serveur.

    Par contre, quand je lis ces deux phrases :
    Je souhaiterais creer un script qui se connecte a un pool de serveur distant, lance un script qui est sur le serveur local (prealablement copier sur le serveur distant), executer le script et recuperer l'output sur le serveur local.
    Le script de demarrage est en sencer etre utiliser une fois puis supprimer.
    J'en conclus que le script doit etre lance une fois sur le serveur, se deployer sur les machines cibles, qui se chargeront d'ecrire le resultat sur le serveur, ce qui n'est possible que si cela a ete prevu des le depart.

    kassar32 : au risque de me repeter, la meilleure solution, et la plus simple, est celle de N_BaH. Si tu as des contraintes qui ne permettent pas de l'appliquer, donne-les nous, on verra comment on peut t'aider.
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Bonjour les gars,

    Desole pour le temps de réponse, je n'avais pas eu la notification de réponse.

    Je suis actuellement entrain de tester la version proposer, le fait de la demande de mot de passe n'étant pas un problème selon ce qu'on m'a dis.

    Merci beaucoup, je vous tiens au courant si ça marche ou non

Discussions similaires

  1. creer un cloud répartis sur plusieurs serveurs distants
    Par altair8080 dans le forum Cloud Computing
    Réponses: 2
    Dernier message: 07/06/2015, 08h16
  2. Connection MySQL sur serveur distant
    Par tony-28 dans le forum VB.NET
    Réponses: 6
    Dernier message: 20/10/2012, 18h18
  3. [PowerShell] Inventorier les KB sur plusieurs serveurs distants
    Par bouba_69 dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 15/02/2012, 14h16
  4. Lancer un script/commande sur plusieurs serveurs distants
    Par bras39 dans le forum Shell et commandes GNU
    Réponses: 15
    Dernier message: 14/10/2011, 20h11
  5. probleme de connection à MySql sur serveur distant
    Par carlito dans le forum Installation
    Réponses: 2
    Dernier message: 15/06/2007, 14h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo