给sshw增加scp能力

背景

运维侧的工作中,非常频繁地使用 terminal,经常需要往服务器上拷贝文件,或者把服务器上文件拿到本地。

以往是直接使用 ssh user@xx.xx.xx.xx 的方式登录机器终端,但记住 ip 是不容易的,因此使用了 ssh config,文件大致是这样:

1
2
3
4
5
6
7
8
Host rebig
HostName xx.xx.xx.xx
User root
Port 8522
Host big
HostName xxx.xx.x.xx
ProxyCommand nc -X 5 -x 127.0.0.1:1086 %h %p
User root

一开始还挺好,但随着管理的机器越来越多,这种方法也很难搞,因为记不住名字!!

sshw

经过调研,发现了 sshw ,国内一哥们儿发起的,主要的能力是:

  • 自动输入密码
  • ssh 跳板
  • 机器分组
  • 机器选择
  • 连接后执行命令

都是非常实用的能力,用着非常舒服。

需求

日常登录服务器没啥问题,但当我想要使用 scp 进行文件拷贝的时候,还是需要去复制地址和密码,用得少还能接受,但最近因为一些工作,需要经常使用 scp,老的方式就有点不太好接受了。

因此,决定给 sshw 增加子命令 scp

设计

  • 需要保证和 sshw 很好地融合,不会显得很突兀
  • sshw 的跳板机制非常棒,需要用上
  • sshw 的节点选择非常友好,需要用上

实操

代码的实现可以看 https://github.com/iamlongalong/sshw

展示一波

demo of sshw scp

计划

目前,这个 scp 仅实现了最简单的 拷贝文件,但工作中,常有需要拷贝目录的情况,因此希望增加目录拷贝能力。

另外,一些大文件的拷贝过程比较慢,如果没有进度条的话……就等着抓狂吧😖……,因此希望增加拷贝的进度条。

  • 增加拷贝进度条 ✅ 2022-11-08
  • 增加目录拷贝 (再看吧,需求多了再弄)

ps

过程中有几个有意思的收获:


A man’s growth is seen in the successive choirs of his friends
Ralph Waldo Emerson