背景
闲着没事买了个云服务器玩(京东云轻量云主机),Mac本地搞了个java的jar包,想上传到云服务器,通过scp
命令在Mac自带的【终端】上怎么都上传不了,如图。但是通过ssh命令(ssh root@主机IP
)又能登录上远程服务器,说明网络和密码肯定没问题!
没办法,只能换了个方式。通过iTerm2
的 rz
命令。
第一次用iTerm 踩了很多坑,这里总结下经验。
iTerm2 实际上也是一个终端,但是比Mac自带的终端多了很多功能,而且你也可以去定制化这个终端( command+i 命令,能打开它的设计面板),这个终端能对 lrzsz 做很好的支持,Mac自带的终端并不能很好的支持 lrzsz 。所以我们实际上是用到的是 lrzsz。
因此我们需要安装两个软件:iTerm2 + lrzsz
。
步骤
1 安装iTerm2 (在mac自带终端上操作)
brew install --cask iterm2
输入命令会显示如下,没事等几分钟就好了。
用户名某莫某@192 ~ % brew install --cask iterm2
==> Auto-updating Homebrew…
Adjust how often this is run with HOMEBREW_AUTO_UPDATE_SECS or disable with
HOMEBREW_NO_AUTO_UPDATE. Hide these hints with HOMEBREW_NO_ENV_HINTS (seeman brew
).
成功后电脑里会多一个下方的软件。
2 安装lrzsz (在mac自带终端上操作)
yum install -y lrzsz 或者 brew install lrzsz
查看下是否安装成功:
用户某某@LGMacBook-Pro ~ % brew list lrzsz
/opt/homebrew/Cellar/lrzsz/0.12.20_1/bin/lrb
/opt/homebrew/Cellar/lrzsz/0.12.20_1/bin/lrx
/opt/homebrew/Cellar/lrzsz/0.12.20_1/bin/lrz
/opt/homebrew/Cellar/lrzsz/0.12.20_1/bin/lsb
/opt/homebrew/Cellar/lrzsz/0.12.20_1/bin/lsx
/opt/homebrew/Cellar/lrzsz/0.12.20_1/bin/lsz
/opt/homebrew/Cellar/lrzsz/0.12.20_1/bin/rz
/opt/homebrew/Cellar/lrzsz/0.12.20_1/bin/sz
/opt/homebrew/Cellar/lrzsz/0.12.20_1/sbom.spdx.json
/opt/homebrew/Cellar/lrzsz/0.12.20_1/share/man/ (2 files)
3 打开iTerm2终端
直接敲 rz
会报错:
waiting to receive.**B0100000023be50
网上搜了一堆资料,研究了一晚上,发现是需要下载并配置两个脚本:
- iterm2-send-zmodem.sh
- iterm2-recv-zmodem.sh
4 下载 mmastrac(两个sh脚本)
我是通过GitHub下载的
登录GitHub官网,搜索mmastrac,找到后,下载ZIP压缩包到本地
4 移动iterm2-send-zmodem.sh、iterm2-recv-zmodem.sh 两个脚本文件
- 解压iterm2-zmodem-master.zip
- 依次移动到这两个文件到 /usr/local/bin/ 目录下
参考命令(记得改源文件路径):
sudo mv /Users/…/Downloads/iterm2-zmodem-master/iterm2-recv-zmodem.sh /usr/local/bin/
弄好后可以进去到/usr/local/bin/ 目录下检查下:
5 把这两个脚本配置到 iterm2 中
打开iTerm2这个终端软件, 敲命令 cmmand + i
,会打开配置界面:
然后点下面的加号➕添加两行配置:
第一行:
Regular expression: rz waiting to receive.\*\*B0100
Action: Run Silent Coprocess
Parameters: /usr/local/bin/iterm2-send-zmodem.sh
第二行:
Regular expression: \*\*B00000000000000
Action: Run Silent Coprocess
Parameters: /usr/local/bin/iterm2-recv-zmodem.sh
这两行顺序千万别搞反了!!!
不过这里有个BUG一直没解决,就是每次关闭iterm2后这两个配置就没了,就得重新配置下! 有解决方案的小伙伴记得留言分享~
6 修改脚本
配置好后,运行rz命令后发现还是报错!我又研究了很久,吐血了!🩸原来是下载下来的sh脚本没办法直接用。
原因:我们安装的lrzsz的目录路径和两个sh脚本中的路径对不上!
🅰️先查看下lrzsz的安装路径
用户某某@LGMacBook-Pro ~ % brew list lrzsz
/opt/homebrew/Cellar/lrzsz/0.12.20_1/bin/lrb
/opt/homebrew/Cellar/lrzsz/0.12.20_1/bin/lrx
/opt/homebrew/Cellar/lrzsz/0.12.20_1/bin/lrz
/opt/homebrew/Cellar/lrzsz/0.12.20_1/bin/lsb
/opt/homebrew/Cellar/lrzsz/0.12.20_1/bin/lsx
/opt/homebrew/Cellar/lrzsz/0.12.20_1/bin/lsz
/opt/homebrew/Cellar/lrzsz/0.12.20_1/bin/rz
/opt/homebrew/Cellar/lrzsz/0.12.20_1/bin/sz
/opt/homebrew/Cellar/lrzsz/0.12.20_1/sbom.spdx.json
/opt/homebrew/Cellar/lrzsz/0.12.20_1/share/man/ (2 files)
可以看到 rz、sz 的路径都是: /opt/homebrew/Cellar/lrzsz/0.12.20_1/bin/
🅱️再看下sh脚本中的rz路径
因此,我们分别修改iterm2-send-zmodem.sh、iterm2-recv-zmodem.sh 两个脚本中的路径为lrzsz的本地实际安装路径即可。
7 最后,上传
在 iTerm终端 通过ssh命令,连接远程服务器(ssh root@主机IP
),cd 到一个你想把文件上传的目录中,然后rz命令,会自动弹出来让你选择文件,然后选择你想上传的文件,点击【choose】就能成功上传啦。 完事后你可以 ls 验证下。