使用golang开发一个sshclient命令

2020/12/0622:41:36使用golang开发一个sshclient命令已关闭评论

1.背景说明

周末的时间学习研究了下golang,以下是以自身的视角了解的一些背景:众所周知,在Linux系统中开发,早期因为系统存储空间比较小,人们为了减少程序的体积,使用了动态链接技术,这样,各个程序所使用的体积相对较小,另一方面也能够方便的进行程序公共库的升级和维护。但是到现代,出现了各种各样的Linux发行版本,各个Linux软件的程序库版本不一致,加上docker等技术的兴起,对于分布式系统软件的上线运维是个灾难。go的出现,静态链接方式似乎弥补了这一缺陷,大量的开发者们开始使用golang作为后端开发语言,一方面可以一次编译,到处运行,另一方面,写一个高性能高并发的程序仅仅只需要几行代码就可以达到目的。

2.开始旅行

接下来我们以一个完整的小demo来进行一次golang的旅行。

首先是安装golang环境,这个比较简单,我们只需要从官网下载其开发包即可,上命令:

wget https://golang.google.cn/dl/go1.15.6.linux-amd64.tar.gz
#将其安装在/usr/local目录下
tar zxf go1.15.6.linux-amd64.tar.gz -C /usr/local

3.设置环境变量

这里我们简单点,将其放在/etc/profile末尾:

#go的安装路径
export GOROOT=/usr/local/go
#项目路径
export GOPATH=/root/code/go
#go二进制所在路径
export PATH=PATH:GOROOT/bin
#设置处理器架构
export GOARCH=amd64
#设置操作系统 类型
export GOOS=linux

至此,我们环境设置完毕,其中比较关键的是我们的项目路径/root/code/go,在其下可以手动再创建一个src目录。

开始安装ssh开发包,如下命令:

go get github.com/melbahja/goph

但是在安装过程中我们会神奇的发现,老是安装不上,因为国家防火墙,你懂的。此时我们可以把开发包直接从github上下载过来,放到/root/code/go/src/github.com/melbahja/goph目录下,下载地址如下:

https://github.com/Scalingo/go-ssh-examples

但是当我们使用库时,可能还提示我们需要安装一些依赖,命令如下:

go get golang.org/x/crypto/ssh

此命令可能也会被墙,建议下载对应的源码包进行安装,地址:
https://github.com/golang/crypto
路径为:/root/code/go/src/golang.org/x/crypto

接着,我们依次执行如下命令:

cd /root/code/go/src/go-ssh-examples
bash init.sh

修改下go-ssh-examples目录下的client.go文件,让其支持传入密码进行执行,代码修改如下:

接下来,重点来了,我们将其编译成静态可执行文件:

CGO_ENABLED=0 GOOS=linux go build -a -ldflags '-extldflags "-static"'  client.go 

执行效果如下:

好了,至此,golang从入门,接下来……你懂的

  • 微信扫码赞助
  • weinxin
  • 支付宝赞助
  • weinxin