Perl(SSH到远程主机,发出命令并关闭会话而不等待它完成…)

前端之家收集整理的这篇文章主要介绍了Perl(SSH到远程主机,发出命令并关闭会话而不等待它完成…)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
脚本进入远程服务器并使用Net :: SSH :: Perl运行 shell脚本“snap.sh”.
这个shell脚本需要大约10分钟才能结束,我的perl程序会一直等到输出结束.
我想在远程服务器上运行shell脚本,程序应关闭SSH会话,而不必等待脚本在远程服务器上完成.

my $ssh = Net::SSH::Perl->new($host,protocol =>2);
$ssh->login($username,$password);
my $cmd="./bin/snap.sh";
my($stdout,$stderr,$exit) = $ssh->cmd($cmd);

解决方法

未经测试,但你不能只做什么ssh -f吗?

my $ssh = Net::SSH::Perl->new($host,$password);
defined (my $pid = fork) or die "fork: $!";
if ($pid) {
    close $ssh->sock;
    undef $ssh;
} else {
    my $cmd="./bin/snap.sh";
    my($stdout,$exit) = $ssh->cmd($cmd);
    POSIX::_exit($exit);
}

猜你在找的Perl相关文章