python

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='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文件连接服务器

 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()
原文地址:https://www.cnblogs.com/xtsec/p/6985709.html