MyMiniCity、Net::SSH::Perl、Cron用

| コメント(0)
直前のスクリプトをcrawl.plと保存して 自分の管理してるサーバーに実行させよう。

#!/usr/bin/env perl

use strict;
use warnings;

use FindBin;
use Perl6::Say;
use Net::SSH::Perl;
use IO::All;

my @hosts = qw/
     too.foo.bar
     many.foo.bar
     secret.foo.bar
/;
my $user = "bokutin";
my $cmd  = "/usr/bin/perl";
#my $stdin = "print 'test';";
my $stdin = io("$FindBin::Bin/crawl.pl")->slurp;

for my $host (@hosts) {
    my $ssh = Net::SSH::Perl->new($host,
        protocol       => 2,
        identity_files => ["$ENV{HOME}/.ssh/id_rsa"],
    );
    $ssh->login($user);
    my($stdout, $stderr, $exit) = eval { $ssh->cmd($cmd, $stdin) };

    if ($@) {
        print "$host: connecting error.\n";
    }
    else {
        print "$host:\n";
        for (split("\n", $stdout || "")) {
            print "\tSTDOUT: $_\n";
        }
        for (split("\n", $stderr || "")) {
            print "\tSTDERR: $_\n";
        }
        print "\tEXIT CODE: $exit\n";
    }
}

say "succeed";

コメントする