[SSH] Ecrire un script pour connexion SSH
Fermé
Linux_fedora
Messages postés
10
Date d'inscription
mardi 15 août 2006
Statut
Membre
Dernière intervention
5 septembre 2006
-
16 août 2006 à 12:24
kikou - 3 déc. 2010 à 19:34
kikou - 3 déc. 2010 à 19:34
A voir également:
- Script ssh
- Script vidéo youtube - Guide
- Ssh download - Télécharger - Divers Web & Internet
- Ghost script - Télécharger - Polices de caractères
- Script bat - Guide
- Microsoft activation script - Accueil - Windows
10 réponses
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
17 août 2006 à 18:14
17 août 2006 à 18:14
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 :
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" exitLe 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 ;-))
Linux_fedora
Messages postés
10
Date d'inscription
mardi 15 août 2006
Statut
Membre
Dernière intervention
5 septembre 2006
4
17 août 2006 à 18:10
17 août 2006 à 18:10
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 ??
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 ??
Linux_fedora
Messages postés
10
Date d'inscription
mardi 15 août 2006
Statut
Membre
Dernière intervention
5 septembre 2006
4
17 août 2006 à 18:36
17 août 2006 à 18:36
Exact ca marche!!
Tout est dans la force_conservative
Merci!
Tout est dans la force_conservative
Merci!
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
17 août 2006 à 18:41
17 août 2006 à 18:41
Tout est dans la force_conservative
Exact petit scarabée.
Que la conservation soit avec toi alors ;-)))))
Exact petit scarabée.
Que la conservation soit avec toi alors ;-)))))
bjr bsr a vous :)
j'aimerai savoir comment faire pour cacher l'affichage de l'exécution du scripte
ex:
[...]
[...]
Merci a vous
j'aimerai savoir comment faire pour cacher l'affichage de l'exécution du scripte
ex:
[...]
ssh root@domain.com #comment cacher ca
[...]
Merci a vous
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
jisisv
Messages postés
3645
Date d'inscription
dimanche 18 mars 2001
Statut
Modérateur
Dernière intervention
15 janvier 2017
934
16 août 2006 à 13:10
16 août 2006 à 13:10
Après avoir initialisé les variables monport et monserveur:
La redirection est effectuée sur le client
La redirection est effectuée sur le serveur distant.
On peut évidemment effectuer une suite de commandes ne demanadant pas d'interractivité:
Il faut trouver une solution pour l'envoi du mot de passe...
(il y avait expect dans le temps)
Johan
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
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
16 août 2006 à 13:54
16 août 2006 à 13:54
Salut Johan,
il y avait expect dans le temps
il existe toujours, d'ailleurs il me sert tous les jours pour éteindre ma passerelle ...
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 "\\\[*]\$*";-))
jisisv
Messages postés
3645
Date d'inscription
dimanche 18 mars 2001
Statut
Modérateur
Dernière intervention
15 janvier 2017
934
>
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
16 août 2006 à 14:47
16 août 2006 à 14:47
Ah ben oui, c'est parfait.
Celà fait quelques années que je ne l'ai plus utilisé ;)
Johan
Celà fait quelques années que je ne l'ai plus utilisé ;)
Johan
Linux_fedora
Messages postés
10
Date d'inscription
mardi 15 août 2006
Statut
Membre
Dernière intervention
5 septembre 2006
4
16 août 2006 à 16:38
16 août 2006 à 16:38
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!
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!
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
16 août 2006 à 19:20
16 août 2006 à 19:20
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
;-))
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
;-))
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?
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?
jisisv
Messages postés
3645
Date d'inscription
dimanche 18 mars 2001
Statut
Modérateur
Dernière intervention
15 janvier 2017
934
17 août 2006 à 12:30
17 août 2006 à 12:30
C'est normal
Ton serveur distant est un Unix , je suppose, donc
- 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
(man tee)
Si tu pouvais préciser ton objectif...
Johan
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
Linux_fedora
Messages postés
10
Date d'inscription
mardi 15 août 2006
Statut
Membre
Dernière intervention
5 septembre 2006
4
17 août 2006 à 12:43
17 août 2006 à 12:43
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
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
jisisv
Messages postés
3645
Date d'inscription
dimanche 18 mars 2001
Statut
Modérateur
Dernière intervention
15 janvier 2017
934
17 août 2006 à 13:05
17 août 2006 à 13:05
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 ?
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 ?
Linux_fedora
Messages postés
10
Date d'inscription
mardi 15 août 2006
Statut
Membre
Dernière intervention
5 septembre 2006
4
17 août 2006 à 16:20
17 août 2006 à 16:20
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?
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?