rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

[SSH] Ecrire un script pour connexion SSH

Posté par Linux_fedora, le mercredi 16 août 2006 à 12:24:37
Salut a tous!

Je voudrais ecrire un script qui me permettrai depuis linux de

lancer une connexion ssh sur le PC Windows
Executer une commande (Exemple : Dir)
Crer un fichier de resultat (dir > test.txt)
Recuperer ce fichier

Sachant que j'ai SSH et que je me connecte parfaitement bien sur le PC windows via mot de passe.

Voila, pouvez me dire si c'est realisable et comment?

Merci de votre aide.
Répondre à Linux_fedora  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
jisisv, le mercredi 16 août 2006 à 13:10:51
Après avoir initialisé les variables monport et monserveur:
johan@johan:~$ ssh -l johand -p $monport $monserveur ls /mnt/hda4/johand/ISOS > file.txt
Password:
johan@johan:~$ cat file.txt
dfs-0.99.0_i386.iso
dfs-0.99.0_i386.iso.md5
dsl-3.0.iso
IDE-3.1.2a.iso.bz2
pcbsd
reactos0.3.0-RC1-live.zip
ReactOS-LiveCD.iso
ubuntu

La redirection est effectuée sur le client
johan@johan:~$ ssh -l johand -p $monport $monserveur 'ls /mnt/hda4/johand/ISOS > file.txt'
Password:
johan@johan:~$ ssh -l johand -p $monport $monserveur 'cat file.txt'
Password:
dfs-0.99.0_i386.iso
dfs-0.99.0_i386.iso.md5
dsl-3.0.iso
IDE-3.1.2a.iso.bz2
pcbsd
reactos0.3.0-RC1-live.zip
ReactOS-LiveCD.iso
ubuntu

La redirection est effectuée sur le serveur distant.
On peut évidemment effectuer une suite de commandes ne demanadant pas d'interractivité:
johan@johan:~$ ssh -l johand -p $monport $monserveur "echo \"N'importe quoi\" > file.txt; cat file.txt; pwd"
Password:
N'importe quoi
/home/johand
johan@johan:~$ scp -P $monport johand@$monserveur:file.txt .
Password:
file.txt                                                                                   100%   15     0.0KB/s   00:00

Il faut trouver une solution pour l'envoi du mot de passe...
(il y avait expect dans le temps)
Johan Gates gave you the windows.
GNU gave us the whole house.(Alexandrin)
Répondre à jisisv

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
jipicy, le mercredi 16 août 2006 à 13:54:09
Salut Johan,

il y avait expect dans le temps
il existe toujours, d'ailleurs il me sert tous les jours pour éteindre ma passerelle ...
#!/usr/bin/expect -f

set force_conservative 1 ;

set timeout 2
spawn ssh -l root 192.168.10.20 -p 222
expect "password:\r"
send -- "mon_mot_de_passe\r"
expect -gl "\\\[*]\$*"
send_user  "\rExtinction imminente..."
send -- "shutdown -h now\r"
expect -gl "\\\[*]\$*"
;-)) Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.
Répondre à jipicy

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
jisisv, le mercredi 16 août 2006 à 14:47:37
Ah ben oui, c'est parfait.
Celà fait quelques années que je ne l'ai plus utilisé ;)
Johan Gates gave you the windows.
GNU gave us the whole house.(Alexandrin)
Répondre à jisisv

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Linux_fedora, le mercredi 16 août 2006 à 16:38:44
A priori c'est possible donc.

Mais je vois pas comment prendre en compte la commande expect.

Pourriez vous m'ecrire le script avec cette commande pour le password et pour l'exemple que j'ai mis plus haut?

Ce que je voudrai c'est juste a avoir a lancer le script par la suite.

Merci encore pour l'aide!
Répondre à Linux_fedora

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
jipicy, le mercredi 16 août 2006 à 19:20:27
Re-

Regarde dans le "man" d'expect et surtout la fonction "autoexpect" (man autoexpect), qui génère un fichier d'après toutes les commandes tapées en mode interactif.

