Halten Sie eine LFTP-Verbindung offen, während Sie andere Dinge tun

792
Salazar

Ich habe die Möglichkeit, mit lftp eine Verbindung zu einem ftp-Server herzustellen, einen Befehl zu senden (ls zum Beispiel), die Ergebnisse zu analysieren und dann einen weiteren Befehl zu senden, ohne den Kontrollsockel zu schließen. Mit anderen Worten, ich möchte das tun:

lftp -e ls >> somefile

Analysieren Sie eine Datei

lftp -e ein anderes Kommando

Ich möchte jedoch nicht erneut authentifizieren und eine neue Verbindung für den zweiten lftp-Befehl herstellen. Gibt es eine Möglichkeit, dies zu tun?

0
Ich möchte Sie auch auf [diese Antwort] hinweisen (https://stackoverflow.com/a/37894033/839276). Giuliano vor 5 Jahren 0

1 Antwort auf die Frage

0
Gombai Sándor

Die gute Nachricht ist, dass Sie es können, die schlechte ist, dass Sie nicht so wünschen, wie Sie möchten.

Um sich nicht erneut authentifizieren zu müssen, müssen Sie sich in derselben lftp-Sitzung befinden. Das bedeutet, dass Sie LFTP nicht zur Analyse beenden müssen. Nachdem Sie jedoch die Ausgabe von ls in eine Datei geschrieben haben, können Sie dazu einen Shell-Befehl aufrufen. Wenn Sie die Ausgabe gut organisieren, können Sie sie als Befehl verwenden.

$ 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 muss einen gültigen lft-Befehl (oder vielleicht mehr, den ich nicht getestet habe) wie get / mget / put / ... etwas in die Standardausgabe schreiben. lftp fängt diese Ausgabe ab und führt sie so aus, als wäre sie getippt worden.

Alternativ können Sie einen Shellbefehl aufrufen, der die Liste der Befehle analysiert und schreibt, die in einer Datei ausgeführt werden sollen. Dann können Sie diese Datei beschaffen (ausführen).

$ lftp -u sgombai -e 'ls >/tmp/ls.log; !script_to_write_lftp_cmd_list.sh > lftp_cmd.lst; source lftp_cmd.lst' myhost 
Eine schwierigere Lösung besteht darin, einen Wrapper um Iftp zu schreiben, aber man muss etwas Tcl wissen, um es zu nutzen, was heutzutage nicht so üblich ist. Gombai Sándor vor 8 Jahren 0
Das klingt, als könnte es funktionieren. Ich hatte daran gedacht, es in lftp zu analysieren, aber ich wusste nicht, dass lftp die Fähigkeit hatte, Befehle aus einer Datei zu lesen. Ein anderer Gedanke, den ich vergessen habe zu erwähnen, ist, dass ich es gerne zu einer Schleife machen würde (dh ls >> Analyse >> Befehle >> wiederholen). Denken Sie, dass es funktionieren würde, wenn Sie durch script_to_write_lftp_cmd_list.sh am Ende einen Befehl hinzufügen, der sich selbst aufruft (bis bestimmte Bedingungen natürlich erfüllt sind)? Salazar vor 8 Jahren 0