This article mainly introduces python's paramiko module to implement remote control and transmission examples. It is of great practical value. Friends in need can refer to it
This article introduces python's paramiko module to implement remote control and transmission examples. , share with everyone, the details are as follows:
1 Installation
sudo pip install paramiko
2 ssh remote control
#LINUX下执行shell ssh username@ip #输入密码后就可以对远程机器进行操作 ssh username@ip command #输入密码后远程机器就执行command
After ssh is running, if you want to exit, you can kill the ssh process.
3 paramiko implements the ssh
import paramiko hostname = '10.1.111.111' username = 'root' password = '111111' port = 22 #整数不是字符串 paramiko.util.log_to_file('paramiko.log') ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) #允许连接不在know_hosts文件中的主机 ssh.connect(hostname=hostname,port=port,username=username,password=password) stdin, stdout, stderr = ssh.exec_command("ls") #远程执行shell命令 print(stdout.readlines()) #输出回显结果 ssh.close()
exec_command command, separated by a semicolon; means executing two commands one after another; multiple parameters can be passed in ; exec_command is a single session. After the execution is completed, it will return to the default directory when logging in, as follows:
a='~/Videos' b='aaa' ssh.exec_command('cd %s;mkdir %s'%(a,b)) #aaa在a目录下 ssh.exec_command('mkdir aaa') #aaa在缺省目录下
If there is interaction when executing the command remotely, you can This is done using stdin.write("").
Note:
(1) Add -S after sudo to receive the password from stdin;
(2) stdin.write('password\n') finally Add \n as the end of the command, otherwise the server will keep waiting;
(3) flush() any buffer you're writing to )
stdin, stdout, stderr = ssh.exec_command('sudo -S ls') stdin.write('password\n') stdin.flush()
You can use multiple processes or threads to execute commands in batches:
import paramiko import threading def ssh_cmd(ip,port,username,passwd,cmd): ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect(ip,port,username,passwd) for m in cmd: stdin, stdout, stderr = ssh.exec_command(m) print(stdout.readlines()) ssh.close() if __name__=='__main__': cmd = ['ls','ifconfig'] a=threading.Thread(target=ssh_cmd,args=(ip,port,username,passwd,cmd)) a.start() a.join()
4 Remote file transfer
scpCopy from local server to remote server
scp local_file remote_username@remote_ip:remote_file
If the user name is specified, the user password needs to be entered after the command is executed; if the user name is not specified, after the command is executed You need to enter the user name and password; copy files from a remote location to the local
scp remote_username@remote_ip:remote_file local_file
5 Paramiko implements remote file transfer
Create a new SFTPClient object, which The object reuses the previous SSH connection, so when we use sftp to transfer files, we do not need to authenticate the user again. To implement file
upload:
sftp = paramiko.SFTPClient.from_transport(ssh.get_transport()) #sftp = ssh.open_sftp() #两者选其一即可 sftp.put('bbb.c','aaa.c') #文件上传并重命名 sftp.close()
or to implement file upload and download as follows:
import paramiko t=paramiko.Transport((hostname,port)) t.connect(username=username,password=password) sftp = paramiko.SFTPClient.from_transport(t) sftp.put('bbb.c','aaa.c') #文件上传并重命名 sftp.get('m.py', 'mm.py')#文件下载并重命名 t.close()
Official Document
The above is the detailed content of Examples of remote control and transmission using paramiko module in python. For more information, please follow other related articles on the PHP Chinese website!