Python使用paramiko库实现SSH连接Linux并执行命令

1 下载量 145 浏览量 更新于2024-08-29 收藏 99KB PDF 举报
"这篇文档介绍了如何使用Python的paramiko库在Windows环境下通过SSH协议登录Linux系统,并执行相关命令。" 在Python中,paramiko库是一个强大的实现SSHv2协议的库,它允许开发者进行安全的远程通信,包括登录Linux服务器、执行命令、传输文件等。在上述描述和代码片段中,作者展示了如何使用paramiko库登录Linux服务器并执行一系列命令。 首先,我们需要导入paramiko库,然后创建一个SSHClient实例。为了简化主机密钥验证过程,设置`set_missing_host_key_policy`为`AutoAddPolicy`,这意味着如果遇到新的主机,paramiko将自动添加其主机密钥到本地存储,无需手动确认。 ```python import paramiko ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ``` 接着,使用`connect()`方法连接到Linux服务器,需要提供服务器的IP地址、用户名和密码。 ```python ssh.connect('10.104.6.8', username='xiaopeng', password='******') ``` 一旦连接建立,我们可以通过`exec_command()`方法执行Linux命令。例如,执行`cd`命令改变当前目录,或者`ls`命令列出目录内容。 ```python cmd = 'cd' # 进入用户目录home stdin, stdout, stderr = ssh.exec_command(cmd) cmd = 'ls > test' # 管道,ls命令的输出重定向到文件test stdin, stdout, stderr = ssh.exec_command(cmd) cmd = 'cat test' # 显示文件test的内容 stdin, stdout, stderr = ssh.exec_command(cmd) ``` 注意,`exec_command()`每次执行命令都是在一个单独的会话中,因此不会改变默认的工作目录。如果需要改变工作目录并确认,可以执行如`cd /var; pwd`这样的复合命令。 最后,通过`readlines()`方法读取命令的输出结果,并打印出来。 ```python print(stdout.readlines()) ``` 这段代码演示了基本的SSH连接和命令执行流程,但实际应用中可能还需要处理更多细节,如错误处理、命令执行的异步处理、文件传输等。paramiko库提供了丰富的API来支持这些功能,是Python进行SSH操作的重要工具。 此外,如果你需要在多个命令之间保持上下文(例如,改变目录后继续在同一目录下执行其他命令),可以使用`invoke_shell()`方法开启一个交互式的shell会话,这将保留命令之间的状态。不过,这种方式通常需要更复杂的输入/输出管理和错误处理。 paramiko库为Python开发者提供了便利的SSH通信能力,使得在不同操作系统之间进行远程操作变得简单而高效。在学习和使用paramiko时,确保了解其核心类和方法,以及如何处理可能出现的安全性和网络问题。