Paramiko
是一个Python实施SSHv2
的协议,提供客户端和服务器的功能。虽然它利用一个Python C扩展低级别加密的paramiko本身就是围绕SSH联网概念的纯Python接口。
Paramiko官网:http://www.paramiko.org/
pip3 install paramiko
安装之后进入python解释器导入模块,如果导入成功则安装成功,否则安装失败.
C:\Users\Administrator>python
Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 25 2016, 22:18:55) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import paramiko
# 导入paramiko模块
>>> import paramiko
# 创建SSHClient对象
>>> ssh = paramiko.SSHClient()
# 如果是一个新主机连接,会出现yes/no,AutoAddPolicy自动填写yes的
>>> ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
>>> ssh.connect(hostname='192.168.56.100', port=22, username='root', password='123456')
# 执行命令
>>> stdin, stdout, stderr = ssh.exec_command('df -h')
# 获取正确的输出
>>> result = stdout.read()
# 关闭连接
>>> ssh.close()
# 获取到的值
>>> result
b'Filesystem Size Used Avail Use% Mounted on\n/dev/sda3 48G 3.3G 45G 7% /\ndevtmpfs 984M 0 984M 0% /dev\ntmpfs 993M 0 993M 0% /dev/shm\ntmpfs 993M 8.9M 984M 1% /run\ntmpfs 993M 0 993M 0% /sys/fs/cgroup\n/dev/sda1 197M 137M 60M 70% /boot\ntmpfs 199M 0 199M 0% /run/user/0\n'
在使用密钥的方面连接之前我们需要先做ssh-key
认证,步骤如下:
[root@linux-node1 ~]# ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ''
[root@linux-node1 ~]# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
[root@linux-node1 ~]# chmod 600 ~/.ssh/authorized_keys
然后下载/root/.ssh/id_rsa
下载下来,复制到E:\python-intensive-training\
目录系,下面是在windows
下使用paramiko
连接脚本如下
#!/use/bin/env python
# _*_ coding: utf-8 _*_
import paramiko
# 指定密钥的文件
private_key = paramiko.RSAKey.from_private_key_file('E:\python-intensive-training\id_rsa')
# 创建SSH对象
ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机,要不然一台新机器去连接它的时候会让你输入yes/no
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
ssh.connect(hostname='192.168.56.100', port=22, username='root', pkey=private_key)
# 执行命令
stdin, stdout, stderr = ssh.exec_command('df -h')
"""
stdin:标准输入
stdout:标准输出
stderr:错误输出
"""
# 获取命令执行的正确结果
result = stdout.read()
# 关闭连接
ssh.close()
# 输出执行结果
print(str(result, encoding='utf-8'))
#!/usr/bin/python
import paramiko
t = paramiko.Transport(('192.168.56.100', 22))
t.connect(username="root", password="123456")
sftp = paramiko.SFTPClient.from_transport(t)
# 远程目录
remotepath = '/tmp/id_rsa'
# 本地文件
localpath = 'id_rsa'
# 上传文件
sftp.put(localpath, remotepath)
# 下载文件
# sftp.get(remotepath, localpath)
# 关闭连接
t.close()