package main
import (
"fmt"
"golang.org/x/crypto/ssh"
"log"
"os"
"os/exec"
"time"
)
func connect1(user, password, host string, port int) (*ssh.Session, error) {
var (
auth []ssh.AuthMethod
addr string
clientConfig *ssh.ClientConfig
client *ssh.Client
session *ssh.Session
err error
)
// get auth method
auth = make([]ssh.AuthMethod, 0)
auth = append(auth, ssh.Password(password))
clientConfig = &ssh.ClientConfig{
User: user,
Auth: auth,
Timeout: 30 * time.Second,
}
// connet to ssh
addr = fmt.Sprintf("%s:%d", host, port)
if client, err = ssh.Dial("tcp", addr, clientConfig); err != nil {
return nil, err
}
// create session
if session, err = client.NewSession(); err != nil {
return nil, err
}
return session, nil
}
func delwar() {
d := exec.Command("cmd", "/C", "del", "D:\\projects\\target\\*.war")
if err := d.Run(); err != nil {
fmt.Println("Error: ", err)
}
}
func packagexj() {
c := exec.Command("cmd", "/k", "cd /d D:\\projects\\ && D:\\tools\\apache-maven-3.3.9-bin\\apache-maven-3.3.9\\bin\\mvn compile war:war")
//c := exec.Command( "mvn" )
c.Stdout = os.Stdout
if err := c.Run(); err != nil {
fmt.Println("Error: c ", err)
}
}
func changeName() {
//执行【ls /】并输出返回文本
ch := exec.Command("cmd", "/C", "ren", "D:\\projects\\target\\console-demo.war", "demo.war")
if err := ch.Run(); err != nil {
fmt.Println("Error: ", err)
}
}
func main() {
fmt.Println("del war...")
delwar()
fmt.Println("packaging...")
packagexj()
fmt.Println("changename...")
changeName()
session, err := connect1("root", "123456", "192.168.1.123", 22)
if err != nil {
log.Fatal(err)
}
defer session.Close()
session.Stdout = os.Stdout
session.Stderr = os.Stderr
session.Run("/home/apache-tomcat-7.0.70/bin/shutdown.sh")
fmt.Println("shutdown...")
time.Sleep(3 * time.Second)
fmt.Println("delete...")
session.Run("rm -rf /home/apache-tomcat-7.0.70/webapps/demo*")
time.Sleep(3 * time.Second)
fmt.Println("uploading...")
sftp1()
time.Sleep(3 * time.Second)
fmt.Println("start...")
session.Run("/home/apache-tomcat-7.0.70/bin/startup.sh")
fmt.Println("done...")
}