Python - SSH
https://www.sharetechnote.com/html/Python_ssh.html
注意:本文档中的Python脚本在Windows 10、Python 3.9.1上运行,脚本连接的SSH服务器运行在两种不同的系统上:一台运行Fedora 33的独立PC和一台运行在同一台PC上的VirtualBox中的Ubuntu 20.04.1上。
安装paramiko
要运行本文档中的示例,您需要安装paramiko包,如下所示:
pip install paramiko
基本连接
文件名: pyTTY.py
```python
import socket
import paramiko
from paramiko import SSHClient
# 创建SSH客户端
pyTTY = SSHClient()
pyTTY.load_system_host_keys()
pyTTY.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接到SSH服务器
pyTTY.connect('192.168.0.51', username='jaeku', password='********')
# 执行命令并打印结果
stdin, stdout, stderr = pyTTY.exec_command('pwd')
print(stdout.readlines())
stdin, stdout, stderr = pyTTY.exec_command('ls')
print(stdout.readlines())
# 关闭所有标准IO
stdin.close()
stdout.close()
stderr.close()
# 关闭客户端
pyTTY.close()
```
结果:
['/home/jaeku\n']
['Desktop\n', 'Documents\n', 'Downloads\n', 'Music\n', 'Pictures\n', 'Public\n', 'Templates\n', 'Videos\n']
注意: 对于IPv6连接,可以使用以下格式设置服务器IP。
```python
pyTTY.connect('2607:fea8:e260:a340:74ad:72ca:da40:815d', username='jaeku', password='********')
```
更改目录的命令
对于大多数命令,只需将命令字符串放在上面示例中所示的位置即可。但是,如果有任何使用更改目录('cd')的命令,则需要将'cd'命令和任何后续命令放在一个单独的命令字符串中,如下所示。
文件名: pyTTY.py
```python
import socket
import paramiko
from paramiko import SSHClient
# 创建SSH客户端
pyTTY = SSHClient()
pyTTY.load_system_host_keys()
pyTTY.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接到SSH服务器
pyTTY.connect('192.168.0.51', username='jaeku', password='********')
# 执行命令并打印结果
stdin, stdout, stderr = pyTTY.exec_command("cd /home/jaeku/Documents && pwd && ls -al")
print(stdout.readlines())
# 关闭所有标准IO
stdin.close()
stdout.close()
stderr.close()
# 关闭客户端
pyTTY.close()
```
结果:
['/home/jaeku/Documents\n', 'total 16\n', 'drwxr-xr-x 2 jaeku jaeku 4096 Dec 19 15:59 .\n', 'drwxr-xr-x 16 jaeku jaeku 4096 Dec 13 02:36 ..\n', '-rw-r--r-- 1 root root 5 Dec 19 15:59 docs.txt\n', '-rw-r--r-- 1 root root 5 Dec 19 15:59 test.txt\n']