Le fichier Batch pour PuTTY/PSFTP de transfert de fichiers de l'automatisation
J'ai un fichier de commandes pour déplacer des fichiers à partir de mon PC local vers un serveur via le protocole SFTP. J'ai Mastic installé dans mon système et le fichier de commandes de code suit.
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 quand je tape dans l'invite de commande. Mais quand je double-clique sur le .bat
fichier et de l'exécuter, il n'est pas en marche et en demandant le nom d'utilisateur et un mot de passe. Mon but était d'automatiser l'ensemble de la chose et j'ai besoin de le lancer en cliquant simplement sur le .bat
fichier. Mais je ne suis pas en mesure de le réaliser. Des idées ou des extraits de m'aider.
OriginalL'auteur suresh | 2013-05-08
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin pour stocker les psftp script (lignes de
open
àbye
) dans un fichier séparé et passer àpsftp
à l'aide de-b
commutateur:Où
script.txt
est supposé être dansC:\Program Files (x86)\PuTTY
. Sinon fournir un chemin d'accès complet (Ne pas oublier de joindre le chemin de guillemets, en particulier si elle contient des espaces. Il est préférable de le faire avec votrecd
commande trop).Référence:
https://the.earth.li/~sgtatham/mastic/latest/htmldoc/Chapter6.html#psftp-option-b
EDIT: Pour le nom d'utilisateur+mot de passe: Comme vous ne pouvez pas utiliser
psftp
commandes dans un fichier de commandes, pour la même raison, vous ne pouvez pas spécifier le nom d'utilisateur et le mot de passe quepsftp
commandes. Ce sont les entrées de laopen
de commande. Alors que vous pouvez spécifier le nom d'utilisateur avec leopen
de commande (open <user>@<IP>
), vous ne pouvez pas spécifier le mot de passe de cette façon. Cela peut être fait sur unpsftp
ligne de commande uniquement. Ensuite, c'est probablement propre à faire tous sur la ligne de commande:Et retirer le
open
,<user>
et<PW>
les lignes de votrescript.txt
.Référence:
https://the.earth.li/~sgtatham/mastic/latest/htmldoc/Chapter6.html#psftp-départ
https://the.earth.li/~sgtatham/mastic/latest/htmldoc/Chapitre3.html#aide-cmdline-pw
Ce que vous faites de l'atm que vous exécutez
psftp
sans aucun paramètre ou les commandes. Une fois que vous quittez (comme en tapantbye
), votre fichier de commandes continue d'essayer d'exécuteropen
de commande (et d'autres), ce que le shell Windows n'est évidemment pas le comprendre.Si vous voulez vraiment garder le tout dans un seul fichier (le fichier de commandes), vous pouvez envoyer des commandes à psftp l'entrée standard, comme:
1) C'est
cd "C:\...\PuTTY"
2) Voir modifier dans ma réponseSa fonctionne parfaitement , merci.
j'ai un autre besoin dans ce processus d'automatisation. suis en train de mettre en œuvre un scenerio comme l'utilisateur doit donner un chemin d'accès et le chemin d'accès doit être lié à l'autre .le fichier bat et que le chemin d'accès doit être la destination où vais mettre mon dossier de locaux. Mon code ressemble à ceci: Getfile.bat : set /P INPUT=entrée de Type: psftp <utilisateur>@<IP> -b D:\FileTransfer.bat -pw <PW> le transfert de fichiers.chauve-souris : cd %INPUT% d:\ lcd mettre log.sh Erreur :Accès refusé à Distance répertoire de travail est /home/irisuser Répertoire /home/irisuser/%INPUT%: aucun fichier ou répertoire
C'est un sujet pour une nouvelle question. Mais de toute façon: 1) N'ont pas de nom psftp script
.bat
, ce n'est pas un fichier de commandes, il est donc source de confusion 2) Pour obtenir ce que vous voulez, vous avez besoin de générer le psftp script à la volée, en utilisant par exemple la séquence de commandes commeecho cd %INPUT% > FileTransfer.txt
,echo lcd d:\ >> FileTransfer.txt
,echo put log.sh >> FileTransfer.txt
. Si cela ne fonctionne pas, veuillez commencer une nouvelle question, que les commentaires ne sont pas le meilleur pour une telle question complexe.OriginalL'auteur Martin Prikryl