рд╕рднреА рдХреЛ рд╢реБрдн рджрд┐рдиред
рдореИрдВ рдкреИрд░рд╛рдорд┐рдХреЛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ - рдЕрдЬрдЧрд░ рдореЗрдВ ssh рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдореЙрдбреНрдпреВрд▓ред
рдЗрд╕рдХреЗ рд╕рд╛рде, рдЖрдк рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рджреВрд░рд╕реНрде рд╕рд░реНрд╡рд░ (рдпрд╛ рдХрдИ) рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧреА рдФрд░ рдЙрд╕ рдкрд░ рдХреБрдЫ рдХрд░ рд╕рдХрддреА рд╣реИред
рдХреМрди рдкрд░рд╡рд╛рд╣ рдХрд░рддрд╛ рд╣реИ - рдореИрдВ рдПрдХ рдмрд┐рд▓реНрд▓реА рдХреЗ рд▓рд┐рдП рдкреВрдЫрддрд╛ рд╣реВрдВред
рдЕрдХреНрд╕рд░ рдХрд╛рдо рдкрд░ рдпрд╣ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд░реНрд╡рд░ рдкрд░ рдмрд╣реБрдд рд╣реА рд╕рдорд╛рди рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдерд╛ред рдХреНрд░рд┐рдпрд╛рдПрдБ рддреБрдЪреНрдЫ рд╣реИрдВ, рдЬреИрд╕реЗ "рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд╣реА рд▓рд╛рдЗрди рдирдВрдмрд░ 12" рдпрд╛ "рдлрд╝рд╛рдЗрд▓ рдХреЛ" version_017 "" рд╡рд░реНрдЬрди_018 "рд╕реЗ рдмрджрд▓реЗрдВред рдпрд╣ рддрдм рддрдХ рдЖрд╕рд╛рди рдерд╛ рдЬрдм рддрдХ рд╕рд░реНрд╡рд░ * рдЧреНрдпрд╛рд░рд╣ рдЯреБрдХрдбрд╝реЗ рдЬрдорд╛ рдирд╣реАрдВ рд╣реБрдПред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдРрд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдмрд╣реБрдд рдЬрд▓реНрджреА рдкрд░реЗрд╢рд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЛрдВрдиреЗ рдирдП рд▓реЛрдЧреЛрдВ рдХреЛ "ssh рдХреМрд╢рд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП" рд╢рдмреНрджреЛрдВ рдХреЗ рд╕рд╛рде рд╕реМрдВрдкрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╕рдмрд╕реЗ рд╕рд░рд▓ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдорд╛рдирдХ ssh рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдПрдХ рдлрд╝рд╛рдЗрд▓ рдФрд░ рд░рд┐рдореЛрдЯ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдирдХрд▓ рдХрд░рдирд╛ред рд╣рдордиреЗ рдЦрд╛рд▓реА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рднреА рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ред
рдЬрдм рдореИрдВ рд╕рд┐рд░реНрдл рдЕрдЬрдЧрд░ рд╕реАрдЦрдирд╛ рд╢реБрд░реВ рдХрд░ рд░рд╣рд╛ рдерд╛, рдореИрдВрдиреЗ рдпрд╣ рджреЗрдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдЗрди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреЗ рдкрд╛рд╕ рдХреНрдпрд╛ рд╣реИред Google рдиреЗ paramiko рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдорджрдж рдХреАред
рдкреИрд░рд╛рдорд┐рдХреЛ (рдЖрдЙрдЯрд▓реБрдХ рд╢рдмреНрджреЛрдВ рдХреЗ рд╕рдВрдпреЛрдЬрди "рдкреИрд░рд╛рдиреЙрдпрдб" рдФрд░ "рджреЛрд╕реНрдд" - "рдкреИрд░рд╛рдиреЛрдЬрд╛" + "рдПрдорд┐рдХреЛ") рдкрд╛рдпрдерди рд╕рдВрд╕реНрдХрд░рдг 2.3 рдФрд░ рдЙрд╕рд╕реЗ рдЕрдзрд┐рдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдореЙрдбреНрдпреВрд▓ рд╣реИ рдЬреЛ рдПрдХ рджреВрд░рд╕реНрде рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ рд▓рд┐рдП рд╕реБрд░рдХреНрд╖рд┐рдд (рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдФрд░ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рд╕рд╛рде) ssh2 рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред Ssh рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рдПрдкреАрдЖрдИ рдХрдиреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдПрдХ SSHClient рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдзрд┐рдХ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдЯреНрд░рд╛рдВрд╕рдкреЛрд░реНрдЯ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рд╕реЙрдХреЗрдЯ (рдпрд╛ рд╕рдорд╛рди рдСрдмреНрдЬреЗрдХреНрдЯ) рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рджреВрд░рд╕реНрде рд╣реЛрд╕реНрдЯ рдХреЗ рд╕рд╛рде рд╕рд░реНрд╡рд░ рдпрд╛ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдкрд╛рд╕рд╡рд░реНрдб рдпрд╛ рдирд┐рдЬреА рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рд░реНрд╡рд░ рдХреБрдВрдЬреА рдкрд░ред
рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЙрджрд╛рд╣рд░рдгред рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рдиреАрдЪреЗ рд╣реЛрдВрдЧреАред
import paramiko host = '192.168.0.8' user = 'login' secret = 'password' port = 22 client = paramiko.SSHClient() client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) client.connect(hostname=host, username=user, password=secret, port=port) stdin, stdout, stderr = client.exec_command('ls -l') data = stdout.read() + stderr.read() client.close()
рдЖрдк рдХрд┐рд╕реА рднреА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рддрд░реАрдХреЗ рд╕реЗ рджреВрд░рд╕реНрде рд╕рд░реНрд╡рд░ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рд╕реАрдзреЗ рдХреЛрдб рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВ, рдЗрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди, рдбреЗрдЯрд╛рдмреЗрд╕ рдЖрджрд┐ рдореЗрдВ рдбрд╛рд▓реЗрдВред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЕрдЧрд░ рдХрдИ рдореЗрдЬрдмрд╛рди рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЙрдирдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реВрдк рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдФрд░ рджреВрд░рд╕реНрде рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рд╡рд░реНрдЧ SSHClient рд╣реИред рд╡рд╣ рд╣рдореЗрдВ рдПрдХ "рд╕рддреНрд░" рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╣рдо рдЖрдЧреЗ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдХреНрд▓рд╛рдЗрдВрдЯ рдореЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯред Set_missing_host_key_policy (paramiko.AutoAddPolicy ()) рд╣рдо рдЬреНрдЮрд╛рдд рд╣реЛрд╕реНрдЯ рдХреА рд╕реВрдЪреА рдореЗрдВ рд╕рд░реНрд╡рд░ рдХреБрдВрдЬреА рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ - .ssh / рдЬреНрдЮрд╛рдд_рд╣реЛрд╕реНрдЯ рдлрд╝рд╛рдЗрд▓ред рдпрджрд┐, рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╕рдордп, рдПрдХ рдХреБрдВрдЬреА рдЗрд╕рдореЗрдВ рдирд╣реАрдВ рдорд┐рд▓рддреА рд╣реИ, рддреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдХреБрдВрдЬреА "рдкреАрдЯрд╛" рдЬрд╛рддреА рд╣реИ рдФрд░ рдПрдХ SSHException рдЙрдард╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, client.connect () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдЖрдк рд▓реЙрдЧрд┐рди-рдкрд╛рд╕рд╡рд░реНрдб рдФрд░ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рд╕рдВрдпреЛрдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓реЙрдЧ рдЗрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╕рдордп, рдЖрдк рд╣реЛрд╕реНрдЯ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо, рдкрд╛рд╕рд╡рд░реНрдб, рдкреЛрд░реНрдЯ, рдХреБрдВрдЬреА рдФрд░ рдЕрдиреНрдп рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╕реНрдЯреНрд░рд┐рдВрдЧ client.exec_command ('ls -l') - рд░рд┐рдореЛрдЯ рд╕рд░реНрд╡рд░ рдкрд░ рдПрдХ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИред рдкреНрд░реЛрдЧреНрд░рд╛рдо I / O рдзрд╛рд░рд╛рдПрдВ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЖрдХрд╛рд░ рдХреА рд╡рд╕реНрддреБрдУрдВ рдореЗрдВ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддреА рд╣реИрдВ - рд╕реНрдЯрдбрд┐рди, рд╕реНрдЯрдбрдЖрдЙрдЯ, рд╕реНрдЯреЗрдбрд░ред
рд╢рд╛рдпрдж рдореБрдЭреЗ рдпрд╣ рд╕рд╣реА рдирд╣реАрдВ рд▓рдЧрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╕рдорд░реНрдкрд┐рдд рд╕рд░реНрд╡рд░ рдкрд░ рдореВрд▓ рдЕрдзрд┐рдХрд╛рд░ рдирд╣реАрдВ рдорд┐рд▓реЗред рдореИрдВ рдЖрднрд╛рд░реА рд░рд╣реВрдВрдЧрд╛ рдпрджрд┐ рд╡реЗ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИред рд╕реБрдкрд░рд╕реБрд╕рд░ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдпрд╣ рдХрд┐рдпрд╛:
stdin, stdout, stderr = ssh.exec_command('sudo -S rm *') stdin.write('password' + '\n') stdin.flush()
UPD: рдЗрди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЪреИрдирд▓ рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ
рд╕реБрдЭрд╛рдП рдЧрдП рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ
meph1st0 import paramiko client = paramiko.SSHClient() client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) client.connect(...) channel = lient.get_transport().open_session() channel.get_pty() channel.settimeout(5) channel.exec_command('sudo ls') channel.send(password+'\n') print channel.recv(1024) channel.close() client.close()
рдЖрдк sftp рдкрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреНрд░рд╛рдВрд╕рдкреЛрд░реНрдЯ рдХреНрд▓рд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдбрд╛рдпрд░реЗрдХреНрдЯ рдлрд╛рдЗрд▓ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХреЗ рд▓рд┐рдП, рдкреБрдЯ рдФрд░ рдЧреЗрдЯ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
host = "example.com" port = 22 transport = paramiko.Transport((host, port)) transport.connect(username='login', password='password') sftp = paramiko.SFTPClient.from_transport(transport) remotepath = '/path/to/remote/file.py' localpath = '/path/to/local/file.py' sftp.get(remotepath, localpath) sftp.put(localpath, remotepath) sftp.close() transport.close()
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рд╕рдм рдХреБрдЫред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдФрд░ рдкреНрд░рд▓реЗрдЦрди -
http://www.lag.net/paramiko/рдпреБрдкреАрдбреАред рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдиреЗ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдХрд┐ рдХрдИ рдЕрдиреНрдп рдЙрдкрдХрд░рдг
рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕ рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ
рдХреЛ рд╣рд▓
рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
ssh рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдКрдкрд░ рд╕реЗ: рдХрдкрдбрд╝реЗ, рдорд╣рд╛рд░рд╛рдЬ, рдХрдардкреБрддрд▓реА, libbsh2 (pylibbsh2), рдорд╛рдгрд┐рдХ рдореЗрдВ рдПрдХреНрд╕рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдиреЗрдЯ-рдПрд╕рд╢-рдЯреЗрд▓рдиреЗрдЯред рд╕рднреА рдЯрд┐рдкреНрдкрдгреАрдХрд╛рд░реЛрдВ рдХреЛ рдзрдиреНрдпрд╡рд╛рджред