Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Command line 使用python服务器(TCP sock)和少量脚本创建简单的命令行界面(CLI)_Command Line_Python - Fatal编程技术网

Command line 使用python服务器(TCP sock)和少量脚本创建简单的命令行界面(CLI)

Command line 使用python服务器(TCP sock)和少量脚本创建简单的命令行界面(CLI),command-line,python,Command Line,Python,我有一个Linux机箱,我希望能够远程登录到它(端口77557)并运行一些必需的命令,而不必访问整个Linux机箱。因此,我有一个服务器监听该端口,并在屏幕上回显输入的命令。(目前) Telnet 192.168.1.100 77557 正在尝试192.168.1.100… 已连接到192.168.1.100。 转义字符为“^]”。 hello<br /> You typed: "hello"<br /> 你好 您键入了“你好” 现在: 我想创建很多命令,每个命

我有一个Linux机箱,我希望能够远程登录到它(端口77557)并运行一些必需的命令,而不必访问整个Linux机箱。因此,我有一个服务器监听该端口,并在屏幕上回显输入的命令。(目前)


Telnet 192.168.1.100 77557
正在尝试192.168.1.100…
已连接到192.168.1.100。
转义字符为“^]”。

hello<br />

You typed: "hello"<br />
你好
您键入了“你好”

现在:

我想创建很多命令,每个命令都有一些参数和错误代码。 以前有人这样做过吗? 如果我可以在初始化时让服务器遍历每个目录,那就太好了 并执行init.py文件,依次执行每个命令调用的init.py文件 进入主模板库API(例如RegisterMe()),并在服务器上注册自己作为函数回调。 至少在C/C++中我会这样做

但我想要最好的蟒蛇式方法

/cmd/
/cmd/myreboot/
/cmd/myreboot/ini.py(注意,由于某些原因下划线不显示)
/cmd/mylist/
/cmd/mylist/init.py
... etc

输入:/cmd/myreboot/\uuuu ini\uuuuu.py:
从MyMain命令导入注册表
RegisterMe(name=“reboot”,args=Arglist,usage=“使用此选项重新启动该框”,desc=“blabla”)

因此,重复此操作将创建一个命令列表,当您在telnet会话中输入该命令时,服务器将遍历该列表,匹配该命令并将参数传递给该命令,该命令将执行该任务并将成功或失败打印到stdout


ThxTwisted的web服务器做了一些类似于您希望做的事情。通常使用的方法是让一个可加载的python文件在加载模块的全局命名空间中定义一个具有特定名称的对象。加载模块后,服务器将检查此对象,确保它来自正确的类型(因此具有所需的接口),然后使用它处理请求的URL。在您的情况下,同样的方法可能会非常有效

看到命令名后,立即导入模块(查看内置导入函数的文档了解如何执行),查找“command”的实例,然后使用它解析参数列表,进行处理,并返回结果代码


启动时可能不太需要预处理目录,但如果您喜欢动态加载,当然可以这样做。

我将使用和模块的组合构建此应用。

为什么要编写一个错误的SSH替代品?如果它是一个可以从不安全的端口访问的命令shell,并且允许机器重新启动,那么您正在打开一个巨大的安全漏洞,这个漏洞需要几十年的时间才能保护。您可能会认为只有好人才能访问端口77557,直到某些毒品破坏了您甚至不知道存在的防火墙。端口775577只能在本地主机上访问,并且只有具有适当凭据的web用户才能重新启动机箱。安全风险是可以理解的,没有问题,因为这是NAT后面的一个封闭框,到达该端口的唯一方法是通过ssl登录基于web的配置门户,然后单击“重新启动”,并且当且仅当用户具有正确的凭据时,才会出现“重新启动”按钮并执行请求。cmd2似乎正是我想要的。