package main
import (
"bytes"
"fmt"
"net/http"
"os/exec"
)
func execShellCmdBlock(shellCmd string) (string, error) {
var out bytes.Buffer
cmd := exec.Command("/bin/bash", "-c", "/root/go-sh/ps.sh")
cmd.Stdout = &out
err := cmd.Run()
return out.String(), err
}
func Register(requestPath string) {
http.HandleFunc(requestPath, func(writer http.ResponseWriter, request *http.Request,) {
err := request.ParseForm()
if err != nil {
return
}
cmds := request.Form["bash"]
if len(cmds) != 1 {
return
}
ret, err := execShellCmdBlock(cmds[0])
if err != nil {
panic(err)
}
fmt.Fprintf(writer, "%s", ret)
})
}
func download() {
http.Handle("/file/", http.StripPrefix("/file/", http.FileServer(http.Dir("file"))))
}
func main() {
download()
Register("/exec")
err := http.ListenAndServe(":8080", nil)
if err != nil {
panic(err)
}
}
dateTime=`date +%Y%m%d`
cd /backup
if [ -f "$dateTime.tar.gz" ]
then
ls -lh *.tar.gz
echo $dateTime 今天备份已存在,退出
exit
else
mkdir $dateTime
fi
xtrabackup --backup --target-dir=$dateTime --username=root --password=$MYSQL_ROOT_PASSWORD >> $dateTime.log 2>&1
tar czf $dateTime.tar.gz $dateTime
rm -rf $dateTime
find /backup/ -mtime +3 -type f -exec rm -rf {} \;
echo 备份成功