python - 经常使用模块 - paramiko

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

一、安装paramiko服务器

pip3 install paramiko

二、paramiko使用:ssh

  在使用paramiko以前须要先导入该模块。spa

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

 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='192.168.22.132', 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(('192.168.22.132', 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文件链接服务器blog

 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='192.168.22.132', 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()
相关文章
相关标签/搜索