Держите соединение LFTP открытым, делая другие вещи

695
Salazar

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

lftp -e ls >> somefile

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

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

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

0
Я бы также указал на [этот ответ] (https://stackoverflow.com/a/37894033/839276). Giuliano 5 лет назад 0

1 ответ на вопрос

0
Gombai Sándor

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

Чтобы не проходить повторную аутентификацию, вы должны оставаться в том же сеансе 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 
Одним из более хитрых решений является написание обертки вокруг lftp, но вы должны знать некоторые tcl, чтобы использовать их, что не так часто встречается в наши дни. Gombai Sándor 8 лет назад 0
Похоже, это может сработать. Я думал о том, чтобы проанализировать его, находясь в lftp, но я не понимал, что lftp может читать команды из файла. Еще одна мысль, которую я забыл упомянуть, это то, что я хотел бы сделать это циклом (т.е. ls >> анализ >> команды >> повтор). Считаете ли вы, что будет работать так, чтобы script_to_write_lftp_cmd_list.sh добавил команду в конце, которая вызывает сама себя (пока, конечно, не будут выполнены определенные условия)? Salazar 8 лет назад 0

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