如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
Fake-switches 是一个可插拔的交换机/路由器命令行模拟器,旨在无需实验室设备即可对网络设备进行集成测试。它帮助测试与设备的通信及其所有层级,以实现更健壮的高层测试。由于主要供其他系统而非人类使用,对不完整命令的错误处理和防故障设计已大部分省略,仅显示相关错误。
该库可轻松扩展,以响应模拟交换机配置的变化并控制实际工具集,使环境表现得像由交换机驱动的真实环境。例如,可挂钩到 VLAN 创建过程并使用 vconfig 在机器上创建实际 VLAN 以进行网络测试。
注意:此库不受任何厂商支持,是通过***网络设备构建的。
SwitchConfiguration 类实现自定义功能,响应配置变化命令支持是根据测试需求添加的。有关可用命令及其支持行为,请参见各模型的测试部分:
| 模型 | 协议 | 测试位置 |
|---|---|---|
| Cisco | SSH 和 Telnet | tests/cisco/test_cisco_switch_protocol.py |
| Brocade | SSH | tests/brocade/test_brocade_switch_protocol.py |
| Juniper | Netconf over SSH | tests/juniper/juniper_base_protocol_test.py |
| Dell | SSH 和 Telnet | tests/dell/ |
基本运行
shell$ docker run -P -d internap/fake-switches $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6eec86849561 internap/fake-switches "/bin/sh -c 'fake-swi" 35 seconds ago Up 13 seconds 0.0.0.0:32776->22/tcp boring_thompson
连接到模拟交换机
shell$ ssh 127.0.0.1 -p 32776 -l root root@127.0.0.1's password: # 输入密码 root my_switch>enable Password: # 按 <回车> my_switch#show run Building configuration... Current configuration : 164 bytes version 12.1 ! hostname my_switch ! ! vlan 1 ! interface FastEthernet0/1 ! interface FastEthernet0/2 ! interface FastEthernet0/3 ! interface FastEthernet0/4 ! end my_switch#
使用自定义参数启动
shell$ docker run -P -d -e SWITCH_MODEL="another_model" internap/fake-switches
| 参数名 | 默认值 |
|---|---|
| SWITCH_MODEL | cisco_generic |
| SWITCH_HOSTNAME | switch |
| SWITCH_USERNAME | root |
| SWITCH_PASSWORD | root |
| LISTEN_HOST | 0.0.0.0 |
| LISTEN_PORT | 22 |
shell$ docker build -t fake-switches . $ docker run -P -d fake-switches
可扩展 SwitchConfiguration 类并提供带有自定义类的对象工厂,以响应资源变化。例如:
pythonfrom twisted.internet import reactor from fake_switches.switch_configuration import SwitchConfiguration, Port from fake_switches.transports.ssh_service import SwitchSshService from fake_switches.cisco.cisco_core import CiscoSwitchCore class MySwitchConfiguration(SwitchConfiguration): def __init__(self, *args, **kwargs): super(MySwitchConfiguration, self).__init__(objects_overrides={"Port": MyPort}, *args, **kwargs) class MyPort(Port): def __init__(self, name): self._access_vlan = None super(MyPort, self).__init__(name) @property def access_vlan(self): return self._access_vlan @access_vlan.setter def access_vlan(self, value): if self._access_vlan != value: self._access_vlan = value print "This could add vlan to eth0" # 可在此处添加实际VLAN创建逻辑 if __name__ == '__main__': ssh_service = SwitchSshService( ip="127.0.0.1", ssh_port=11001, switch_core=CiscoSwitchCore(MySwitchConfiguration("127.0.0.1", "my_switch", ports=[MyPort("FastEthernet0/1")]))) ssh_service.hook_to_reactor(reactor) reactor.run()
连接到交换机并执行以下命令时,程序将输出 "This could add vlan to eth0":
ssh root@127.0.0.1 -p 11001 password : root > enable password: # configure terminal # vlan 1000 # interface FastEthernet0/1 # switchport access vlan 1000
shellpip install fake-switches fake-switches # 在另一个终端中执行: ssh root@127.0.0.1 -p 22222
使用 --help 标志查看帮助信息:
shellfake-switches --help usage: fake-switches [-h] [--model MODEL] [--hostname HOSTNAME] [--username USERNAME] [--password PASSWORD] [--listen-host LISTEN_HOST] [--listen-port LISTEN_PORT] Fake-switch simulator launcher optional arguments: -h, --help show this help message and exit --model MODEL Switch model, allowed values are juniper_qfx_copper_generic, cisco_2960_24TT_L, dell_generic, dell10g_generic, juniper_generic, cisco_2960_48TT_L, cisco_generic, brocade_generic (default: cisco_generic) --hostname HOSTNAME Switch hostname (default: switch) --username USERNAME Switch username (default: root) --password PASSWORD Switch password (default: root) --listen-host LISTEN_HOST Listen host (default: 0.0.0.0) --listen-port LISTEN_PORT Listen port (default: 2222)
目前可用的交换机模型包括:
说明:通用模型(generic)主要用于测试,通常端口数量少于特定型号,但行为一致。一旦核心功能可用,可轻松添加更多特定型号。欢迎提交拉取请求!
欢迎提出问题和提交拉取请求,我们将乐意查看!
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务