加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

第一个golang程序 ( v1.0 v2.0 )

发布时间:2020-12-16 19:02:18 所属栏目:大数据 来源:网络整理
导读:v2.0 =============== package mainpackage main import ( "bufio" "flag" "fmt" "io" "log" "os" "os/exec" "path/filepath" "strings" "time" ) const ( filename = "c:myetcremote.etc" ) func main() { var servicefilepath string var serviceIP st

v2.0

===============

package mainpackage main

import (
"bufio"
"flag"
"fmt"
"io"
"log"
"os"
"os/exec"
"path/filepath"
"strings"
"time"
)
const (
filename = "c:myetcremote.etc"
)
func main() {
var servicefilepath string
var serviceIP string
var passwd string
var serviceusername string
var port string
//参数判断
if len(os.Args) == 1 {
fmt.Printf("usage: %s filename1 filename2 ...n",filepath.Base(os.Args[0]))
return
}
//判断文件是否存在
_,err := os.Stat(filename)
if err != nil {
log.Print("文件不存在!")
return
}
f,err := os.Open(filename) //打开文件
//打开文件出错处理,也可以是 defer f.Close(),这里这样写是可以在里面添加内容
defer func() {
f.Close()
}()
if nil == err {
buff := bufio.NewReader(f) //读入缓存
for {
line,err := buff.ReadString('n') //以'n'为结束符读入一行
if err != nil || io.EOF == err {
break
}
//如果是#开头的则认为是注释符
strings.Trim(line," ")
if ok := strings.Contains(line,"#"); ok {
continue
}
//去回车换行符
//样例 m_ta/m_ta@192.168.224.128:22:/home/m_ta/src
 // splitstrings := strings.Split(strings.Replace(line,"rn","",-1),":")
           //取值写是不是很好,以后再改进 
  // servicefilepath = splitstrings[2]
 // port = splitstrings[1]
 // tmp := strings.Split(splitstrings[0],"@")
 // serviceIP = tmp[1]
  // tmp2 := strings.Split(tmp[0],"/")
 // passwd = tmp2[0]
 // serviceusername = tmp2[1]

          //用以下方法来进行分割
         splitstrings := strings.FieldsFunc(strings.Replace(line,func(char rune) bool {
switch char {
case ':','/','@':
return true
}
return false
})
   passwd,serviceusername,serviceIP,port = splitstrings[0],splitstrings[1],splitstrings[2],splitstrings[3] 
            servicefilepath = "/" + strings.Join(splitstrings[4:],"/")

}
parameter := serviceusername + "@" + serviceIP + ":" + servicefilepath
flag.Parse() // Scans the arg list and sets up flags
for i := 0; i < flag.NArg(); i++ {
cmd := exec.Command("pscp.exe","-P",port,"-pw",passwd,flag.Arg(i),parameter)
err := cmd.Run()
if err != nil {
log.Print(err)
} else {
log.Print("OK!")
}
}
time.Sleep(1 * time.Second)
}
}


v.10
=========================
import (
"flag"
"log"
"os/exec"
"strconv"
"time"
)

func main() {
port:=22
passwd:="hstest"
serviceusername:="hstest"
serviceIP:="192.168.224.128"
servicefilepath:="/home/hstest/src"
parameter:= serviceusername + "@" + serviceIP + ":" + servicefilepath

flag.Parse() // Scans the arg list and sets up flags
for i := 0; i < flag.NArg(); i++ {
cmd:=exec.Command("pscp.exe",strconv.Itoa(port),parameter)
err:=cmd.Run()
if err != nil {
log.Print(err)
}else{
log.Print("OK!")

}

}

time.Sleep(1*time.Second)

}

功能: 把文件上传到指定服务器, 在windows中,右键->打开, 可以直接上传指定文件,但不能上传多个文件,命令行可以

文件名为: Upfile.go

生成的执行文件为:Upfile.exe

用法为: Upfile filename1 filename2

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读