­

paramiko——一个专门为Linux设计的模块

  • 2019 年 10 月 6 日
  • 筆記

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()