加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-16 06:24:21 所属栏目:大数据 来源:网络整理
导读:脚本进入远程服务器并使用Net :: SSH :: Perl运行 shell脚本“snap.sh”. 这个shell脚本需要大约10分钟才能结束,我的perl程序会一直等到输出结束. 我想在远程服务器上运行shell脚本,程序应关闭SSH会话,而不必等待脚本在远程服务器上完成. my $ssh = Net::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);
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读