关闭

(go) 上传文件ta3 专用(无多级目录)

789人阅读 评论(0) 收藏 举报
分类:
package main
import (
    "bufio"
    "flag"
    "fmt"
    "io"
    "log"
    "os"
    "os/exec"
    "path/filepath"
    "strings"
    "time"
)
const (
    filename = "c:\\myetc\\remote.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.Println("文件不存在!")
        log.Println("设置的样例:c:\\myetc\\remote.etc"
        log.Println("m_ta/m_ta@192.168.224.128:22:/home/m_ta/src")
        return
    }
    f, err := os.Open(filename) //打开文件
    //打开文件出错处理
    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.FieldsFunc(strings.Replace(line, "\r\n", "", -1), 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)
    }
}

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

Go项目的目录结构

http://blog.studygolang.com/2012/12/go%E9%A1%B9%E7%9B%AE%E7%9A%84%E7%9B%AE%E5%BD%95%E7%BB%93%E6%9E%84/ 项目目录结构如何组织,一般语言都是没有规定。但Go语言这方面做了规定,这样可...
  • leonpengweicn
  • leonpengweicn
  • 2017-02-23 11:42
  • 974

多级目录makefile例子

先看一下make前后的目录结构对比         makefile会自动生成需要的文件夹,各个模块下src/obj负责存放生成的 .o 文件,target用于存储生成的可执行文件,lib用于存储生成的静态库。
  • G_Caesar_
  • G_Caesar_
  • 2016-08-29 14:51
  • 967

winscp上传过滤目录和文件

小松一直使用winscp工具来替换ftp工具,我开发的时候使用了svn 或git来管理版本,有时候修改文件比较多,不可能一个文件已个文件传,关键是目录下面还是svn和git的文件夹,这时候怎么解决这个问题 文件问题解决了,在没有这个功能之前,可能你要在项目外面新建一个文件夹,把要上传的文件按...
  • a454213722
  • a454213722
  • 2016-07-20 12:00
  • 1145

PHP中使用mkdir创建多级目录的方法

function mkdirs($dir)     {     if(!is_dir($dir))     {     if(!$this->mkdirs(dirname($dir))){   ...
  • vera_xue
  • vera_xue
  • 2014-02-14 11:30
  • 1620

高级rman功能之虚拟专用目录

高级rman功能之虚拟专用目录: 一个目录可以注册一个机构中的所有数据库的详细信息,但是在一些情况下希望创建一个或多个虚拟专用目录。安全性规则可能要求职责分离:一些dba负责管理一部分数据库,其他dba负责管理另外的 数据库。为了辅助这种做法,rman能够创建虚拟专用目录:作为dba,可以将自己...
  • woqiang68
  • woqiang68
  • 2013-08-06 16:55
  • 711

嵌套删除多级目录, 删除单级目录, 创建多级目录, 复制文件

备一份自己用: /** * 嵌套删除多级目录 * * @param[in] oPath 目录 */ private static void deleteFolder(final File oPath) { final File[] dirs = oPath.listFil...
  • elf8848
  • elf8848
  • 2014-10-09 10:28
  • 664

关于Go的一个文件目录共享应用实例

package main import (     "flag"     "fmt"     "net/http" &...
  • fyxichen
  • fyxichen
  • 2015-07-14 19:12
  • 620

论文中word2010下目录的生成及多级列表的设置

论文的目录设置方法及多级列表的应用
  • u010694498
  • u010694498
  • 2017-01-18 10:02
  • 2587

JSch - Java实现的SFTP(文件上传详解篇)

转载:http://www.cnblogs.com/longyg/archive/2012/06/25/2556576.html JSch是Java Secure Channel的缩写。JSch是一个SSH2的纯Java实现。它允许你连接到一个SSH服务器,并且可以使用端口转发,X...
  • rangqiwei
  • rangqiwei
  • 2013-05-31 17:58
  • 8275

GO语言按照深度遍历文件

常规方法不使用pathfilepath包 go的filepath包go语言提供了大量的包,基于这些包我们可以完成很多有意思的事情,本节我们就来看看如何利用go语言来遍历文件。常规方法(不使用path/filepath包)比较直观的方式是,按照某个目录递归的方式便利文件:func walkDir(di...
  • sylar_d
  • sylar_d
  • 2016-07-20 09:45
  • 1830
    个人资料
    • 访问:486419次
    • 积分:4239
    • 等级:
    • 排名:第8373名
    • 原创:95篇
    • 转载:17篇
    • 译文:9篇
    • 评论:41条
    最新评论