Python笔记之——paramiko (SSHClient)

这篇博客主要介绍了Python中使用paramiko库进行SSH连接的相关操作,包括库的安装和SSHClient的基本使用方法,涉及命令执行和系统交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、paramiko安装:

$apt-get install python-paramiko


2、SSHClient简单调用:

#!/usr/bin/env python
#t_ssh.py
#version: python 2.7.2
#RoT__ 20120111
import paramiko

c = paramiko.SSHClient()
c.load_system_host_keys()
c.set_missing_host_key_policy(paramiko.AutoAddPolicy())
paramiko.util.log_to_file("t_ssh.log")
c.connect('192.168.1.104', 22, 'root', '123456')
stdin, stdout, stderr = c.exec_command('ifconfig')
print stdout.read()
c.close()

3、SSHClient自带的exec_command方法不能返回shell命令的退出值,可以采取继承SSHClient重写exec_command方法来获取shell退出值:
#!/usr/bin/env python
#t_ssh.py
#version: python 2.7.2
#RoT__ 20120111
import paramiko

c = paramiko.SSHClient()
c.load_system_host_keys()
c._policy = paramiko.AutoAddPolicy()
c.connect('192.168.1.104', 22, 'root', '123456')
stdin, stdout, stderr = c.exec_command('ifconfig')
print stdout.read()
c.close()

class TestClient(paramiko.SSHClient):
        def call(self, command, bufsize=-1):
                chan = self._transport.open_session()
                chan.exec_command(command)
                stdin = chan.makefile('wb', bufsize)
                stdout = chan.makefile('rb', bufsize)
                stderr = chan.makefile_stderr('rb', bufsize)
                status = chan.recv_exit_status()
                return stdin, stdout, stderr, status

if __name__ == '__main__':
        tc = TestClient()
        tc.load_system_host_keys()
        tc._policy = paramiko.AutoAddPolicy()
        tc.connect('192.168.1.104', 22, 'root', '123456')
        stdin, stdout, stderr, status = tc.call('ifconfig')
        print stdout.read()
        print status


`paramiko.SSHClient` 是 Paramiko 库提供的一个用于简化 SSH 协议操作的高级接口。它主要用于远程服务器管理和自动化任务,例如通过 SSH 执行命令、传输文件等。下面是关于 `SSHClient` 的详细介绍及其基本用法: ### 初始化 SSH 客户端 创建一个新的 SSH 客户端实例非常简单: ```python import paramiko ssh_client = paramiko.SSHClient() ``` 这一步骤实际上并没有建立任何网络连接;只是初始化了一个客户端对象供后续配置和使用。 ### 设置主机密钥策略 为了能够自动添加未知主机到本地信任列表中(类似 ssh-keygen),我们需要设置 HostKeys 策略,默认情况下会抛出异常如果遇到新的主机指纹: ```python # 自动接受所有新主机并保存至缓存 ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ``` 这里还可以选择其他的策略比如 `WarningPolicy()` 或者手动验证每个主机键。 ### 连接到远程主机 接下来就是最重要的步骤——连接到目标机器: ```python ssh_client.connect( hostname='example.com', # 主机名或IP地址 port=22, # 默认端口是22 username='your_username', password='your_password' ) ``` 当然也可以利用私钥来进行认证而不是密码: ```python private_key_path = '/path/to/private/key' key = paramiko.RSAKey.from_private_key_file(private_key_path) ssh_client.connect( hostname='example.com', port=22, username='your_username', pkey=key ) ``` ### 发送指令及获取结果 一旦成功建立了连接,就可以开始发送命令并在程序内部捕获输出: ```python stdin, stdout, stderr = ssh_client.exec_command('ls -l') output = stdout.read().decode() print(output) # 显示命令返回的结果 ``` 此外还有专门针对 SFTP 文件系统的 API 可以调用来上传下载文件等内容。 ### 断开连接 最后别忘了断开与远端服务之间的链接以免占用资源: ```python ssh_client.close() ``` 总结来说,`paramiko.SSHClient` 提供了一系列强大功能帮助你在 Python 中便捷地完成基于 SSH 操作的各种需求。无论是批量部署应用还是定期检查系统状态都非常实用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值