golang处理交互式应答

文章展示了如何使用Go语言的goexpect库自动化执行FTP命令,包括登录、下载文件和退出。同时,提到了Go模块的基础知识,如`gomodinit`,`goget`的不同选项以及如何设置GOPROXY以优化包下载。作者还分享了自己的Golang环境配置,包括GOPATH、GOMODCACHE和GOPROXY的设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ftp示例

package main

import (
	"flag"
	"fmt"
	"log"
	"time"

	expect "github.com/google/goexpect"
	"github.com/google/goterm/term"
)

const (
	timeout = 10 * time.Minute
)

var (
	addr = flag.String("address", "", "address of telnet server")
	user = flag.String("user", "", "username to use")
	pass = flag.String("pass", "", "password to use")
)

func main() {
	flag.Parse()
	fmt.Println(term.Bluef("Ftp 1 example"))

	e, _, err := expect.Spawn(fmt.Sprintf("ftp %s", *addr), -1)
	if err != nil {
		log.Fatal(err)
	}
	defer e.Close()

	e.ExpectBatch([]expect.Batcher{
		&expect.BExp{R: "username:"},
		&expect.BSnd{S: *user + "\n"},
		&expect.BExp{R: "password:"},
		&expect.BSnd{S: *pass + "\n"},
		&expect.BExp{R: "ftp>"},
		&expect.BSnd{S: "bin\n"},
		&expect.BExp{R: "ftp>"},
		&expect.BSnd{S: "prompt\n"},
		&expect.BExp{R: "ftp>"},
		&expect.BSnd{S: "mget *\n"},
		&expect.BExp{R: "ftp>"},
		&expect.BSnd{S: "bye\n"},
	}, timeout)

	fmt.Println(term.Greenf("All done"))
}

go mod 基础知识

go mod init gitee.com/wangwei830/test  #初始化
go get -d github.com/example/b         #下载更新指定库,只跟新go.mod中的依赖,轻量级
go get -u github.com/example/b         #下载更新指定库与依赖它的库,全量
go mod download                        #下载go.mod文件中的依赖连库
go mod tidy                            #整理并跟新go.mod依赖信息

go env set GOPROXY=https://mirrors.aliyun.com/goproxy,direct #阿里云
go env set GOPROXY=https://goproxy.cn,direct                 #七牛云
go env set GOPROXY=https://goproxy.io,direct                 #全球代理

我的golang环境

重点:

set GOPATH=D:\gopath1.18
set GOMODCACHE=D:\gopath1.18\pkg\mod
set GOPROXY=https://goproxy.cn,direct
#set GOHOSTOS="linux"
set GOHOSTARCH=amd64
set GOHOSTOS=windows

全貌:

D:\gopath1.18\src\testgo>go env
set GO111MODULE=on
set GOARCH=amd64
set GOBIN=
set GOCACHE=C:\Users\Lenovo\AppData\Local\go-build
set GOENV=C:\Users\Lenovo\AppData\Roaming\go\env
set GOEXE=.exe
set GOEXPERIMENT=
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOINSECURE=
set GOMODCACHE=D:\gopath1.18\pkg\mod
set GONOPROXY=
set GONOSUMDB=
set GOOS=windows
set GOPATH=D:\gopath1.18
set GOPRIVATE=
set GOPROXY=https://goproxy.cn,direct
set GOROOT=D:\go1.18
set GOSUMDB=sum.golang.org
set GOTMPDIR=
set GOTOOLDIR=D:\go1.18\pkg\tool\windows_amd64
set GOVCS=
set GOVERSION=go1.18.2
set GCCGO=gccgo
set GOAMD64=v1
set AR=ar
set CC=gcc
set CXX=g++
set CGO_ENABLED=1
set GOMOD=D:\gopath1.18\src\testgo\go.mod
set GOWORK=
set CGO_CFLAGS=-g -O2
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-g -O2
set CGO_FFLAGS=-g -O2
set CGO_LDFLAGS=-g -O2
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m64 -mthreads -fmessage-length=0 -fdebug-prefix-map=C:\Users\Lenovo\AppData\Local\Temp\go-build1100672428=/tmp/go-build -gno-record-gcc-switches

D:\gopath1.18\src\testgo>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值