1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
|
#!/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;
|