Je te file ce que j'ai comme liens là-dessus :
http://modp.com/release/sshpasswords/
http://www.linuxlots.com/~barreiro/spain/expect/
http://www.oreilly.com/catalog/expect/chapter/ch03.html
http://www.cotse.com/dlf/man/expect/index.htm

;-)) Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.
Répondre à jipicy

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Linux_fedora, le jeudi 17 août 2006 à 11:53:07
Salut

C'est ok pour la commande expect.

Mais dans :
johan@johan:~$ ssh -l johand -p $monport $monserveur "echo \"N'importe quoi\" > file.txt; cat file.txt; pwd"

Avec la commande dir cela ferait bien :

johan@johan:~$ ssh -l johand -p $monport $monserveur "echo \"dir\" > file.txt; cat file.txt; pwd"

Seulement cela ne marche pas (ca cre un fichier avec le mot dir dedans), est ce qu'il faur activer echo 1 pour ce genre de commande ou pas?
Répondre à Linux_fedora

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
jisisv, le jeudi 17 août 2006 à 12:30:31
C'est normal
johan@johan:~$ echo \"dir\" > file.txt; cat file.txt
"dir"


Ton serveur distant est un Unix , je suppose, donc
ssh -l username  $monserveur "ls > file.txt; cat file.txt"

- va créer file.txt
-afficher le contenu sur la console la console locale en l'occurrence car il n'y a aucune redirection ni distante ni locale
Tu peux utiliser tee
ssh -l username  $monserveur "ls | tee file.txt"

(man tee)
Si tu pouvais préciser ton objectif...
Johan Gates gave you the windows.
GNU gave us the whole house.(Alexandrin)
Répondre à jisisv

8


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Linux_fedora, le jeudi 17 août 2006 à 12:43:31
Desole je vais essayer de mieux expliquer

Je suis sur un client linux fedora et je veux executer ce script vers un serveur distant WINDOWS XP.

Je veux que le script:
- se connecte sur le serveur distant Win XP
- execute la commance DIR
- Cre un fichier de resultat
_ importe le fichier de resultat chez le linux

Voila pour l'instant mon script (grace a votre aide)

#!/usr/bin/expect -f
set timeout 60
spawn ssh user@xxx.xxx.x.x "echo \dir > file.txt"
expect "password: $"
send "xxxxxxxx\n"
interact
spawn sftp user@xxx.xxx.x.x:file.txt
expect "password: $"
send "xxxxxxx\n"
interact


Il me fait tres bien tout sauf executer une vraie commande DIR avamt de creer le fichier de resultat

Le fichier creer contient le mot "dir"!!

Voila j'espere que c'est plus clair
Répondre à Linux_fedora

9


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
jisisv, le jeudi 17 août 2006 à 13:05:15
Un
spawn ssh user@xxx.xxx.x.x "dir > file.txt"
devrait suffire alors.
Tu disposes d'un serveur ssh su ta bécanne XP?
Cygwin, autre ? Gates gave you the windows.
GNU gave us the whole house.(Alexandrin)
Répondre à jisisv

10


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Linux_fedora, le jeudi 17 août 2006 à 16:20:04
Oui il y a Opensshd dessus.

Si je fait
spawn ssh user@xxx.xxx.x.x "dir > file.txt"

Il me fait un message d'erreur
dir not found

Alors que cette commande marche tres bien si je la fais apres une connexion manuelle!

Tu vois une solution?
Répondre à Linux_fedora

11


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Linux_fedora, le jeudi 17 août 2006 à 18:10:58
J'ai trouve une solution en utilisant le pipe

J'ai fait un script ssh1:

#!/usr/bin/expect -f
send_user "dir > file.txt\n"

Et si je lance manuellement dans le terminal:

/home/ssh1 | ssh user@xxx.xxx.x.x

Cele execute bien la commande dir > file.txt et le fichier est cree contenent bien les resultat de dir!

Le probleme est que si j'integre ca dans le script global pour que ce soit automatique:

