Codebase list libnet-sftp-foreign-perl / HEAD samples / sftp_tail.pl
HEAD

Tree @HEAD (Download .tar.gz)

sftp_tail.pl @HEADraw · history · blame

#!/usr/bin/perl

use strict;
use warnings;

use Net::SFTP::Foreign;
use Fcntl qw(SEEK_END);

@ARGV == 1
    or usage();

my ($host, $file) = $ARGV[0] =~ /([^:]+):(.+)/ or usage();

my $sftp = Net::SFTP::Foreign->new($host);
$sftp->error and die "Unable to connect to remote host: ".$sftp->error."\n";

my $fh = $sftp->open($file)
    or die "Unable to open file $file: ".$sftp->error."\n";

# goto end of file
seek($fh, 0, SEEK_END);

my $sleep = 1;
while (1) {
    while (<$fh>) {
        print;
        $sleep = 1;
    }
    print "### sleeping $sleep\n";
    sleep $sleep;
    $sleep++ unless $sleep > 5;
}

sub usage {
    warn <<EOW;
Usage:
  $0 [user@]host:/path/to/file
EOW
    exit 0;

}