Рекурсивный список каталогов FTP в оболочке/ударе с единственной сессией (использующий ЗАВИХРЕНИЕ или ftp)

Я пишу немного сценария оболочки, который должен пройти все папки и файлы на FTP-сервере (рекурсивно). До сих пор все хорошо работает с помощью ЗАВИХРЕНИЯ - но это довольно медленно, becuase ЗАВИХРЕНИЕ запускает новую сессию для каждой команды. Таким образом для 500 каталогов, ЗАВИХРЕНИЕ формует 500 логинов.

Кто-либо знает, могу ли я остаться, вошел в систему с помощью ЗАВИХРЕНИЯ (это будет моим любимым решением), или как я могу использовать ftp только с одной сессией в сценарии оболочки?

Я знаю, как выполнить ряд команд ftp и получить ответ, но для рекурсивного списка, это должно быть немного более динамично...

Спасибо за помощь!

6
задан Timo 10 April 2010 в 17:57
поделиться

3 ответа

, если вы просто хотите создать список всех файлов и папок, вы можете вместо этого использовать ssh . Примерно так (но проверьте документацию по правильному использованию)

$ ssh user@host "ls -R /path"
-1
ответ дан 8 December 2019 в 12:58
поделиться

Команда на самом деле ncftpls -R. Она рекурсивно перечислит все файлы в ftp-папке.

10
ответ дан 8 December 2019 в 12:58
поделиться

Вы можете подключиться к ftp-серверу таким образом, чтобы он принимал команды от stdin и пишет в стандартный вывод. Создайте два именованных канала ("fifos", man mkfifo ), перенаправьте stdin и stdout команды ftp каждому из них. Затем вы можете записывать команды в stdin-connected-fifo и читать их (построчно с read bash, например) из stdout-fifo.Затем используйте результаты, чтобы увидеть, куда вам нужно отправить другую команду листинга (и распечатать ее или что-то еще, что вы хотите сделать)

Короче: не то, для чего сценарий bash подходит :) (пока вы не найдете инструмент, который делает то, что вы хочу само собой конечно)

0
ответ дан 8 December 2019 в 12:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: