рдЕрдм рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХреИрд╕реЗ рдХрд░реЗрдВ


рддреЛ, рдХреНрдпрд╛ рдЖрдк рдкрд╛рд╕рд╡рд░реНрдб рдЯрд╛рдЗрдк рдХрд░рдиреЗ, рдХрдорд╛рдВрдб рд▓рд┐рдЦрдиреЗ, рдмреЛрд░рд┐рдВрдЧ рд╡реЙрд▓рдкреЗрдкрд░ рджреЗрдЦрдиреЗ рд╕реЗ рдердХ рдЧрдП рд╣реИрдВ? рдХреНрдпрд╛ рдЖрдк рдмреНрд░рд╣реНрдорд╛рдВрдб рдХреЛ рдЬреАрддрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдиреА рд╣рдВрд╕реА рдкрд░ рдЖрд░рд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рдЦреБрдж рдХреЗ рдмрдЬрд╛рдп рд░реЛрдмреЛрдЯ рдХрд╛рдо рдХрд░реЗрдВ!


рд░реЛрдмреЛрдЯ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░реЛ


рд╕рд╣рд┐рд╖реНрдгреБрддрд╛ рдФрд░ рдирд┐рд╖реНрдард╛ рдХреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╢рд┐рдХреНрд╖рдХ рдпреЛрджрд╛ рдиреЗ рд╣рдореЗрдВ SSH рдкрд░ рд╢реВрдиреНрдп рдЧреБрд░реБрддреНрд╡рд╛рдХрд░реНрд╖рдг рдореЗрдВ рдЗрдВрдкреАрд░рд┐рдпрд▓ рдЗрд╡реЛрдХ рдкреНрд░рдЬрдирди рд╕рдорд┐рддрд┐ рдХреЗ рд╕рднреА 1000 рд╕рд░реНрд╡рд░реЛрдВ рдореЗрдВ рдЬрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рдореЗрдВ рдбреНрд░рд╛рдЗрд╡ рдХрд░реЗрдВ рдФрд░ рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЖрдХрд╛рд░ /tmp/yoda_y_wesome.txt рдХрд┐рд╕рдиреЗ рдмрдирд╛рдпрд╛ рд╣реИ
рд╣рдо рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдкрд╛рд╕рд╡рд░реНрдб рдФрд░ рдХрдорд╛рдВрдб рдПрдХрддреНрд░ рдХрд░реЗрдЧреАред рдкрд╣рд▓реЗ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд / рдЖрд╕рд╛рдиреА рд╕реЗ рдпреВрдирд┐рдХреНрд╕ / рд▓рд╛рдЗрдирдХреНрд╕ рдХреЛ рджрд┐рдП рдЧрдП рд╣реИрдВ: рдмреИрд╢ / рд╢реЗрд▓, рдкрд░реНрд▓, рдкрд╛рдпрдердиред
рдмрд╛рд╢ / рдкрд░реНрд▓ / рдкрд╛рдпрдерди рдореЗрдВ рдПрд╕рдПрд╕рдПрдЪ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореЙрдбреНрдпреВрд▓ / рдХрд╛рд░реНрдпрдХреНрд░рдо рд╣реИрдВред рд▓реЗрдХрд┐рди рдХрд▓, рдпреЛрджрд╛ рдХреЗ рд╢рд┐рдХреНрд╖рдХ рдЖрдкрдХреЛ рдЯреЗрд▓рдиреЗрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреА рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣реЗрдВрдЧреЗ, рдлрд┐рд░ рд╕реВрдбреЛ рдиреЗ рдХрд╣рд╛ тАЬрдпреЛрджрд╛ рд╕реБрдкрд░рдореИрди рд╣реИ!тАЭред рдмреИрд╢ рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдореЗрдВ рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рдЕрдкреЗрдХреНрд╖рд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ, рдкрд░реНрд▓ рдХреЗ рд▓рд┐рдП "Exp..pm" рдореЙрдбреНрдпреВрд▓, рдкрд╛рдпрдерди рдХреЗ рд▓рд┐рдП "pexpect" рдореЙрдбреНрдпреВрд▓ред
рдЕрдВрдд рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рд╕реВрдЪреАред
рд╣рдо рджреМрдбрд╝рдиреЗ рд╡рд╛рд▓реА рд░реЗрдЦрд╛рдУрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ:
$ ./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 <  > 

рдзреНрдпрд╛рди рдЦрддреНрдо рд╣реЛ рдЧрдпрд╛ред рд╕реНрд╡рд╛рдж рдХреЗ рд▓рд┐рдП рдПрдХ grep рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рдХрд░реЗрдВред

рд╣рдо рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рд░реЛрдмреЛрдЯ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рддреЗ рд╣реИрдВ


рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА ред рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рд╕рднреА 1000 рд╕рд░реНрд╡рд░ "рдПрд╕рдПрд╕рдПрдЪ рдкрдмреНрд▓рд┐рдХ рдХреА" рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВред рдпрд╣ рд╕рдордп рд▓реЗрдиреЗ рд╡рд╛рд▓реА рд╣реИ, рдФрд░ рдЕрдиреНрдп рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ (рдПрдХ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛, sudo, ... рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛) рдмреЗрдХрд╛рд░ рд╣реЛ рд╕рдХрддреА рд╣реИред
рд╕реАрдПрд╕рдПрдЪрдПрд╕ (рдХреНрд▓рд╕реНрдЯрд░ рдПрд╕рдПрд╕рдПрдЪ) ред рд╕рд░реНрд╡рд░ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдХрдВрд╕реЛрд▓ рдХреЛ рдЦреЛрд▓рддрд╛ рд╣реИ, рдФрд░ рд╕рднреА рд╕рд░реНрд╡рд░реЛрдВ рдкрд░ рдПрдХ рд╕рд╛рде рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рдВрдбреЛред 3 рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди, рд▓реЗрдХрд┐рди 1000 рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред
sshpassред рд╕рд╛рджреЗ рдкрд╛рда рдореЗрдВ рдПрд╕рдЯреАрдбреАрдЖрдИрдПрди рдХреЗ рд▓рд┐рдП рдкрд╛рд╕рд┐рдВрдЧ рдкрд╛рд╕рд╡рд░реНрдб рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП sshpass рд╣реИ: `sshpass -p 'PASSWORD' ssh pavlo@10.10.10.10 'ls -l / tmp / temp_file.txt' 'рдЬреЛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрддрд┐рд░рд┐рдХреНрдд sudo рдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдиреЗ рдкрд░ рдорджрдж рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред
рд╕реВрдХреНрд╖реНрдорджрд░реНрд╢реА ред (CFEngine, рдХрдардкреБрддрд▓реА, рдЖрдкрдХрд╛ рд╕рдВрд╕реНрдХрд░рдг)ред рдмрд╢рд░реНрддреЗ рдХрд┐ рд╡рд╣ рд╣рд░ рдЬрдЧрд╣ рдЦрдбрд╝рд╛ рд╣реЛред рдЙрд╕реЗ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдХрд╛рдо рд╕реМрдВрдкрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдорд╛рдЗрдХреНрд░реЛрд╕реНрдХреЛрдк рдХреЗ рд╕рд╛рде рд╣реИрдорд░ рдиреЗрд▓реНрд╕ рдХрд╛ рдЕрднреАрд╖реНрдЯ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рд╣реИред

рдЕрдВрдзреЗрд░рд╛ рдкрдХреНрд╖


рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреА рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрдерд╛рдкрдирд╛ рдореЗрдВ рдКрдкрд░ рд╕реВрдЪреАрдмрджреНрдз рдХреЛрдИ рднреА рд╕рдорд╛рдзрд╛рди рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдирд╣реАрдВ рдорд┐рд▓рд╛ред рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдкреИрдХреЗрдЬ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдЧреИрд▓реЗрдХреНрд╕реА рдХреИрдкреНрдЪрд░


рдпрд╣рд╛рдБ рдмреИрд╢, рдкрд░реНрд▓, рдкрд╛рдпрдерди рдореЗрдВ "рдПрдХреНрд╕рдкреЗрдХреНрдЯ" рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди / рдЙрдкрдпреЛрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВред
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ:
рдПрдХред ip_addresses.txt - рд╕рднреА IP рдкрддреЛрдВ рдХреА рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓ред
рдЦред рдПрдХ рдЧреБрдкреНрдд рд░реВрдк рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╢реБрд░реВ рдХрд░рддреЗ рд╕рдордп рдкрд╛рд╕рд╡рд░реНрдб рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдорд╛рд░
рд╕реНрдерд╛рдкрдирд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: рдЙрдореНрдореАрдж рд╣реИ
 $ 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 


PERL
рдореЙрдбреНрдпреВрд▓ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: рдЕрдкреЗрдХреНрд╖рд╛, рд╢рдмреНрдж :: ReadKey
 $ 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); 


рдЕрдЬрдЧрд░
рдореЙрдбреНрдпреВрд▓ рд╕реНрдерд╛рдкрдирд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: pexpect
 $ 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/In131835/


All Articles