golang

使用golang开发一个windows下sshclient.exe

上一篇文章写了如何在Linux下开发一个sshclient命令行,本次我们回到Windows下来,因为golang是跨平台的,所以我们只需要设置下Windows下的环境变量,其它指令可不变。 一、安装golang 下载Windows安装包 原始链接:https://dl.google.com/go/go1.15.6.windows-amd64.msi 如果被墙,相关包我已经上传到附件了。双击安装,过程忽略。 二、设置环境变量 Win10下右键“此电脑”->“属性”->"高级"->"环境变量",直接上图,不解释。 添加了一个GOROOT,为安装包路径,GOPATH为项目路径 三、开始编译 将附件压缩包解压到如下路径,注意路径哦 打开传说中的cmd(Win+R),眼前一片亮眼而令人窒息的黑!! 反手就是一把命令如下: cd /d D:\go\src\go-ssh-examples-master 编译上啊! go build client.go 当前目录下出现一个client.exe,执行: 好了,现在你可以拿去其它Windows平台的CMD下愉快的玩耍了。 可以在脚本刷刷作响~~~ 附件一:go-ssh-examples-master 附件二:自行github下载
阅读全文
golang

当go get 遇上GFW时……

一、问题背景 在使用go的小伙伴肯定会发现,当我们愉快的使用go get命令想下载源码包时,发现一直卡着不动,等了半天后,一句Timeout草草结尾了,法克油? 家人们不要慌,此时goproxy给我们已经铺好了路,啥是goproxy?简而言之呢,就是打着合法牌照旗号来下载编译源码了。这还真不是我闭一只眼瞎说的,有链接为证:https://github.com/goproxy/goproxy.cn/ 原文如下: Is Goproxy China legal in China? Goproxy China is a business-supported project rather than a personal project. And it has been ICP filed in the MIIT of China (ICP license: 沪ICP备11037377号-56), which means it's fully legal in China. 好了,到底是怎么设置后就可以丝滑的下载了呢,人家文章中写得已经很全面了,就知道此刻看文章的你想偷个懒,呐,给你搬过来了 二、设置环境 macOS or Linux Open your terminal and execute $ export GO111MODULE=on $ export GOPROXY=https://goproxy.cn or $ echo "export GO111MODULE=on" >> ~/.profile $ echo "export GOPROXY=https://goproxy.cn" >> ~/.profile $ source ~/.profile done. Windows Open your PowerShell and execute C:\> $env:GO111MODULE = "on" C:\> $env:GOPROXY = "https://goproxy.cn" 我们来下载一个网络库,它并没有可执行文件生成 $ go get github.com/davyxu/cellnet 三、go get 使用时的附加参数 另外为了方便偷懒专业户,我把go get的附加参数列表也搬过来了...
阅读全文
golang

以产品思维来写代码解决实际问题

一、需求背景 晚上下班回到家,家人提了个需求:安装一个别人通过微信发给他的app.apk到手机。心里想,这不直接点安装就完了嘛,结果发现我点击时,提示的是选择对应的应用程序打开,而且这个程序名字变成了app.apk.1,不知各位同学们是否碰到过。 二、开始解决 既然有需求,我们就要解决对不,我们可以下载一些Android管理类软件,然后通过数据线传输到手机,再进行安装,但这样太麻烦。脑海中开始飞速闪过一个解决方案:刚好我的电脑中安装有golang环境,可以利用go写一个简单的http服务器,然后将app放到该目录下,手机通过浏览器进行下载安装。二话不说,现成代码就是一顿copy,总共2行核心代码(已标红): package main import "net/http" func main() { http.Handle("/", http.FileServer(http.Dir("."))) http.ListenAndServe(":8000", nil) } 运行之 go run hello.go 三、访问浏览器下载安装 将app拷贝到代码目录下,浏览器访问之。如图,点击下载app.apk即可: 艾玛,虽然有点粗暴,代码都露出来了,但是问题解决了。
阅读全文
golang

使用golang开发一个windows下sshclient.exe

上一篇文章写了如何在Linux下开发一个sshclient命令行,本次我们回到Windows下来,因为golang是跨平台的,所以我们只需要设置下Windows下的环境变量,其它指令可不变。 一、安装golang 下载Windows安装包 原始链接:https://dl.google.com/go/go1.15.6.windows-amd64.msi 如果被墙,自行解决。双击安装,过程忽略。 二、设置环境变量 Win10下右键“此电脑”->“属性”->"高级"->"环境变量",直接上图,不解释。 添加了一个GOROOT,为安装包路径,GOPATH为项目路径 三、开始编译 将附件压缩包解压到如下路径,注意路径哦 打开传说中的cmd(Win+R),眼前一片亮眼而令人窒息的黑!! 反手就是一把命令如下: cd /d D:\go\src\go-ssh-examples-master 编译上啊! go build client.go 当前目录下出现一个client.exe,执行: 好了,现在你可以拿去其它Windows平台的CMD下愉快的玩耍了。 可以在脚本刷刷作响~~~
阅读全文
其它

使用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从入门,接下来……你懂的
阅读全文