Page 1 sur 1
Posté : mar. 08 janv. 2019, 11:33:53
par florian67
Bonjour à tous,
J'ai besoin de faire un envoi SFTP sans échange de clé, juste avec le mot de passe. La gestion de la sécurité FTP/SFTP d'en face se base sur une Active Directory Windows.
Pour l'instant je n'arrive pas à m'y connecter, ça commence déjà mal
Est-ce que quelqu'un à déjà fait ce genre de transfert ?
J'ai essayer plusieurs commandes mais rien n'y fait. Exemple :
Code : Tout sélectionner
sftp -o PreferredAuthentications=password -o PubkeyAuthentication=no user@serveur
Merci d'avance pour votre aide.
Florian
(sujet inconnu)
Posté : mar. 08 janv. 2019, 11:49:36
par claude.mahe
Bonjour,
J'ai rencontré le même problème...
A priori, il n’est pas possible nativement de passer le mot de passe dans un script de connexion. L’idée est donc d’utiliser, sous PASE, l’outil Opensource « expect » qui est capable de simuler en batch des saisies interactives. Pour plus d’informations, on pourra se référer à la page du site de Scott Klement consacré à OpenSSH sur IBM i (cf
https://www.scottklement.com/openssh/) ainsi que le site d’ « expect » lui-même (cf
http://expect.sourceforge.net/)
Installation du logiciel « expect » sur l’AS400 :
- Téléchargement des binaires sur le site
https://www.scottklement.com/expect/
- Une fois téléchargé sur l’AS400 (par exemple dans /tmp) lancer les commandes suivantes :
Code : Tout sélectionner
CALL QP2TERM
$ cd /tmp
$ uncompress tcl.8.4.9.tar.Z
$ uncompress expect.5.43.tar.Z
$ cd /
$ tar xf /tmp/tcl.8.4.9.tar
$ tar xf /tmp/expect.5.43.tar
$ ln -s /qopensys/usr/bin/stty /usr/local/bin/stty
Press F3 to exit PASE.
Ensuite çà n'est pas encore terminé ! Il faut en effet formater le script qui va être exécuté...
Extrait du CL : (nota : la variable &NULL contient la valeur hexa x'00')
Code : Tout sélectionner
CHGVAR &CHEVRON '> '
CHGVAR &CMD2 ('expect \"password:\"')
CHGVAR &CMDSH ('echo "' *TCAT &CMD2 *TCAT '"' +
*BCAT &CHEVRON *BCAT &FICCMD *TCAT &NULL)
CALL QP2SHELL (&SHELL &CMDSH)
CHGVAR &CMD2 ('send "' *TCAT &PASSWD *TCAT '\\n"')
Exemple de script :
Code : Tout sélectionner
************Beginning of data**************
#!/usr/local/bin/expect -f
log_file -noappend /tmp/monserveur.log
spawn sftp -o UserKnownHostsFile=/dev/null -o PubkeyAuthentication=no -o StrictHostKeyChecking=no user@monserveur
expect "password:"
send "azerty\n"
expect "sftp>"
send "put monfichier.txt\n"
expect "sftp>"
send "quit\n"
exit 0
************End of Data********************
(sujet inconnu)
Posté : mar. 08 janv. 2019, 12:00:30
par florian67
Merci beaucoup pour ce post Claude.
Je n'imaginais pas que ça soit si compliqué…
Du coup je sais à quoi je vais occuper ma journée:)
J'imagine qu'une fois installé on peut lancer les commandes manuellement dans QP2TERM pour essayer avant de valider le script ?
expect
Posté : mar. 08 janv. 2019, 12:21:13
par cmasse
Absolument, j'ai rencontré le même problème.
A priori c'est le type de terminal qui n'est pas reconnu. l’utilisation de cet utilitaire est le seul moyen...
Re: (sujet inconnu)
Posté : mar. 08 janv. 2019, 13:45:22
par claude.mahe
florian67 a écrit :Merci beaucoup pour ce post Claude.
J'imagine qu'une fois installé on peut lancer les commandes manuellement dans QP2TERM pour essayer avant de valider le script ?
Oui bien sûr
(sans sujet)
Posté : mer. 09 janv. 2019, 15:25:11
par florian67
Bonjour à tous,
Le petit utilitaire est installé.
Par contre je me demande si c'est vraiment possible de lancer la commande spawn dans QP2TERM.
Quand je test "spawn sftp ...." il me met : /QOpenSys/usr/bin/-sh: spawn: introuvable.
Et ce qui est bien c'est que le site de scott klement est en maintenance sur ce sujet
Florian