|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : décembre 2006 Messages : 95 ![]() |
Bonjour a tous
,j'ai fais ce pti script en utilisant l'outil expect. Il consiste a se connecter a un pc distant en ssh, et d'executer des commande dessus. Par contre, le mot de passe apparait en clair, donc pour la sécurité c pas le top. J'aimerais savoir si il y a un moyen de le cacher ? merci d'avance #!/usr/bin/expect -f set force_conservative 1; set timeout 3 spawn ssh 192.168.0.2 expect "password: $" send "xxxxxx\r" interact |
|
|
00
|
|
|
#2 |
|
Membre à l'essai
![]() Inscription : avril 2007 Messages : 24 ![]() |
perso je suis partisan de la connection "automatique" par ssh :o
surtout si c'est une machine sur laquelle tu te loggues souvent. |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : décembre 2006 Messages : 95 ![]() |
merci kan meme, j'ai réglé le souci en mettant en parametre le mdp
sinon est ce que vous savez comment on peut récuperer ce qu'une commande nous retourne? exemple: je tape : rpm -q AdobeReader --> ca m'affiche : AdobeReader n'est pas installé je tape : rpm -q AdobeReader_fra --> ca m'affiche : AdobeReader_fra-7.0.9-1 j'aimerais tester ce qu'on me retourne. Si rpm -q AdobeReader_fra me retourne AdobeReader n'est pas installé alors je l'installe sinon ne rien faire. merci d'avance |
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Inscription : décembre 2006 Messages : 95 ![]() |
maintenant jen suis a ce point là:
j'ai fais ce script en utilisant l'outil expect. Il 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 |
|
|
00
|
|
|
#5 | ||
![]() Inscription : mars 2004 Messages : 1 298 ![]() |
le resultat d'une commande et la variable shell "system" $?
si = a 0 la commande c'est bien passé sinon erreur donc Code :
|
||
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Inscription : décembre 2006 Messages : 95 ![]() |
merci,
expect est trop compliqué (c'est du language tcl), alors j'ai changé de technique. Maintenant je me connecte automatiquement en ssh avec ssh-agent. 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 |
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Inscription : décembre 2006 Messages : 95 ![]() |
J'ai reussi a executer des commande sur le pc distant en faisant:
#!/bin/bash ssh ordi_distant rpm -i AdobeReader.rpm logout exit 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 ? |
|
|
00
|
|
|
#8 |
|
Invité de passage
![]() Inscription : décembre 2006 Messages : 95 ![]() |
Il faut mettre des ; a la fin de chaque ligne et des doubles quote apres ssh ordi_distant:
#!/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 ca me renvoi: line 11: unexpected EOF while looking for matching `"' line 14 syntax error: unexpected end of file surement un soucis de quotes... |
|
|
00
|
|
|
#9 | |
![]() Inscription : mars 2004 Messages : 1 298 ![]() |
un grand classique
Citation:
|
|
|
|
00
|
|
|
#10 |
|
Invité de passage
![]() Inscription : décembre 2006 Messages : 95 ![]() |
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;' |
|
|
00
|
|
|
#11 |
|
Invité de passage
![]() Inscription : décembre 2006 Messages : 95 ![]() |
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 |
|
|
00
|
|
|
#12 |
|
Invité de passage
![]() Inscription : décembre 2006 Messages : 95 ![]() |
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 |
|
|
00
|
|
|
#13 |
|
Invité de passage
![]() Inscription : décembre 2006 Messages : 95 ![]() |
#!/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 |
|
|
00
|
|
|
#14 |
|
Invité de passage
![]() Inscription : décembre 2006 Messages : 95 ![]() |
Voici mon dernier probleme en date, donc oubliez tout les autres lol
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 ? |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com