首页 > 代码库 > python - 常用模块 - paramiko

python - 常用模块 - paramiko

paramiko模块提供了ssh及sft进行远程登录服务器执行命令和上传下载文件的功能。这是一个第三方的软件包,使用之前需要安装。

1、安装paramiko

pip3 install paramiko

2、paramiko使用:

  在使用paramiko之前需要先导入该模块。

 (1)paramiko基于密码连接服务器

 1 #!/usr/bin/env python
 2 # -*- coding: utf-8 -*-
 3 
 4 ‘‘‘基于用户名密码验证的连接‘‘‘
 5 import paramiko
 6 
 7 #创建SSH对象
 8 ssh = paramiko.SSHClient()
 9 
10 #允许连接不在know_hosts文件中的主机(默认不在know_Hosts中的主机连接时,服务器有个yes确定,这里用这个就是应对点击yes)
11 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
12 
13 #连接服务器
14 ssh.connect(hostname=115.159.213.54, port=22, username=test, password=123456)
15 
16 while True:
17     cmd = input(>>:).strip()
18     if not cmd: continue
19     if cmd == q:break
20     #执行命令
21     stdin, stdout, stderr = ssh.exec_command(cmd)
22 
23     #获取命令结果
24     result = list(filter(lambda x:x is not None,[stdout.read(),stderr.read()]))[0].decode(utf8)
25     if not result:
26         print(stderr.read().decode(utf8))
27     else:
28         print(result)
29 
30 #关闭连接
31 ssh.close()

 (2)paramiko基于密码的ftp

 1 #!/usr/bin/env python
 2 # -*- coding: utf-8 -*-
 3 
 4 import paramiko
 5 
 6 transport = paramiko.Transport((115.159.213.54, 22))
 7 transport.connect(username=test, password=123456)
 8 
 9 sftp = paramiko.SFTPClient.from_transport(transport)
10 
11 #将local.py上传到服务器/home/test/test.py
12 sftp.put(local.py, /home/test/test.py)
13 
14 #将remote_path.py 下载到本地local_path.py
15 sftp.get(remote_path.py, local_path.py)
16 
17 transport.close()

  (3)paramiko基于key文件连接服务器

 1 #!/usr/bin/env python
 2 # -*- coding: utf-8 -*-
 3 
 4 import paramiko
 5 
 6 private_key = paramiko.RSAKey.from_private_key_file(/home/auto/.shh/id_rsa)
 7 
 8 #创建SSH对象
 9 ssh = paramiko.SSHClient()
10 
11 #允许连接不在know_hosts文件中的主机(第一次连接时存在的问题)
12 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
13 
14 #连接服务器
15 ssh.connect(hostname=115.159.213.54, port=22, username=test, key=private_key)
16 
17 #执行命令
18 stdin, stdout, stderr = ssh.exec_command(df)
19 
20 #获取执行结果
21 result = filter(lambda x: x is not None,[stdout.read(),stderr.read()]).decode(utf8)
22 if not result:
23     print(stderr.read().decode(utf8))
24 else:
25     print(result)
26 
27 ssh.close()

 

python - 常用模块 - paramiko