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

Perl Net::openSSH 远程登录多台机器执行脚本

发布时间:2020-12-16 00:17:28 所属栏目:大数据 来源:网络整理
导读:需求:在多台机器需要同时执行文件,并且是不定期的,crontab不适用了,没办法了写了这个Script,简单也没什么错误提示,只为执行即可; 前提:在跳板机上已经和机器的ssh打通;在Script机器上安装perl模块Net::openSSH Net-OpenSSH-0.57.tar.gz 解压,发现

需求:在多台机器需要同时执行文件,并且是不定期的,crontab不适用了,没办法了写了这个Script,简单也没什么错误提示,只为执行即可;

前提:在跳板机上已经和机器的ssh打通;在Script机器上安装perl模块Net::openSSH

Net-OpenSSH-0.57.tar.gz

解压,发现需要安装其他模块;

逐个安装:

?

将上面的四个模块安装完毕;

编写脚本:allget.pl

#!/usr/bin/perl
use strict;
use Net::OpenSSH;

open (HD,"/home/user/alljd") || die "Cannot find file:$!n";
my @jd=<HD>;
close (HD);
my $jd;
foreach $jd(@jd) {
chomp ($jd);
my $user="user";
my $host=$jd;
#my $passphrase='user密码';
my $key='/home/user/.ssh/id_rsa';
my $cmd="ls";

my %param = (
??? user => $user,
#??? passphrase => $passphrase,
??? key_path => $key,
??? timeout => 60
??? );
my $ssh = Net::OpenSSH->new($host,%param);
my ($stdout,$stderr) = $ssh->capture2("sudo ./get.pl");
if ($stdout){
??? print $host is $stdout;
} else {
??? print $ssh->error;
??? $stderr and print $stderr;
}
}

alljd是个文本文件,get.pl是远程机器上的Script;

测试正常;

(编辑:李大同)

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

    推荐文章
      热点阅读