Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1355 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Script pour se connecter a distance en ssh

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Script pour se connecter a distance en ssh

n°1541380
DrOctopus
Posté le 11-04-2007 à 15:28:10  profilanswer
 

Bonjour a tous,
voila je sais comment se connecter sur un pc a distance en ssh. En ligne de commande, je tape ssh -l root @ip etc...
Je peux ensuite executer n'importe quelle commande sur le pc distant.
Mais a chaque fois que je me connecte il me demande le mot de passe. J'aimerais donc savoir s'il est possible de créer un script, ou on lui passerait  
les identifiants en paramètres et ensuite il éxecute les commandes qu'on veut sur le pc distant ?
merci d'avance, a bientot  :hello:

mood
Publicité
Posté le 11-04-2007 à 15:28:10  profilanswer
 

n°1541436
DrOctopus
Posté le 11-04-2007 à 16:31:53  profilanswer
 

alors ,j'ai fais ce pti script en utilisant l'outil expect.
Par contre, le mot de passe apparait en clair, donc pour la sécurité c pas le top. Il y a-t-il un moyen de le cacher ?
 
#!/usr/bin/expect -f
 
set force_conservative 1;
 
set timeout 3
spawn ssh 192.168.0.2
expect "password: $"
send "xxxxxx\r"
interact

n°1542109
DrOctopus
Posté le 12-04-2007 à 16:36:25  profilanswer
 

maintenant jen suis a ce point là:
Le script expect se connecte a distance en ssh sur un pc, et lance un script nommé script2 en lui passant un parametre:  
 
#!/usr/bin/expect -f  
set force_conservative 1;  
set timeout 60  
spawn ssh -l root lapp-dh187  
expect "password: $"  
send "xxxxxx\r"  
#set var 0  
expect " $"  
send -- "  
/root/Desktop/script2 [lindex $argv 0]\r"  
interact  
exit  
 
Ensuite j'ai ce 2eme script (nommé script2) en bash situé sur le pc distant. Il va tester si le rpm passé en parametre est installé ou non:  
#!/bin/bash  
var=$(rpm -q $1)  
 
if [ "$var" = "le paquetage $1 n'est pas installé" ]  
then  
echo "installation de $1"  
else  
echo "$1 deja installe"  
fi  
exit  
 
j'aimerais intégré le 2eme script au 1er, mais le expect ne prend pas en compte le bash (définition des variable, etc...). Je veux faire ca pour ne pas avoir de script sur l'ordinateur distant.  
 
Y a-t-il une solution ?  
merci d'avance
 

n°1542343
couak
Posté le 13-04-2007 à 01:07:04  profilanswer
 

Tu as un mécanisme d'authenfication sans mot de passe avec ssh, il suffit de générer des clés et de paramétrer correctement côté serveur et client

n°1542389
Master p
My new cock ring :D
Posté le 13-04-2007 à 09:49:43  profilanswer
 

couak a écrit :

Tu as un mécanisme d'authenfication sans mot de passe avec ssh, il suffit de générer des clés et de paramétrer correctement côté serveur et client


cf ssh-agent


---------------
HAHAHA I M USING TEH INTERNET
n°1542396
DrOctopus
Posté le 13-04-2007 à 09:57:07  profilanswer
 

