#!/usr/bin/perl
use strict;
use warnings;
use 5.010;
use Net::OpenSSH 0.65;
@ARGV == 3 or die <<USAGE;
Usage:
$0 host remote_directory mount_point
USAGE
my $uri = shift;
my $remote = shift;
my $local = shift;
my $ssh = Net::OpenSSH->new($uri);
$ssh->die_on_error;
my $dev = (stat $local)[0] // die "$local: $!";
my $sshfs_pid = $ssh->sshfs_import($remote, $local)
or $ssh->die_on_error;
$| = 1;
for (1..20) {
my $new_dev = (stat $local)[0];
if ($new_dev != $dev) {
my $master_pid = $ssh->disown_master;
$ssh->stop;
print "\nremote $remote mounted in $local, sshfs PID: $sshfs_pid, master ssh PID: $master_pid\n";
exit(0);
}
print '.';
sleep 1;
}
print "Time out!\n";
kill TERM => $sshfs_pid;