Commit e4d1223e authored by 陈子龙's avatar 陈子龙

主机管理状态检测 fix

parent a6c3d61e
...@@ -31,12 +31,12 @@ type Config struct { ...@@ -31,12 +31,12 @@ type Config struct {
MinioSecretKey string MinioSecretKey string
MinioBucket string MinioBucket string
//TempDirPrefix string //TempDirPrefix string
PrometheusHost string PrometheusHost string
AccessRuleModeKey string AccessRuleModeKey string
LocationUrl string LocationUrl string
LocationKey string LocationKey string
PrivateKeySSH string PrivateKeySSH string
PublicKeySSH string //PublicKeySSH string
OrderDingTalkAccessToken string OrderDingTalkAccessToken string
OrderDingTalkSecret string OrderDingTalkSecret string
SmsAccessKeyId string SmsAccessKeyId string
......
...@@ -56,28 +56,28 @@ func initConfig() { ...@@ -56,28 +56,28 @@ func initConfig() {
conf.LoggerLevel = util.SetEnvStr("LOG_LEVEL", "info") conf.LoggerLevel = util.SetEnvStr("LOG_LEVEL", "info")
conf.RunMode = util.SetEnvStr("GIN_MODE", "debug") // project run mode, available parameters: debug、release conf.RunMode = util.SetEnvStr("GIN_MODE", "debug") // project run mode, available parameters: debug、release
conf.Options = &conf.Config{ conf.Options = &conf.Config{
Prefix: *prefix, Prefix: *prefix,
DbURL: util.SetEnvStr("DB_URL", "host=localhost port=9010 user=postgres password=passwd123 dbname=postgres sslmode=disable"), DbURL: util.SetEnvStr("DB_URL", "host=localhost port=9010 user=postgres password=passwd123 dbname=postgres sslmode=disable"),
DbDriver: util.SetEnvStr("DB_DRIVER", "postgres"), DbDriver: util.SetEnvStr("DB_DRIVER", "postgres"),
RedisURL: util.SetEnvStr("REDIS_URL", "localhost:7001"), RedisURL: util.SetEnvStr("REDIS_URL", "localhost:7001"),
RedisDB: 0, RedisDB: 0,
RedisTag: "bg", RedisTag: "bg",
LogDirPrefix: util.SetEnvStr("LOG_DIR_PREFIX", "/app/log"), // 日志目录 LogDirPrefix: util.SetEnvStr("LOG_DIR_PREFIX", "/app/log"), // 日志目录
LogDirName: util.SetEnvStr("LOG_NAME", "syslog"), // 日志名称 LogDirName: util.SetEnvStr("LOG_NAME", "syslog"), // 日志名称
LogSaveDays: util.SetEnvInt("LOG_SAVE_DAYS", 7), // 日志最大存储天数 LogSaveDays: util.SetEnvInt("LOG_SAVE_DAYS", 7), // 日志最大存储天数
LogMode: util.SetEnvInt("LOG_MODE", 1), // 1.标准打印 2.输出文件 LogMode: util.SetEnvInt("LOG_MODE", 1), // 1.标准打印 2.输出文件
ArgBool: util.SetEnvBool("ARG_BOOL", false), // 示例参数 ArgBool: util.SetEnvBool("ARG_BOOL", false), // 示例参数
ArgInt: util.SetEnvInt("ARG_INT", 10), // 示例参数 ArgInt: util.SetEnvInt("ARG_INT", 10), // 示例参数
MinioServer: util.SetEnvStr("MINIO_SERVER", "https://cache.wodcloud.com"), // Minio 服务地址 MinioServer: util.SetEnvStr("MINIO_SERVER", "https://cache.wodcloud.com"), // Minio 服务地址
MinioAccessKey: util.SetEnvStr("MINIO_ACCESS_KEY", "beagleadmin"), // Minio Access Key MinioAccessKey: util.SetEnvStr("MINIO_ACCESS_KEY", "beagleadmin"), // Minio Access Key
MinioSecretKey: util.SetEnvStr("MINIO_SECRET_KEY", "H76cPmwvH7vJ"), // Minio Secret MinioSecretKey: util.SetEnvStr("MINIO_SECRET_KEY", "H76cPmwvH7vJ"), // Minio Secret
MinioBucket: util.SetEnvStr("MINIO_BUCKET", "so-operation"), // Minio Bucket MinioBucket: util.SetEnvStr("MINIO_BUCKET", "so-operation"), // Minio Bucket
PrometheusHost: util.SetEnvStr("PROMETHEUS_HOST", "https://prometheus.wodcloud.com"), // Prometheus Host PrometheusHost: util.SetEnvStr("PROMETHEUS_HOST", "https://prometheus.wodcloud.com"), // Prometheus Host
AccessRuleModeKey: "accessRuleMode", AccessRuleModeKey: "accessRuleMode",
LocationUrl: util.SetEnvStr("LOCATION_URL", "https://apis.map.qq.com/ws/location/v1/ip"), LocationUrl: util.SetEnvStr("LOCATION_URL", "https://apis.map.qq.com/ws/location/v1/ip"),
LocationKey: util.SetEnvStr("LOCATION_KEY", "QKFBZ-PGGWJ-VZQFF-FHPA7-QWT5H-YHF4T"), LocationKey: util.SetEnvStr("LOCATION_KEY", "QKFBZ-PGGWJ-VZQFF-FHPA7-QWT5H-YHF4T"),
PrivateKeySSH: util.SetEnvStr("PRIVATE_KEY_SSH", "-----BEGIN OPENSSH PRIVATE KEY-----\nb3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAlwAAAAdzc2gtcn\nNhAAAAAwEAAQAAAIEAsOFk9OUB8wg9fd+PDHyX8nEtTSPSZY+tjxq2da1Pf5FkIn+U1da6\nh2eqowF9lnyvlt7uEledTIWQZDGWToGYCZnRommSZEpo/vII+l1P28bJVHfgWFCqmxNfIB\nZFQ4KrOp9rXKidmrd8flhK/NTLJNqryrhhIiDs3CTyAliscIsAAAIQTuM2gU7jNoEAAAAH\nc3NoLXJzYQAAAIEAsOFk9OUB8wg9fd+PDHyX8nEtTSPSZY+tjxq2da1Pf5FkIn+U1da6h2\neqowF9lnyvlt7uEledTIWQZDGWToGYCZnRommSZEpo/vII+l1P28bJVHfgWFCqmxNfIBZF\nQ4KrOp9rXKidmrd8flhK/NTLJNqryrhhIiDs3CTyAliscIsAAAADAQABAAAAgDjcfGPtqq\n7CG2J3l7jf5MjfcTy3I0/a3GSApd82k7PivVoJwYLswJH+1XAJbqIN+zR4/fePitWqqjxL\nZJJgPstuXpBZuJDvGwMqfl7wHRL2Qx34sRG02hG5e3uIfMxe5lHcPba0qsVQt+vOhu9MUb\nsYF/mfuQJKt/Oi8nA1BbrBAAAAQFQPrap7AtYWEoCIY7gtpFMW51iDTAv5GN99DsKNuBby\nwQX2S0Wg/da75m/emJn/2IbmaKApvrx8LbenpyywfBkAAABBAN6xiYQ2j7eRjLV4h4Hbie\nVwlPYP4otKHdF5meObr+2ifYiMktdv/44V1XWKhgavjGFNWx2sHgj7byb51e/bi3MAAABB\nAMtVxa55G0wS9Yw1WK2F4JdYZ65ZAnUuo2rbA2dMDQxsOQxgel5Ox2XmC7e0GKrO9BJKPo\nR2fHEOdm9KOmoB8IkAAAAWY2hlbnppbG9uZ0BleGFtcGxlLmNvbQECAwQF\n-----END OPENSSH PRIVATE KEY-----\n"), PrivateKeySSH: util.SetEnvStr("PRIVATE_KEY_SSH", ""),
PublicKeySSH: util.SetEnvStr("PUBLIC_KEY_SSH", "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQCw4WT05QHzCD19348MfJfycS1NI9Jlj62PGrZ1rU9/kWQif5TV1rqHZ6qjAX2WfK+W3u4SV51MhZBkMZZOgZgJmdGiaZJkSmj+8gj6XU/bxslUd+BYUKqbE18gFkVDgqs6n2tcqJ2at3x+WEr81Msk2qvKuGEiIOzcJPICWKxwiw== chenzilong@example.com\n"), //PublicKeySSH: util.SetEnvStr("PUBLIC_KEY_SSH", "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQCw4WT05QHzCD19348MfJfycS1NI9Jlj62PGrZ1rU9/kWQif5TV1rqHZ6qjAX2WfK+W3u4SV51MhZBkMZZOgZgJmdGiaZJkSmj+8gj6XU/bxslUd+BYUKqbE18gFkVDgqs6n2tcqJ2at3x+WEr81Msk2qvKuGEiIOzcJPICWKxwiw== chenzilong@example.com\n"),
OrderDingTalkAccessToken: util.SetEnvStr("ORDER_DING_TALK_ACCESS_TOKEN", "203fe1644b446bba0a34e6e622c523d39ee9916fdad94b9c64224449f659e20b"), OrderDingTalkAccessToken: util.SetEnvStr("ORDER_DING_TALK_ACCESS_TOKEN", "203fe1644b446bba0a34e6e622c523d39ee9916fdad94b9c64224449f659e20b"),
OrderDingTalkSecret: util.SetEnvStr("ORDER_DING_TALK_SECRET", "SECa73d8372e336451c9daf29a99f750ee1bdd170c1dab910eab9cd06d729a831b7"), OrderDingTalkSecret: util.SetEnvStr("ORDER_DING_TALK_SECRET", "SECa73d8372e336451c9daf29a99f750ee1bdd170c1dab910eab9cd06d729a831b7"),
SmsAccessKeyId: util.SetEnvStr("SMS_ACCESS_KEY", "LTAI4GBcVubRjzX7ABPcHnhB"), // 短信key SmsAccessKeyId: util.SetEnvStr("SMS_ACCESS_KEY", "LTAI4GBcVubRjzX7ABPcHnhB"), // 短信key
...@@ -161,19 +161,19 @@ func initAnsibleSSH() { ...@@ -161,19 +161,19 @@ func initAnsibleSSH() {
if err != nil { if err != nil {
fmt.Println(err.Error()) fmt.Println(err.Error())
} else { } else {
_, err := f.Write([]byte(conf.Options.PrivateKeySSH)) _, err = f.Write([]byte(conf.Options.PrivateKeySSH))
if err != nil {
fmt.Println(err.Error())
}
}
f2, err := os.Create("/root/.ssh/id_rsa.pub")
defer f2.Close()
if err != nil {
fmt.Println(err.Error())
} else {
_, err := f.Write([]byte(conf.Options.PublicKeySSH))
if err != nil { if err != nil {
fmt.Println(err.Error()) fmt.Println(err.Error())
} }
} }
//f2, err := os.Create("/root/.ssh/id_rsa.pub")
//defer f2.Close()
//if err != nil {
// fmt.Println(err.Error())
//} else {
// _, err := f.Write([]byte(conf.Options.PublicKeySSH))
// if err != nil {
// fmt.Println(err.Error())
// }
//}
} }
...@@ -455,7 +455,11 @@ func (h *HostManageSvc) ListStateHostManage(req request.StateHostManageReq) (err ...@@ -455,7 +455,11 @@ func (h *HostManageSvc) ListStateHostManage(req request.StateHostManageReq) (err
for _, v := range hostManageList { for _, v := range hostManageList {
//修改状态 //修改状态
connStatus := StatusDetection(v.Ip) connStatus, err1 := StatusDetection(v.Ip)
if err1 != nil {
session.Rollback()
return err1
}
hostManageListConn := entity.HostManageList{ hostManageListConn := entity.HostManageList{
ConnStatus: connStatus, ConnStatus: connStatus,
} }
...@@ -545,7 +549,10 @@ func (h *HostManageSvc) SaveStateHostManage(hostManageList []request.HostManageL ...@@ -545,7 +549,10 @@ func (h *HostManageSvc) SaveStateHostManage(hostManageList []request.HostManageL
id = uuid.New().String() id = uuid.New().String()
for k, v := range hostManageListCaches { for k, v := range hostManageListCaches {
//调用状态检测函数 //调用状态检测函数
hostManageListCaches[k].ConnStatus = StatusDetection(v.Ip) hostManageListCaches[k].ConnStatus, err = StatusDetection(v.Ip)
if err != nil {
return
}
hostManageListCaches[k].Id = id hostManageListCaches[k].Id = id
} }
...@@ -614,16 +621,25 @@ func (h *HostManageSvc) SaveIpExceptionList(req request.HostIpExceptionListReq) ...@@ -614,16 +621,25 @@ func (h *HostManageSvc) SaveIpExceptionList(req request.HostIpExceptionListReq)
} }
// StatusDetection 状态检测 // StatusDetection 状态检测
func StatusDetection(ip string) (ipConn int) { func StatusDetection(ip string) (ipConn int, err error) {
var cmd *exec.Cmd var cmd *exec.Cmd
cmd = exec.Command("ansible", fmt.Sprintf("%s", AnsibleIp+ip), "-m", "ping") cmd = exec.Command("ansible", fmt.Sprintf("%s", AnsibleIp+ip), "-m", "ping")
output, err := cmd.Output() //执行cmd命令
if err != nil { if err = cmd.Start(); err != nil {
fmt.Println("ping:", string(output)) err = resp.CmdExecError.WithError(err)
return 1 return
}
if cmd.ProcessState.Success() {
return 0, nil
} }
fmt.Println("ping:", string(output)) return 1, nil
return 0 //output, err := cmd.Output()
//if err != nil {
// fmt.Println("ping:", string(output))
// return 1
//}
//fmt.Println("ping:", string(output))
//return 0
} }
// ExportIpStr 结果导出 // ExportIpStr 结果导出
...@@ -780,7 +796,10 @@ func CronStatusDetection() { ...@@ -780,7 +796,10 @@ func CronStatusDetection() {
// } // }
//} //}
for _, v := range hostManageList { for _, v := range hostManageList {
connStatus := StatusDetection(v.Ip) connStatus, err1 := StatusDetection(v.Ip)
if err1 != nil {
fmt.Println("CronStatusDetection err:", err1.Error())
}
//修改状态 //修改状态
_, err = db.Table("host_manage_list").Where("is_delete = 0 AND id = ?", v.Id). _, err = db.Table("host_manage_list").Where("is_delete = 0 AND id = ?", v.Id).
Cols("conn_status").Update(&entity.HostManageList{ Cols("conn_status").Update(&entity.HostManageList{
...@@ -788,7 +807,6 @@ func CronStatusDetection() { ...@@ -788,7 +807,6 @@ func CronStatusDetection() {
}) })
if err != nil { if err != nil {
fmt.Println("CronStatusDetection err:", err.Error()) fmt.Println("CronStatusDetection err:", err.Error())
return
} }
} }
fmt.Println("CronPersonalCardDate success!") fmt.Println("CronPersonalCardDate success!")
......
...@@ -237,7 +237,6 @@ func (t *TaskManageSvc) ExecScript(req request.ExecScriptReq, script string) (id ...@@ -237,7 +237,6 @@ func (t *TaskManageSvc) ExecScript(req request.ExecScriptReq, script string) (id
} }
//写入主机信息 //写入主机信息
//hostsIp := strings.Replace(strings.Trim(fmt.Sprint(hosts), "[]"), " ", " ", -1) //hostsIp := strings.Replace(strings.Trim(fmt.Sprint(hosts), "[]"), " ", " ", -1)
hostsGroup, err := os.Create("/etc/ansible/hosts_" + fmt.Sprintf("%d", req.TaskId)) hostsGroup, err := os.Create("/etc/ansible/hosts_" + fmt.Sprintf("%d", req.TaskId))
if err != nil { if err != nil {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment