繁体   English   中英

在Python的cmd模块中隐藏命令

[英]Hide commands in Python's cmd module

我正在基于Python的cmd模块(实际上是cmd2 ,但是它们非常相似)编写命令行工具。 该工具连接到需要身份验证的REST API。 每个用户都有自己的特权级别(请考虑管理员和普通用户)。

在我的Python代码中,我正在创建一个与API的每个方法相对应的do_ *方法。 这意味着我将得到诸如do_an_admin_commanddo_regular_user_command类的东西,无论用户的特权级别如何,运行该工具的任何人都可以调用它们。

如果用户没有特权,我需要的是一种隐藏Python工具中可用的每个管理命令的方法。 您可以假定该工具在启动时就知道要使用哪些凭据对API进行身份验证,以及该用户是否具有特权。 同样,管理命令是常规命令的超集。

有任何想法吗?

使用子类为您带来好处:

class RegularShell(cmd.Cmd):
    do_search(self, arg):
        ...
    do_retrieve(self, arg):
        ...

class AdminShell(RegularShell):
    do_update(self, arg):
        ...

使用REST API,将特权用户连接到AdminShell,将其他用户连接到RegularShell。

要考虑的另一种选择是使用precmd挂钩查看授权检查。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM