python paramiko库详解
时间: 2023-09-16 20:09:14 浏览: 108
Python Paramiko模块的安装与使用详解
5星 · 资源好评率100%
Paramiko是Python中用于SSH协议的一个库,可以用于远程登录、传输文件等操作。下面是Paramiko库的详解:
1. 安装
使用pip进行安装:
```python
pip install paramiko
```
2. 连接远程服务器
```python
import paramiko
# 创建SSH客户端
ssh = paramiko.SSHClient()
# 自动添加主机密钥
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接远程服务器
ssh.connect('hostname', port=22, username='username', password='password')
# 执行命令
stdin, stdout, stderr = ssh.exec_command('ls')
# 输出命令执行结果
print(stdout.read().decode())
# 关闭连接
ssh.close()
```
3. 传输文件
```python
import paramiko
# 创建SSH客户端
ssh = paramiko.SSHClient()
# 自动添加主机密钥
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接远程服务器
ssh.connect('hostname', port=22, username='username', password='password')
# 创建SFTP客户端
sftp = ssh.open_sftp()
# 上传文件
sftp.put('local_path', 'remote_path')
# 下载文件
sftp.get('remote_path', 'local_path')
# 关闭连接
sftp.close()
ssh.close()
```
4. 高级用法
- 使用密钥登录
```python
import paramiko
# 创建SSH客户端
ssh = paramiko.SSHClient()
# 自动添加主机密钥
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 密钥文件路径
key_path = '/root/.ssh/id_rsa'
# 密钥密码,如果没有设置则为None
key_password = 'password'
# 密钥对象
private_key = paramiko.RSAKey.from_private_key_file(key_path, password=key_password)
# 连接远程服务器
ssh.connect('hostname', port=22, username='username', pkey=private_key)
# 执行命令
stdin, stdout, stderr = ssh.exec_command('ls')
# 输出命令执行结果
print(stdout.read().decode())
# 关闭连接
ssh.close()
```
- 自定义日志
```python
import paramiko
import logging
# 创建SSH客户端
ssh = paramiko.SSHClient()
# 自动添加主机密钥
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 创建日志记录器
logger = logging.getLogger('paramiko')
logger.setLevel(logging.DEBUG)
# 创建日志处理器
handler = logging.StreamHandler()
handler.setLevel(logging.DEBUG)
# 创建日志格式化器
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
# 添加日志处理器
logger.addHandler(handler)
# 连接远程服务器
ssh.connect('hostname', port=22, username='username', password='password')
# 执行命令
stdin, stdout, stderr = ssh.exec_command('ls')
# 输出命令执行结果
print(stdout.read().decode())
# 关闭连接
ssh.close()
```
总之,Paramiko库是Python中一个非常强大的SSH协议库,其功能十分丰富,可以满足大部分远程操作的需求。
阅读全文