#!/usr/bin/expect -f
set timeout 60
spawn /home/ssh1 | user@xxx.xxx.x.x
expect "password: $"
send "xxxxx\n"
interact
spawn sftp user@xxx.xxx.x.x:file.txt
expect "password: $"
send "xxxxxx\n"
interact


Il accepte pas la commande
spawn /home/ssh1 | user@xxx.xxx.x.x

Que faire ??
Répondre à Linux_fedora

12


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
jipicy, le jeudi 17 août 2006 à 18:14:30
Voilà un script qui marche bien chez moi dans les mêmes conditions que les tiennes, à savoir un client Linux (OpenSSH_4.3p1) qui se connecte au serveur Windows 2000 (OpenSSH_3.8.1p1) .

Le script :
#!/usr/bin/expect -f

set force_conservative 1;

set timeout 3
spawn ssh 192.168.10.1
expect "password:\r"
send -- "xxxxxxx\r"
expect "C:\Program Files\OpenSSH\home\jp>"
send -- "dir > fichier.txt\r"
expect "C:\Program Files\OpenSSH\home\jp>"
send -- "dir\r"
expect "C:\Program Files\OpenSSH\home\jp>"
send_user "Bye-bye\n"

puts "\n"
exit
Le résultat en direct live ;-))
[jp@MDK tmpfs]$ ./script.sh
spawn ssh 192.168.10.1

                            ****USAGE WARNING****

[...]
blablabla
[...]


jp@192.168.10.1's password:
Last login: Thu Aug 17 18:05:09 2006 from mdk.localdomain
Microsoft Windows 2000 [Version 5.00.2195]
(C) Copyright 1985-2000 Microsoft Corp.

C:\Program Files\OpenSSH\home\jp>dir > fichier.txt

C:\Program Files\OpenSSH\home\jp>dir
 Le volume dans le lecteur C s'appelle WK2Pro
 Le numro de srie du volume est 5878-57AE

 Rpertoire de C:\Program Files\OpenSSH\home\jp

17/08/2006  18:06       <DIR>          .
17/08/2006  18:06       <DIR>          ..
17/08/2006  18:06                  434 fichier.txt
17/08/2006  13:23       <DIR>          ssh
               1 fichier(s)              434 octets
               3 Rp(s)     465ÿ195ÿ008 octets libres

C:\Program Files\OpenSSH\home\jp>Bye-bye


[jp@MDK tmpfs]$
Ca marche ;-))
Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.
Répondre à jipicy

13


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Linux_fedora, le jeudi 17 août 2006 à 18:36:52
Exact ca marche!!

Tout est dans la force_conservative

Merci!
Répondre à Linux_fedora

14


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 jipicy, le jeudi 17 août 2006 à 18:41:33
Tout est dans la force_conservative

Exact petit scarabée.
Que la conservation soit avec toi alors ;-)))))
Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.
Répondre à jipicy
Logiciels pertinents trouvés dans les téléchargements
Télécharger SSH Secure Shell 3.0 build 203SSH Secure Shell - SSH secure shell for workstations est un client SSH flexible permettant de se connecter de façon sécurisée à des...Catégorie: Telnet/SSH
Licence: Open Source
Télécharger All In One Video Script 1.0All In One Video Script - All In One Video Script est un script pour l'extension GreaseMonkey pour le navigateur Firefox permettant de détecter la...Catégorie: Vidéo
Licence: Freeware/gratuit
Télécharger WAMP Server 2.0cWAMP Server - WAMP5 (WAMP signifiant Windows Apache Mysql PHP) est une plateforme de développement Web sous Windows. Il vous permet de...Catégorie: Serveurs
Licence: Freeware/gratuit
Télécharger Slide Freebie 2.5Slide Freebie - Slide Freebie est une visionneuse d'images (animées ou non). Il suffit de glisser/déposer le dossier contenant les...Catégorie: Diaporama
Licence: Freeware/gratuit
Plus de logiciels gratuits sur « [SSH] Ecrire un script pour connexion SSH »