merci de vos réponses,
vous avez raisons, expect est trop compliqué (c'est du language tcl).
En fait le truc c'est que j'aimerais que d'un poste central A, je puisse accéder aux autres postes B, C ,D,etc du réseau par ssh.

n°1542413
couak
Posté le 13-04-2007 à 10:22:53  profilanswer
 

cf ce qui a été dis plus haut

n°1542471
DrOctopus
Posté le 13-04-2007 à 11:17:46  profilanswer
 

Ok, alors j'ai reussi a faire marcher la connexion auto avec ssh-agent. Pour lancer ssh-agent, je fais "ssh-agent", pour entrer mon MDP je fais "ssh-add" et la je rentre mon mdp. Ensuite quand je fais ssh pcdistant, ca marche bien, meme en arretant et en relancant le terminal.
Seulement je suis tjrs obligé de rentré ces commandes après redémarage du pc. Il y-a-t'il un moyen pour conserver l'autentification meme apres redamarrage du pc ?

n°1542502
DrOctopus
Posté le 13-04-2007 à 11:37:14  profilanswer
 

J'ai encore une petite question, voici mon script bash qui doi installer un rpm sur l'ordinateur distant:
#!/bin/bash
ssh ordi_distant
rpm -i AdobeReader.rpm
exit
 
Mais ce c** m'installe le rpm sur mon ordinateur, et pas sur l'ordi distant! Savez vous svp comment faire pour executer les commande qui suivent "ssh" sur le pc distant ?
merci d'avance :)

n°1542521
couak
Posté le 13-04-2007 à 11:47:27  profilanswer
 

DrOctopus a écrit :

Ok, alors j'ai reussi a faire marcher la connexion auto avec ssh-agent. Pour lancer ssh-agent, je fais "ssh-agent", pour entrer mon MDP je fais "ssh-add" et la je rentre mon mdp. Ensuite quand je fais ssh pcdistant, ca marche bien, meme en arretant et en relancant le terminal.
Seulement je suis tjrs obligé de rentré ces commandes après redémarage du pc. Il y-a-t'il un moyen pour conserver l'autentification meme apres redamarrage du pc ?


tu risques qd meme de faire une grosse faille de sécurité comme ca

mood
Publicité
Posté le 13-04-2007 à 11:47:27  profilanswer
 

n°1542522
couak
Posté le 13-04-2007 à 11:47:53  profilanswer
 

DrOctopus a écrit :

J'ai encore une petite question, voici mon script bash qui doi installer un rpm sur l'ordinateur distant:
#!/bin/bash
ssh ordi_distant
rpm -i AdobeReader.rpm
exit
 
Mais ce c** m'installe le rpm sur mon ordinateur, et pas sur l'ordi distant! Savez vous svp comment faire pour executer les commande qui suivent "ssh" sur le pc distant ?
merci d'avance :)


ssh ordi_distant "rpm -i AdobeReader.rpm"

n°1542533
DrOctopus
Posté le 13-04-2007 à 11:51:36  profilanswer
 

ouep ca marche ca, bien vu, mai bon, je dois ecrire pas mal de truc apres la connexion ssh, il ya moyen de laisser le code en plusieurs lignes au lieu d'une seule ?

n°1542542
couak
Posté le 13-04-2007 à 11:55:48  profilanswer
 

ssh ordi_distant "echo pouet;
rpm -i AdobeReader.rpm;
rpm -i autre.rpm;
echo fini;"

n°1542556
DrOctopus
Posté le 13-04-2007 à 12:13:43  profilanswer
 

attend je te met le vrai script que je fais ca ira + vite lol:
 
#!/bin/bash
ssh lapp-dh187 'var=$(rpm -q $1);
if [ "$var" = "le paquetage $1 n'est pas installé" ];
then;
echo "Installation de $1 en cours...";
mkdir -p /mnt/temp;
mount -o nolock -t nfs 134.158.96.8:/kickstart/utile /mnt/temp;
rpm -i /mnt/temp/$1.rpm;
umount /mnt/temp;
else;
echo "$1 deja installe";
fi;'
exit
 
ca me renvoi:
line 11: unexpected EOF while looking for matching `"'
line 14 syntax error: unexpected end of file
surement un soucis de quotes... mais j'ai essayer en mettant des doubles quotes comme dans ton exemple, c'est pareil :(

n°1542592
couak
Posté le 13-04-2007 à 13:09:38  profilanswer
 

rah la la :/ maintenant que t'as les bases de ssh tu pouvais quand même t'imaginer des trucs sioux :/

Code :
  1. scp monscript.sh user@host:/tmp
  2. ssh user@host "sh /tmp/monscript.sh"

n°1542608
DrOctopus
Posté le 13-04-2007 à 13:36:01  profilanswer
 

lol oui jy avais pensé, mais bon si je fais un script, il sera situé sur la machine distante, et au niveau sécurité je n'aime pas trop ca. Pour l'erreur de tout a l'heure, il fallai mettre un \ devant le ' .
Mais j'ai une nouvelle erreur :(
 
roooh quel inculte !! desolé :)
 
#!/bin/bash
ssh ordi_distant "var=$(rpm -q $1);
if [ "$var" = "le paquetage $1 n\'est pas installé" ];
then;
echo "Installation de $1 en cours...";
mkdir -p /mnt/temp;
mount -o nolock -t nfs 134.158.96.8:/kickstart/utile /mnt/temp;
rpm -i /mnt/temp/$1.rpm;
umount /mnt/temp;
else;
echo "$1 deja installe";
fi;"
exit
 
nouvelle erreur:
bash: paquetage: command not found
bash: -c: line 2: syntax error near unexpected token `then'
bash: -c: line 2: `then;'

n°1542611
couak
Posté le 13-04-2007 à 13:40:49  profilanswer
 

il n'y a pas de ; après un then

n°1542612
DrOctopus
Posté le 13-04-2007 à 13:43:23  profilanswer
 

c pareil si j'enleve le ; apres if,then,else et fi

n°1542638
DrOctopus
Posté le 13-04-2007 à 14:16:52  profilanswer
 

tin ca me soule,
je test la commande sur une seule ligne sur mon pc (pas distant):
#!/bin/bash
var=$(rpm -q $1);if [ "$var" = "le paquetage $1 nest pas installé" ];then echo "Installation de $1 en cours...";mkdir /root/Desktop/REPERTOIRE;else echo "$1 deja installe";fi;
exit
ca marche, mais bon il me créer le repertoire sur mon pc
 
et si je met cette grosse commande apres le ssh ordi_distant:
#!/bin/bash
ssh ordi_distant" var=$(rpm -q $1);if [ "$var" = "le paquetage $1 nest pas installé" ];then echo "Installation de $1 en cours...";mkdir /root/Desktop/REPERTOIRE;else echo "$1 deja installe";fi;"
exit
bash: -c: line 0: unexpected EOF while looking for matching `''
bash: -c: line 1: syntax error: unexpected end of file

n°1542641
couak
Posté le 13-04-2007 à 14:22:01  profilanswer
 

il faut échapper tous les caractères spéciaux comme $, ", ...

n°1542642
couak
Posté le 13-04-2007 à 14:23:20  profilanswer
 

edit : mauvais thread :o


Message édité par couak le 13-04-2007 à 14:23:37
n°1542647
DrOctopus
Posté le 13-04-2007 à 14:26:10  profilanswer
 

ouep, il ya bien un souci au niveau de la déclaration du var. Car quand j'efface le var et que je met une autre commande comme pwd a la place,là ca marche bien. j'ai essayé de mettre var=`rpm -q Adobe`;
--> meme erreur

n°1542654
DrOctopus
Posté le 13-04-2007 à 14:38:15  profilanswer
 

ca s'améliore un poil, ce script marche:
#!/bin/bash
ssh ordi_distant "var=0;  
if [ $var=0 ];
then mkdir /root/Desktop/REPERTOIRE;
else echo pouet;
fi;"
exit
 
me reste plus qu'a trouver un moyen de recuperer le resultat de la commande rpm -q XXX.rpm

n°1542687
DrOctopus
Posté le 13-04-2007 à 15:39:19  profilanswer
 

#!/bin/bash
ssh ordi_distant '
var=`rpm -q $1`;  
if [ $var="le paquetage  nest pas installé" ];
then mkdir /root/Desktop/REPERTOIRE;
else echo pouet;
fi;
echo "le parametre est:"$1;'
exit
 
le recois en résultat:
rpmq: aucun argument fournit à la requete
le paramètre est:
 
Je suis sur le pc A, et je veux me connecter au pc B pour y créer le repertoire /root/Desktop/REPERTOIRE.
Donc je lance le script sur le pc A avec un parametre, mais en fait, le script se connecte au pc B et attend un parametre provenant du shell du pc B.
Donc en gros ma question est: comment dois-je faire pour donner un parametre sur le shell du pc A, pour qu'il soit reconnu dans la partie ssh du script ?
je sais c'est un peu tordu mais je n'ai pas pu mieux expliquer :D

n°1543194
DrOctopus
Posté le 16-04-2007 à 09:46:51  profilanswer
 

bon voici mon dernier probleme en date, donc oubliez tout les autres lol :D
 
J'ai fais ce pti script qui va voir si le paquetage passé en paramètre est installé ou non:
 
#!/bin/bash
ssh ordi_disant "
var=$(rpm -q $1);  
if [ $var="le paquetage nest pas install" ];
then echo pasinstalle;
else echo $var;
fi;"
exit
 
me renvois:
bash: -c: line 1: unexpected EOF while looking for matching `''
bash: -c: line 6: syntax error: unexpected end of file
 
si je met des simple quote autour de <le paquetage nest pas install>, ca me renvoit:
bash: -c: line 2: unexpected EOF while looking for matching `''
bash: -c: line 6: syntax error: unexpected end of file
bizarre non ?

n°1543728
matafan
Posté le 17-04-2007 à 12:31:16  profilanswer
 

Remplace le premier et le dernier " par un ', ou bien met un un \ devant le 2ème et l'avant dernier ".
Edit : et fais gaffe avec l'apostrophe de "n'est pas installé" aussi.


Message édité par matafan le 17-04-2007 à 12:32:59
n°1546449
black_lord
Truth speaks from peacefulness
Posté le 21-04-2007 à 23:06:03  profilanswer
 

couak a écrit :

rah la la :/ maintenant que t'as les bases de ssh tu pouvais quand même t'imaginer des trucs sioux :/

Code :
  1. scp monscript.sh user@host:/tmp
  2. ssh user@host "sh /tmp/monscript.sh"



 
 
non mais

ssh user@host commande

c'est quand même mieux :o


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Script pour se connecter a distance en ssh

 

Sujets relatifs
Tuer un process cURL.exe à distanceUn script batch pour capturer un site web
[AWK] Comprendre un script... [ RESOLU ][html/css/js ??] script de screenshot [resolu]
Empêcher la fermeture d'un script[python] DONE : script de tracking UPS multithreadé
Script Gestion de commentairesscript js
Script - Base de donnéesScript WinRAR
Plus de sujets relatifs à : Script pour se connecter a distance en ssh


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR