带有铃铛和口哨的可导入cli passthrough。

CLI-passthrough的Python项目详细描述


自述文件

此项目在终端中提供一个入口点cli-passthrough,该入口点接受任意数量的参数,并作为自己的命令运行这些参数除少数特殊情况外,这将向终端输出命令的确切内容,包括使用转义序列进行的任何格式化组合的stdout和stderr都记录在logs/history.log中,并保留顺序,stderr本身记录在/logs/stderr.log。这些日志文件是实时写入的终端的输出也是实时的

这个项目的动机是在另一个需要通过cli使用的应用程序上创建一个包装器。我还想使用CLI中的包装器我想查看我正在实时调用的程序的输出,以相同的格式,并记录所有内容。换言之,我想要以下内容:

  1. 任何命令:运行几乎所有给它的命令。
  2. 灵活的日志记录:独立地捕获STDUT和STDER,以实现灵活的日志记录。
  3. 顺序保持:保持stdout和stderr的顺序
  4. 实时输出:实时输出到屏幕,即不等待命令在转储到屏幕前退出。
  5. 退出状态:捕获退出代码< /LI>
  6. 保留格式:保留ANSI转义序列,以便大多数内容仍被格式化为不通过此传递运行
123456note
os.systemYNYYYYDoesn't capture output at all
os.popenNNYNNYDeprecated & obsolete
os.exec*YN-NNNReally not the intended use
pexpectYNYYYYBad logging
subprocess.popen + threadsYYYNYY/NThreads just enable separate logging, not realtime output
subprocess.popen + ptyYYYYYYWe got it!

已知限制

subprocess.popen+pty的实现目前有以下限制:

  1. 它不会运行every命令,只是大多数命令。ssh不起作用:/

  2. 它假设终端的大小。如果它检测到运行python的终端,并使用相同的维度,那就更好了

这在很大程度上是从this SO post改编(复制)的。我只是把它包装成一个可导入的函数,给它一个cli本身,并做了基本的日志记录来说明这一点。你可以自己复制/粘贴/编辑。

如果您发现更好的请告诉我!我很乐意升级或更换这个。这是我迄今为止发现的最好的

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java ParsePushReceiver参数   java如何从设备读取完整数据?   java将java_设置为home,但忽略错误   java如何从歌曲中对专辑进行排序?   java libnaude+windows 10 x64+Eclipse   java如何将maven目标更改为如图所示的想法中的quickicon?   java swing布局中心面板,可滚动显示多个窗口窗格   使用MOSQUITO代理的mqtt中的java SSL   java如何通过属性值获取XML字符串   java在服务器每次启动时停止GWT编译   java如何让javac搜索类路径的子目录?   可以比较java中的两个不同类吗?   JAVAAndroid活动内部类中的lang.NoClassDefFoundError   java HttpServletRequest获取请求头参数块   C++socket与java客户端的连接   java如何在Apache commons http客户端上使用SSL客户端证书   使用预编译正则表达式模式提高java速度   JavaRhino将两个已编译脚本合并为一个脚本