从浏览器查看和控制远程终端
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对当前终端共享会话有效。当正在广播的进程结束时,会话结束,通常是通过键入quit
或exit
,或者通过关闭终端窗口。此时,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"
共享会话在终端共享的进程结束时结束,通常是通过键入exit
或quit
。它也可以通过关闭终端本身来结束。每个会话都被分配一个唯一的termpair会话id,它是一个短字符串。会话ID从不与服务器或任何观看会话的查看器共享。