从浏览器查看和控制远程终端

termpair的Python项目详细描述


从浏览器中查看和控制远程终端

文档https://cs01.github.io/termpair

源代码https://github.com/cs01/termpair


什么是termpair?

termpair允许开发人员实时共享和控制终端。

用法

启动termpair服务器:

termpair share

然后通过运行以下命令共享您的终端:

termpair share

将向终端打印一个url,例如:

http://localhost:8000/?id=5a32e471453c0bb0c642acbbd6ee58f8

该URL对当前终端共享会话有效。当正在广播的进程结束时,会话结束,通常是通过键入quitexit,或者通过关闭终端窗口。此时,url不再有效。

该会话可以与您想查看的其他人共享,也可以通过浏览器控制您的终端:

传递-a标志以授予终端的浏览器控制权:

termpair share -a

快速启动

快速启动并运行(甚至不必安装到系统!),使用pipx启动服务器:

pipx run termpair serve

然后通过运行

pipx run termpair share -b

-b标志将自动打开浏览器选项卡以查看共享终端。

安装

您可以使用pipx或pip:

pipx install termpair

pip install termpair

API

要查看命令行api引用,请运行:

termpair --help

安全注意事项

不用说,如果你使用不当,这会非常危险。

您应该只广播您想要共享的终端会话,并且只与您信任的人共享URL。打开URL后不需要密码,因此请将其视为敏感信息!

通过使用termpair,任何具有可共享url的人都可以:

  • 查看您的每一次击键(甚至是隐藏在终端中的密码)。
  • 查看终端输出的每个字符。

如果您在公共位置,您肩膀上的某个人可以看到此url,或对其进行拍照,从而使他们能够查看或控制您的termpair会话。

如果您允许其他用户控制您的终端,他们可以:

  • 运行任何命令。
  • 查看/修改/删除任何文件。
  • 重新启动或损坏计算机。
  • 安装病毒。

如果在默认主机上本地运行服务器,则除您之外的任何人都无法访问该服务器。如果您将端口暴露给其他人,则会应用这些安全影响。

系统要求

操作系统:

  • 从浏览器查看/控制:支持所有操作系统。
  • 要运行服务器,termpair serve:在Linux上测试。应该在MacOS上工作。可能在窗户上工作。
  • 要共享终端,termpair share:在Linux上测试。应该在MacOS上工作。可能在窗户上不起作用。

Python:3.6

工作原理

termpair是用python构建的,它利用了异步范式,因此它是高效和快速的。它在后端使用Bocadilloweb框架。

运行服务器

服务器充当unix终端广播和远程查看终端的浏览器之间的路由器。

必须先启动它,然后才能广播终端会话。

$ termpair serve
INFO: Started server process [16592]
INFO: Waiting for application startup.
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)

终端现在可以广播到http://127.0.0.1:8000

广播您的终端

让其他人查看您的终端:

$ termpair share
Sharing all input and output of `bash -l`.

WARNING: Your terminal is viewable but NOT controllable from

localhost:8000/?id=e8a7c806102134022455ddd1841470ed

Type 'exit' to stop sharing.

When you are no longer sharing, you will see the secret string 'dxQDwwWms844' printed.


$ exit
logout
You are no longer broadcasting (dxQDwwWms844)

您的终端现在可以在localhost:8000/?id=e8a7c806102134022455ddd1841470ed查看。

让其他人查看并远程控制您的终端:

$ termpair share -a

...

WARNING: Your terminal is viewable AND controllable from

localhost:8000/?id=e8a7c806102134022455ddd1841470ed
...

运行此命令时,将在本地启动一个新的pty进程,并在默认情况下启动正在使用的shell的新实例,例如bash。但它可以运行任何可执行文件,无论是否交互式,只要您想提供任何参数。

您可以传递--cmd标志来指定在终端会话中共享的进程。

termpair share  # shares current SHELL. Can run anything from within here, like vim.
termpair share --cmd $SHELL  # equivalent to the above command
termpair share --cmd "python"
termpair share --cmd "gdb"
termpair share --cmd "gdb -p 1234"

共享会话在终端共享的进程结束时结束,通常是通过键入exitquit。它也可以通过关闭终端本身来结束。每个会话都被分配一个唯一的termpair会话id,它是一个短字符串。会话ID从不与服务器或任何观看会话的查看器共享。

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

推荐PyPI第三方库


热门话题
java播放流媒体音乐   LWJGL中的java纹理未显示   java从父集合中删除时删除子对象   mysql希望在我的代码中添加验证,如果表不存在,它应该用java创建新表   java我可以关闭客户端的socket而不引起服务器端的EOFEException吗?   java Primefaces对话框框架咆哮和showMessageInDialog不工作   hadoop配置单元无法初始化类java。网网络接口   关键字中缺少oracle11g Java iBatis   java在RESTAPI中创建PUT和POST端点,而不创建GET端点?   java Math abs和ceil输出编译错误   java Tomcat 8.017代md5及其摘要。球棒   java SpringBean配置xml文件在IteliJ Idea中加载   java为什么在使用Powershell指定Xms和Xmx时,它们什么都不做,但通过Netbeans IDE可以正常工作?   java Drools项目构建失败,kjar打包从7.7版开始