Есть какой-либо способ открыть соединение с ftp-сервером с помощью lftp, отправить команду (например, ls), проанализировать результаты и затем отправить еще одну команду, не закрывая сокет управления. Другими словами, я хочу сделать это:

lftp -e ls >> somefile

проанализировать что-нибудь

lftp -e другая команда

Но я не хочу повторно проходить аутентификацию и открывать новое соединение для второй команды lftp. Есть какой-либо способ сделать это?

1 ответ1

0

Хорошая новость в том, что вы можете, плохая в том, что не так, как вы хотите.

Чтобы не проходить повторную аутентификацию, вы должны оставаться в том же сеансе 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .