Advertisement
Guest User

Untitled

a guest
Aug 5th, 2017
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 1.50 KB | None | 0 0
  1. use strict;
  2. no warnings;
  3. use Net::SSH::Perl;
  4. use IO::Socket::INET;
  5. use threads;
  6. use threads::shared;
  7.  
  8. #cmd to exec
  9. my $cmd = 'uname';
  10. #threads num
  11. my $thrnm = 1;
  12. #Connection timeout (sec)
  13. my $timeout = 5;
  14.  
  15.  
  16. #ip's
  17. my $ifile = './cred.txt';
  18. #exec result list
  19. my $rfile = './res.txt';
  20.  
  21. my @ilist : shared = loadf($ifile);
  22.  
  23. $| = 1;
  24. my @trl = ();
  25.  
  26. $trl[$_] = threads->create(\&main) for 0..$thrnm - 1;
  27. $_->join for @trl;
  28.  
  29. sub main
  30. {
  31.     while(@ilist)
  32.     {
  33.         my ($host, $user, $pass) = split /:/, shift @ilist;
  34.         my $sock = IO::Socket::INET->new(PeerAddr => $host, PeerProto => 'tcp', PeerPort => 22, Timeout => $timeout);
  35.         unless($sock)
  36.         {
  37.             print "No connection to $host:22\n";
  38.             next;
  39.         }
  40.         my ($one, $two, undef) = ssh_it($host, $user, $pass, $cmd);
  41.         if($one)
  42.         {
  43.             writef($rfile, "OK - $host:$user:$pass:$one\n");
  44.         }
  45.         elsif($two)
  46.         {
  47.             writef($rfile, "Err - $host:$user:$pass:$two\n");
  48.         }
  49.     }
  50. }
  51.  
  52. sub ssh_it
  53. {
  54.  my ($host, $user, $pass, $cmd) = @_;
  55.  
  56.  my $ssh = Net::SSH::Perl->new($host);
  57.  #...
  58.  eval
  59.   {
  60.    $ssh->login($user, $pass);
  61.   };
  62.  unless($@)
  63.   {
  64.    print "[+] $host:$user:$pass\n";
  65.    my ($stdout, $stderr, undef) = $ssh->cmd($cmd);
  66.    return ($stdout, $stderr);
  67.   }
  68.  else
  69.   {
  70.    print "[-] $host:$user:$pass\n";
  71.   }
  72.  return 0;
  73. }
  74.  
  75. sub writef
  76. {
  77.  open(F, '>>', $_[0]) || warn $_[0].' - '.$!."\n";
  78.  print F $_[1];
  79.  close F;
  80. }
  81.  
  82. sub loadf
  83. {
  84.  open(F, '<', $_[0]) || die $_[0].' - '.$!."\n";
  85.  chomp(my @list = <F>);
  86.  close F;
  87.  return @list;
  88. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement