模拟SSH服务器
项目描述
模拟SSH服务器
你...
-
有一个测试需要SSH连接到服务器,但不想为测试设置一个服务器吗?
-
认为monkeypatching听起来并不像听起来那么好吗?
-
想要开发一个应用程序并需要一个返回预定义结果的模拟服务器?
这个包是为你准备的!
安装
pip install fake-ssh
使用
阻塞服务器
阻塞服务器通常用于开发目的。
只需编写自己的server.py
文件
from typing import Optional
from fake_ssh import Server
def handler(command: str) -> Optional[str]:
if command.startswith("ls"):
return "file1\nfile2\n"
elif command.startswith("echo"):
return command[4:].strip() + "\n"
if __name__ == "__main__":
Server(command_handler=handler, port=5050).run_blocking()
然后运行它
$ python3 server.py
在另一个终端中运行
$ ssh root@127.0.0.1 -p 5050 echo 42
42
$ ssh root@127.0.0.1 -p 5050 ls
file1
file2
(如果您被提示输入密码,可以留空)
注意您需要指定一个非标准端口(5050)。使用标准端口(22)需要root权限,可能不安全。
非阻塞服务器
非阻塞服务器通常用于测试。
此服务器在线程中运行,允许您并行运行一些测试。
import paramiko
import pytest
from fake_ssh import Server
def handler(command):
if command == "ls":
return "file1\nfile2\n"
@pytest.fixture
def server():
with Server(command_handler=handler) as server:
yield server
def my_ls(host, port):
c = paramiko.SSHClient()
c.set_missing_host_key_policy(paramiko.AutoAddPolicy())
c.connect(hostname=host,
port=port,
username="root",
password="",
allow_agent=False,
look_for_keys=False)
return c.exec_command("ls")[1].read().decode().splitlines()
def test_ls(server):
assert my_ls(server.host, server.port) == ["file1", "file2"]
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源分发
fake-ssh-0.1.0a5.tar.gz (7.7 kB 查看哈希值)
构建分发
fake_ssh-0.1.0a5-py3-none-any.whl (8.3 kB 查看哈希值)