Go语言使用Scp传输文件
package main
import (
"fmt"
"go-ssh/ssh"
"io"
"os"
)
const (
user = "user"
ip_port = "ip_port"
password = "Passwd"
)
func main() {
PassWd := []ssh.AuthMethod{ssh.Password(password)}
Conf := ssh.ClientConfig{User: user, Auth: PassWd}
Client, err := ssh.Dial("tcp", ip_port, &Conf)
if err != nil {
fmt.Println(nil)
}
defer Client.Close()
if session, err := Client.NewSession(); err == nil {
defer session.Close()
go func() {
Buf := make([]byte, 1024)
w, _ := session.StdinPipe()
defer w.Close()
File, _ := os.Open("FilePath")
info, _ := File.Stat()
fmt.Fprintln(w, "C0644", info.Size(), "Des_Name")
for {
n, err := File.Read(Buf)
fmt.Fprint(w, string(Buf[:n]))
if err != nil {
if err == io.EOF {
return
} else {
panic(err)
}
}
}
}()
if err := session.Run("/usr/bin/scp -qrt /mnt"); err != nil {
if err != nil {
if err.Error() != "Process exited with: 1. Reason was: ()" {
fmt.Println(err.Error())
}
}
}
}
}
本文由 创作,采用 知识共享署名4.0 国际许可协议进行许可。本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。最后编辑时间为: 2020/06/20 12:06