$ ./sshauto.sh|pl|py 'ls -l /tmp/yoda_is_awesome.txt'
Password: pavlo@10.10.10.10's password: -rw-r--r-- 1 root root 56 Jul 19 2006 /tmp/yoda_is_awesome.txt pavlo@20.20.20.20's password: -rw-r--r-- 1 root root 56 Jul 19 2006 /tmp/yoda_is_awesome.txt pavlo@30.30.30.30's password: -rw-r--r-- 1 root root 56 Jul 19 2006 /tmp/yoda_is_awesome.txt < >
$ cat ./sshauto.sh #!/bin/bash echo -n "Password:" read -s passw; echo stty echo while read IP do ./sshlogin.exp $passw $IP "$1" 2> /dev/null done < ip_addresses.txt $ cat ./sshlogin.exp #!/usr/bin/expect -f set password [lrange $argv 0 0] set ip_address [lrange $argv 1 1] set command [lindex $argv 2] spawn ssh -q -t -o StrictHostKeyChecking=no pavlo@$ip_address $command expect "*?assword:*" send -- "$password\r" expect eof
$ cat ./sshauto.pl #!/usr/bin/perl use Expect; use Term::ReadKey; print "Password:"; ReadMode 'noecho'; $password = ReadLine(0); chomp($password); print "\n"; ReadMode 'normal'; $command = $ARGV[0]; open (IP_list, 'ip_addresses.txt'); foreach $IP (<IP_list>) { chomp($IP); $cli = "/usr/bin/ssh -q -t -o StrictHostKeyChecking=no et0362\@$IP $command"; $exp = new Expect; $exp->raw_pty(1); $exp->spawn($cli) or die "Cannot spawn $cli: $!\n"; $exp->expect(5, [ qr /ssword:*/ => sub { my $exph = shift; $exph->send("$password\n"); exp_continue; }] ); }; close (IP_list);
$ cat ./sshauto.py #!/usr/bin/python import pexpect import getpass import sys command = sys.argv[1] password = getpass.getpass() IP_list = open('ip_addresses.txt') IP = IP_list.readline() while IP: print IP, cli="ssh pavlo@%s %s" % (IP,command) exp = pexpect.spawn(cli) exp.expect('password:') exp.sendline(password) exp.expect(pexpect.EOF) print exp.before IP = IP_list.readline() IP_list.close()
Source: https://habr.com/ru/post/131835/