web-dev-qa-db-fra.com

Fichier de commandes pour l'automatisation du transfert de fichiers PuTTY/PSFTP

J'ai un fichier de commandes pour transférer le fichier de mon PC local au serveur via SFTP. J'ai installé PuTTY dans mon système et le code de fichier de traitement est le suivant.

cd C:\Program Files (x86)\PuTTY
psftp
open <IP>
<user>
<PW>
cd /home/irisuser/iris/integration/dls_dlsblr_dlschnn_in_msg/in
lcd d:\
put log.sh
bye

Le code ci-dessus fonctionne parfaitement lorsque je le tape dans la commande Invite. Mais lorsque je double-clique sur le fichier .bat et que je l'exécute, il ne s'exécute pas et demande la saisie d'un nom d'utilisateur et d'un mot de passe. Mon but était d'automatiser le tout et j'ai besoin de l'exécuter en cliquant simplement sur le fichier .bat. Mais je ne suis pas capable d'y parvenir. Toutes les idées ou extraits vont m'aider.

13
suresh

Vous devez stocker le script psftp (lignes de open à bye) dans un fichier séparé et le transmettre à psftp à l'aide du commutateur -b:

cd "C:\Program Files (x86)\PuTTY"
psftp -b script.txt

script.txt est supposé être dans C:\Program Files (x86)\PuTTY. Vous pouvez également indiquer un chemin complet (n'oubliez pas de joindre le chemin des guillemets, en particulier s'il contient des espaces. Vous devriez également le faire avec votre commande cd).

Référence:
https://the.earth.li/~sgtatham/PuTTY/latest/htmldoc/Chapter6.html#psftp-option-b


EDIT: Pour nom d'utilisateur + mot de passe: Comme vous ne pouvez pas utiliser les commandes psftp dans un fichier de traitement par lots, pour la même raison, vous ne pouvez pas spécifier le nom d'utilisateur et le mot de passe en tant que commandes psftp. Ce sont des entrées dans la commande open. Vous pouvez spécifier le nom d'utilisateur à l'aide de la commande open (open <user>@<IP>), mais vous ne pouvez pas spécifier le mot de passe de cette façon. Cela peut être fait sur une ligne de commande psftp uniquement. Alors c'est probablement plus propre de faire tout en ligne de commande: 

cd "C:\Program Files (x86)\PuTTY"
psftp -b script.txt <user>@<IP> -pw <PW>

Et supprimez les lignes open, <user> et <PW> de votre script.txt.

Référence:
https://the.earth.li/~sgtatham/PuTTY/latest/htmldoc/Chapter6.html#psftp-starting
https://the.earth.li/~sgtatham/PuTTY/latest/htmldoc/Chapter3.html#using-cmdline-pw


Ce que vous faites avec atm, c'est que vous exécutez psftp sans paramètre ni commande. Une fois que vous le quittez (par exemple en tapant bye), votre fichier de commandes continue d'essayer d'exécuter la commande open (et d'autres), ce que Windows Shell ne comprend évidemment pas.


Si vous voulez vraiment tout conserver dans un fichier (le fichier de commandes), vous pouvez écrire des commandes sur l'entrée standard psftp, comme par exemple:

(
    echo cd ...
    echo lcd ...
    echo put log.sh
) | psftp -b script.txt <user>@<IP> -pw <PW>
23
Martin Prikryl
set DSKTOPDIR="D:\test"
set IPADDRESS="23.23.3.23"

>%DSKTOPDIR%\script.ftp ECHO cd %PAY_REP%
>>%DSKTOPDIR%\script.ftp ECHO mget *.report
>>%DSKTOPDIR%\script.ftp ECHO bye

:: run PSFTP Commands
psftp <domain>@%IPADDRESS% -b %DSKTOPDIR%\script.ftp

Définissez les valeurs en utilisant les commandes avant les lignes ci-dessus.

Je crois que cela vous aide.

Reportez-vous à la section configuration psfpt pour le lien ci-dessous https://www.ssh.com/ssh/PuTTY/putty-manuals/0.68/Chapter6.html

0
Rajkumar S