公司ARES studio 自动上传编译启动服务工具
//在执行文件中
// conf
// |--app.conf
// monitor.exe
// app.conf中的内容
// command="ls -l"
// monitordir ="c:\\test"
// 在windows下会执行两次
// https://github.com/howeyc/fsnotify/issues/106
package main
import (
"fmt"
"os/exec"
"strings"
"time"
"github.com/astaxie/beego"
)
func mkcmd(command string, logflag int) error {
argArray := strings.Split(command, " ")
cmd := exec.Command(argArray[0], argArray[1:]...)
//buff, err := cmd.Output() //不要用这个,否则不能捕捉到错误的信息
buff, err := cmd.CombinedOutput()
if logflag == 1 {
fmt.Println(string(buff))
}
if err != nil {
return err
}
return nil
}
func echoinfo() {
var echo string
for i := 0; i < 50; i++ {
echo = echo + "="
}
fmt.Println(echo)
fmt.Println()
}
func main() {
command := beego.AppConfig.String("command")
echoinfo()
fmt.Println("upload begin, please waiting .... !")
fmt.Println(command)
if error := mkcmd(command, 0); error != nil {
fmt.Printf("updown files %s", error)
return
}
fmt.Println("upload end ... !")
echoinfo()
fmt.Println("clear log begin ... !")
clearlog := beego.AppConfig.String("clearlog")
fmt.Println(clearlog)
if error := mkcmd(clearlog, 1); error != nil {
fmt.Printf("compile files %s", error)
return
}
fmt.Println("clear log end ... !")
echoinfo()
fmt.Println("compile begin ... !")
compile := beego.AppConfig.String("compile")
fmt.Println(compile)
if error := mkcmd(compile, 1); error != nil {
fmt.Printf("compile files %s", error)
return
}
fmt.Println("compile end ... !")
echoinfo()
fmt.Println("allstop begin ... !")
stopservice := beego.AppConfig.String("stopservice")
fmt.Println(stopservice)
for i := 0; i < 2; i++ {
if error := mkcmd(stopservice, 1); error != nil {
fmt.Printf("stopservice %s", error)
return
}
}
fmt.Println("stopservice end ... !")
time.Sleep(2 * time.Second)
echoinfo()
fmt.Println("startservice begin ... !")
startservice := beego.AppConfig.String("startservice")
fmt.Println(startservice)
if error := mkcmd(startservice, 1); error != nil {
fmt.Printf("startservice %s", error)
return
}
fmt.Println("startservice end ... !")
}
配置文件
command=”pscp.exe -P 22 -pw cloudta F:\yunta\TA* cloudta@192.168.224.128:/home/cloudta/dev/src/”
PASSWORD=”cloudta”
USERNAME=”cloudta”
REMOTEIP=”192.168.224.128”
#make.sh
#source /home/cloudta/.bash_profile
#cd /home/cloudta/dev/src 一定要进入这个目录才行
#sh +x makeall
clearlog=plink -v -ssh -P 22 -pw cloudta cloudta@192.168.224.128 /home/cloudta/workspace/dlog/clear.sh
compile=”plink -v -ssh -P 22 -pw cloudta cloudta@192.168.224.128 /home/cloudta/dev/src/make.sh”
stopservice=”plink -v -ssh -P 22 -pw cloudta cloudta@192.168.224.128 /home/cloudta/workspace/allstop.sh”
startservice=”plink -v -ssh -P 22 -pw cloudta cloudta@192.168.224.128 /home/cloudta/workspace/allstart.sh”
远程makefile
source /home/cloudta/.bash_profile
cd /home/cloudta/dev/src #一定要指定进入这个目录,否则不能编译
sh +x makeall
清除日志sh
cd /home/cloudta/workspace/dlog;
for file_a in *; do
filename=`basename $file_a`
if [ $filename != "clear.sh" ] ; then
echo "" > $filename ;
fi
done