paramiko是一个用于做远程控制的模块,使用该模块可以对远程服务器进行命令或文件操作,下面我们就来看看如何去使用paramiko模块吧。
安装模块
pip install paramiko
安装结束之后我们就可以来使用这个模块了
使用模块
import paramiko #连接三要素,主机,用户名,密码 host = '47.95.204.151' username ='root' password ='666666666' ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect(host, 22, username, password) stdin, stdout, stderr = ssh.exec_command('df -hT') print(stdout.read().decode('utf-8')) ssh.close()
可以对文件基本的操作,创建,修改,删除:
t=paramiko.Transport((host,port)) t.connect(username=username,password=password) sftp = paramiko.SFTPClient.from_transport(t) #创建目录 sftp.mkdir("/home/userdir", 0755) #删除目录 sftp.rmdir("/home/userdir") #文件重命名 sftp.rename("/home/test.sh", "/home/testfile.sh") #打印文件信息 print (sftp.stat("/home/testfile.sh")) #打印目录列表 print (sftp.listdir("/home"))
其他方法:
都是用来远程对文件进行操作的。
其中两个方法put和get我们来细看一下。
关于put,它是用来上传文件的,我们可以使用put将我们需要上传的文件,传到服务器中,这样就可以提高很多效率。上传是需要指定上传文件和上传地址。
sftp = paramiko.SFTPClient.from_transport(t) sftp.put('log.log','/tmp/log.log')
同样的,关于get,用来下载文件的方法,我们只需要指明我们需要下载的文件和下载地址就可以了:
sftp = paramiko.SFTPClient.from_transport(t) sftp.get('/tmp/log.log', 'log3.log')
例如,我们现在要上传信息到server:
import paramiko pravie_key_path = '/root/.ssh/id_rsa' key = paramiko.RSAKey.from_private_key_file(pravie_key_path) t = paramiko.Transport(('172.16.0.19', 22)) t.connect(username='root', pkey=key) sftp = paramiko.SFTPClient.from_transport(t) sftp.put('log.log','/tmp/log.log') t.close()
我们现在要下载服务器的log信息:
import paramiko pravie_key_path = '/root/.ssh/id_rsa' key = paramiko.RSAKey.from_private_key_file(pravie_key_path) t = paramiko.Transport(('172.16.0.19', 22)) t.connect(username='root', pkey=key) sftp = paramiko.SFTPClient.from_transport(t) sftp.get('/tmp/log.log', 'log3.log') t.close()
如果我们只想执行一些口令,可以用exec_command方法:
stdin, stdout, stderr = ssh.exec_command("cd /usr/local;mkdir yuqing;ls -ll") print stdout.readlines()
多个操作直接采用分号隔开即可。
最后说一下,任何操作完都要将连接关闭:
ssh.close()