Я хотел бы сценарий сложного сценария передачи файлов из Linux на FTP-сервер Windows (обнаружение новых/измененных файлов, а затем передача), и я не могу найти команду -line ftp client, который поддерживает отправку файлов через постоянный сеанс (один раз) в неинтерактивном режиме.Постоянная неинтерактивная сессия FTP для использования в сценариях оболочки
ssh/scp
с аутентификацией без пароля не является вариантом, так как у меня нет доступа к FTP-серверу Windows.
Например, используя lftp
`lftp -u user,pass -p 21 -e "mput newfile.txt;"` 10.0.0.100
будет загрузить файл на сервер, но требует аутентификации/квитирования произойти при каждом запросе, который занимает много времени и сильно замедляет передачу.
Мне интересно, есть ли способ аутентификации один раз, установить постоянное соединение и затем отправить файлы по этому соединению. lftp
и другие клиенты могут сделать это в интерактивном режиме (подключиться, а затем выполнить несколько команд до выхода из игры).
Поэтому:
- Есть ли FTP-клиент на Linux, который может работать, как это в не интерактивном режиме?
- В качестве альтернативы, есть ли способ имитировать это поведение, используя сценарий в интерактивном режиме? Может быть, что-то использует
expect
сnetcat/telnet
и/или именованными трубами?
Помимо автоматизации ввода пароля, LFTP может быть сценарий уже: https://web.archive.org/web/20111024014512/http://tutorials.papamike.ca/pub/lftp.html #scripts –
Многие языки используют FTP-клиенты, поэтому вы можете создавать как достаточно сложные скрипты, как вам нравится: [Tcl] (http://core.tcl.tk/tcllib/doc/trunk/embedded/www/tcllib/files/modules /ftp/ftp.html), [Perl] (https://metacpan.org/pod/Net::FTP), [Ruby] (http://ruby-doc.org/stdlib-2.2.2/libdoc/ net/ftp/rdoc/Net/FTP.html), [Python] (https://docs.python.org/3/library/ftplib.html?highlight=ftp#module-ftplib) –
@glennjackman Я знаю, что ' lftp' может читать набор из команд из файла и что я могу также передавать в него несколько команд, но это не решает, чего я хочу достичь. Как я уже сказал, я хочу загружать файлы, когда они становятся доступными (обнаружение новых/измененных файлов). Таким образом, я не могу предварительно заполнить скрипт командами, я должен инициировать новую передачу, когда файлы обнаружены. Именно по этой причине я хочу, чтобы сессия была открытой, чтобы не пересоединяться все время. – henfiber