python - 是否可以通过多个 TCP 客户端远程使用 Python 的 cmd 模块?

标签 python python-3.x python-sockets python-cmd

我创建了一个在服务器上运行的 python 脚本,它提供了一个简单的命令行界面来运行自定义配置脚本。我正在使用 cmd 模块来执行此操作,到目前为止它运行良好:

from cmd import Cmd

class MyPrompt(Cmd):

    def do_run1(self, args):
        print("running config1")

    def do_run2(self, args):
        print("running config2")

if __name__ == '__main__':
    prompt = MyPrompt()
    prompt.prompt = '> '
    prompt.cmdloop('Starting prompt...')

我还创建了另一个脚本,它将打开 TCP 服务器并在新线程中监听远程客户端。客户端可以向服务器发送配置命令,服务器将执行它们并发回任何输出。现在的客户端非常基础。它可以发送任何内容,并且无法访问 cmd 模块提供的良好接口(interface)。服务器还负责解析接收到的消息并找出客户端想要运行的命令(通过长 if else 解析器)。

我正在尝试组合这两个脚本,但在找出最佳方法时遇到了很多麻烦。我想允许服务器上的某人在本地使用 cmd lscript,但我也希望 cmd 脚本接受远程客户端并同时允许他们访问 cmd 提示符。另外,我需要一种将本地输入的命令和远程客户端发送的命令添加到队列中的方法,以便一次运行一个配置命令(每个命令需要几分钟的时间运行,并且不能在并行)。

任何人都可以提供一些关于如何扩展 cmd 脚本以支持远程连接的示例或指导吗?我不知道从哪里开始,非常感谢任何帮助!

最佳答案

研究和学习 Ansible 可能会更好。

虽然我没有这方面的经验,但我强烈推荐它,并且它是在 Python 中实现并使用 Python 的。

文档看起来相当不错。

(我不使用它,因为我不需要做这类事情 - 我通常进行应用程序开发)

关于python - 是否可以通过多个 TCP 客户端远程使用 Python 的 cmd 模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46085707/

相关文章:

python - 我在 python 中遇到列表退出错误

Python C-ext 命名空间与常规 python 子模块混合?

python-3.x - 如何在 django rest 框架中使用 coreapi 客户端?

Python 套接字在其他计算机上超时。超时错误 : [WinError 10060]

python - 与 Python2 相比,Python3 中的相同代码速度较慢

python - 字典中前 n 个值(和键)的新字典(Python)

python - 部署到Google云函数: Error message: 'main'

python-3.x - cdk 警告 没有向 'PrivateSubnet1' 处的子网提供 routeTableId

python - Python-除了ctrl-c外,还可以通过键盘输入安全地关闭终端上的套接字连接吗?

python - 在 python 中广播套接字服务器