Я пишу немного сценария оболочки, который должен пройти все папки и файлы на FTP-сервере (рекурсивно). До сих пор все хорошо работает с помощью ЗАВИХРЕНИЯ - но это довольно медленно, becuase ЗАВИХРЕНИЕ запускает новую сессию для каждой команды. Таким образом для 500 каталогов, ЗАВИХРЕНИЕ формует 500 логинов.
Кто-либо знает, могу ли я остаться, вошел в систему с помощью ЗАВИХРЕНИЯ (это будет моим любимым решением), или как я могу использовать ftp только с одной сессией в сценарии оболочки?
Я знаю, как выполнить ряд команд ftp и получить ответ, но для рекурсивного списка, это должно быть немного более динамично...
Спасибо за помощь!
, если вы просто хотите создать список всех файлов и папок, вы можете вместо этого использовать ssh
. Примерно так (но проверьте документацию по правильному использованию)
$ ssh user@host "ls -R /path"
Команда на самом деле ncftpls -R
. Она рекурсивно перечислит все файлы в ftp-папке.
Вы можете подключиться к ftp-серверу таким образом, чтобы он принимал команды от stdin и пишет в стандартный вывод. Создайте два именованных канала ("fifos", man mkfifo
), перенаправьте stdin и stdout команды ftp каждому из них. Затем вы можете записывать команды в stdin-connected-fifo и читать их (построчно с read
bash, например) из stdout-fifo.Затем используйте результаты, чтобы увидеть, куда вам нужно отправить другую команду листинга (и распечатать ее или что-то еще, что вы хотите сделать)
Короче: не то, для чего сценарий bash подходит :) (пока вы не найдете инструмент, который делает то, что вы хочу само собой конечно)