J'écris un petit shellscript qui doit passer par tous les dossiers et fichiers sur un serveur FTP (récursivement). Jusqu'à présent, tout fonctionne bien en utilisant Curl - mais c'est assez lent, Becuase Curl commence une nouvelle session pour chaque commandement. Donc, pour 500 répertoires, Curl préformes 500 connexions. P>
Est-ce que quelqu'un sait, que je puisse rester connecté à l'aide de CURL (ce serait ma solution préférée) ou comment je peux utiliser FTP avec une seule session dans un script shell? P>
Je sais comment exécuter un ensemble de commandes FTP et récupérer la réponse, mais pour la liste récursive, elle doit être un peu plus dynamique ... P>
Merci pour votre aide! P>
5 Réponses :
Si vous souhaitez simplement créer une liste de tous les fichiers et dossiers, vous pouvez utiliser ssh code> à la place. Quelque chose comme ça (mais vérifiez la documentation sur l'utilisation correcte)
Cela ne répond pas vraiment à la question. Nous ne savons pas qu'il a accès à Shell. Cela devrait être un commentaire.
Vous pouvez vous connecter au serveur FTP de manière à accepter les commandes de Stdin et écrit à STDOUT. Créez deux pipes nommées ("FIFOS", En bref: pas quelque chose de script Bash convient à :) (jusqu'à ce que vous trouviez un outil qui fait ce que vous voulez seul bien sûr) P> Man MKFIFO CODE>), Rediriger STDIN et STDOUT de la commande FTP à l'une d'elles. Ensuite, vous pouvez écrire des commandes sur STDIN-Connected-FIFO et les lire (ligne-by-ligne avec Bash's
Lire code> par exemple) à partir du stdout-fifo. Ensuite, utilisez les résultats pour voir où vous devez envoyer une autre commande d'annonce (et l'imprimer ou ce que vous voulez faire) p>
La commande est en réalité ncftpls -r code>. Il va répertorier récursivement tous les fichiers d'un dossier FTP. P>
Ont constaté que certains serveurs FTP ne supportent pas cette méthode.
Si c'est possible, essayez Usign LFTP Script: prochaine chose suivante u besoin est BASH Script pour exécuter cette commande LFTP et l'écrire à fichier: p> #!/bin/bash
lftp -f myscript.lftp > myOutputFile
La solution lftp code> fonctionne réellement avec Windows FTP Server, même avec la prise en charge de
ls -r code> supprimé: support.microsoft.com/kb/2007929 . Merci !
juste pour résumer ce que les autres ont dit jusqu'à présent. Si vous essayez d'écrire un script shell portable qui fonctionne comme un fichier de commandes, vous devez utiliser la solution LFTP depuis Certains serveur FTP ne peuvent pas mettre en œuvre ls -r code>. Il suffit de remplacer 123.456.789.100 avec l'adresse IP réelle du serveur FTP dans les exemples suivants:
$ echo ls -lR | ftp 123.456.789.100 > listing.txt