Hello lftp users,
I'm using lftp for a project at the EBU (http://www.ebu.ch/,
http://www.eurovision.net/, http://tech.ebu.ch/) and I need to get and parse
the status line (e.g. "`/data1/2011/ER11041216.rm' at 1349536 (2%) 215.2K/s
eta:4m [Sending data]") when lftp runs detached (i.e. without a terminal tty,
isatty() == 0).
Currently I managed to do this by creating the following perl wrapper to lftp:
#!/usr/bin/perl -w
use strict;
use Expect;
$SIG{INT} = \&sig_handler;
$SIG{QUIT} = \&sig_handler;
$SIG{TERM} = \&sig_handler;
$SIG{KILL} = \&sig_handler;
$| = 1;
my $args = join(' ', @ARGV);
my $exp = new Expect;
$exp->raw_pty(1);
$exp->slave->clone_winsize_from(\*STDIN);
$exp->log_stdout(0);
$exp->log_file(\&logger);
$exp->spawn("lftp $args") or die "Cannot spawn lftp $args: $!\n";
$exp->expect(undef);
$exp->soft_close();
exit(0);
sub logger {
my $status = shift;
$status =~ s/\x1B\x5B\x30\x30\x6D//g;
$status =~ tr/\x00-\x1F//d;
$status =~ s/^\s+//;
if ($status) {
print "$status\n"
};
}
sub sig_handler {
my $sig = shift;
$exp->hard_close();
exit(1);
}
My question is: would it be possible to add a switch to always have the status
line being displayed (as text, withous special terminal characters) or to
create an additional xml-like output that could be parsed by some other
controlling programs?
Anticipating thanks and best regards,
Nicolas Mizel
_______________________________________________
lftp mailing list
[email protected]
http://univ.uniyar.ac.ru/mailman/listinfo/lftp