Держите соединение LFTP открытым, делая другие вещи
Есть какой-либо способ открыть соединение с ftp-сервером с помощью lftp, отправить команду (например, ls), проанализировать результаты и затем отправить еще одну команду, не закрывая сокет управления. Другими словами, я хочу сделать это:
lftp -e ls >> somefile
проанализировать что-нибудь
lftp -e другая команда
Но я не хочу повторно проходить аутентификацию и открывать новое соединение для второй команды lftp. Есть какой-либо способ сделать это?
1 ответ
Хорошая новость в том, что вы можете, плохая в том, что не так, как вы хотите.
Чтобы не проходить повторную аутентификацию, вы должны оставаться в том же сеансе lftp. Это означает, что вы не должны выходить из lftp для анализа. Но после того, как вы записали вывод ls в файл, вы можете вызвать команду оболочки, чтобы сделать это, и если вы хорошо организовали вывод, вы можете использовать его в качестве команды.
$ lftp -u sgombai -e 'ls >/tmp/ls.log; source -e script_to_give_valid_lftp_cmd.sh' myhost
script_to_give_valid_lftp_cmd.sh должен написать действительную команду lft (или, может быть, больше, я не проверял), например, получить / mget / put / ... что-то для стандартного вывода. lftp перехватывает этот вывод и запускает его, как если бы он был напечатан.
Кроме того, вы можете вызвать команду оболочки, которая проанализирует и запишет список команд для запуска в файле. Затем вы можете найти (запустить) этот файл.
$ lftp -u sgombai -e 'ls >/tmp/ls.log; !script_to_write_lftp_cmd_list.sh > lftp_cmd.lst; source lftp_cmd.lst' myhost