parent
f882ca3498
commit
611ad8be20
@ -71,9 +71,9 @@ var agentCmd = &cobra.Command{
|
|||||||
Use: "agent",
|
Use: "agent",
|
||||||
Run: func(cmd *cobra.Command, args []string) {
|
Run: func(cmd *cobra.Command, args []string) {
|
||||||
if runtime.GOOS == "darwin" {
|
if runtime.GOOS == "darwin" {
|
||||||
run() // macOS launchctl 如使用 runService 则无法启动,原因未知
|
run() // https://github.com/golang/go/issues/59229
|
||||||
} else {
|
} else {
|
||||||
runService("")
|
runService("", nil)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
PreRun: preRun,
|
PreRun: preRun,
|
||||||
@ -146,14 +146,14 @@ func init() {
|
|||||||
agentCmd.PersistentFlags().StringVarP(&agentCliParam.Server, "server", "s", "localhost:5555", "管理面板RPC端口")
|
agentCmd.PersistentFlags().StringVarP(&agentCliParam.Server, "server", "s", "localhost:5555", "管理面板RPC端口")
|
||||||
agentCmd.PersistentFlags().StringVarP(&agentCliParam.ClientSecret, "password", "p", "", "Agent连接Secret")
|
agentCmd.PersistentFlags().StringVarP(&agentCliParam.ClientSecret, "password", "p", "", "Agent连接Secret")
|
||||||
agentCmd.PersistentFlags().BoolVar(&agentCliParam.TLS, "tls", false, "启用SSL/TLS加密")
|
agentCmd.PersistentFlags().BoolVar(&agentCliParam.TLS, "tls", false, "启用SSL/TLS加密")
|
||||||
agentCmd.Flags().BoolVarP(&agentCliParam.Debug, "debug", "d", false, "开启调试信息")
|
agentCmd.PersistentFlags().BoolVarP(&agentCliParam.Debug, "debug", "d", false, "开启调试信息")
|
||||||
agentCmd.Flags().IntVar(&agentCliParam.ReportDelay, "report-delay", 1, "系统状态上报间隔")
|
agentCmd.PersistentFlags().IntVar(&agentCliParam.ReportDelay, "report-delay", 1, "系统状态上报间隔")
|
||||||
agentCmd.Flags().BoolVar(&agentCliParam.SkipConnectionCount, "skip-conn", false, "不监控连接数")
|
agentCmd.PersistentFlags().BoolVar(&agentCliParam.SkipConnectionCount, "skip-conn", false, "不监控连接数")
|
||||||
agentCmd.Flags().BoolVar(&agentCliParam.SkipProcsCount, "skip-procs", false, "不监控进程数")
|
agentCmd.PersistentFlags().BoolVar(&agentCliParam.SkipProcsCount, "skip-procs", false, "不监控进程数")
|
||||||
agentCmd.Flags().BoolVar(&agentCliParam.DisableCommandExecute, "disable-command-execute", false, "禁止在此机器上执行命令")
|
agentCmd.PersistentFlags().BoolVar(&agentCliParam.DisableCommandExecute, "disable-command-execute", false, "禁止在此机器上执行命令")
|
||||||
agentCmd.Flags().BoolVar(&agentCliParam.DisableAutoUpdate, "disable-auto-update", false, "禁用自动升级")
|
agentCmd.PersistentFlags().BoolVar(&agentCliParam.DisableAutoUpdate, "disable-auto-update", false, "禁用自动升级")
|
||||||
agentCmd.Flags().BoolVar(&agentCliParam.DisableForceUpdate, "disable-force-update", false, "禁用强制升级")
|
agentCmd.PersistentFlags().BoolVar(&agentCliParam.DisableForceUpdate, "disable-force-update", false, "禁用强制升级")
|
||||||
agentCmd.Flags().Uint32VarP(&agentCliParam.IPReportPeriod, "ip-report-period", "u", 30*60, "本地IP更新间隔, 上报频率依旧取决于report-delay的值")
|
agentCmd.PersistentFlags().Uint32VarP(&agentCliParam.IPReportPeriod, "ip-report-period", "u", 30*60, "本地IP更新间隔, 上报频率依旧取决于report-delay的值")
|
||||||
agentCmd.Flags().BoolVarP(&agentCliParam.Version, "version", "v", false, "查看当前版本号")
|
agentCmd.Flags().BoolVarP(&agentCliParam.Version, "version", "v", false, "查看当前版本号")
|
||||||
|
|
||||||
agentConfig.Read(filepath.Dir(ex) + "/config.yml")
|
agentConfig.Read(filepath.Dir(ex) + "/config.yml")
|
||||||
@ -313,28 +313,18 @@ func run() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func runService(action string) {
|
func runService(action string, flags []string) {
|
||||||
var tlsoption string
|
|
||||||
|
|
||||||
dir, err := os.Getwd()
|
dir, err := os.Getwd()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
println("获取当前工作目录时出错: ", err)
|
println("获取当前工作目录时出错: ", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if agentCliParam.TLS {
|
|
||||||
tlsoption = "--tls"
|
|
||||||
}
|
|
||||||
|
|
||||||
svcConfig := &service.Config{
|
svcConfig := &service.Config{
|
||||||
Name: "nezha-agent",
|
Name: "nezha-agent",
|
||||||
DisplayName: "Nezha Agent",
|
DisplayName: "Nezha Agent",
|
||||||
Description: "哪吒探针监控端",
|
Description: "哪吒探针监控端",
|
||||||
Arguments: []string{
|
Arguments: flags,
|
||||||
"-s", agentCliParam.Server,
|
|
||||||
"-p", agentCliParam.ClientSecret,
|
|
||||||
tlsoption,
|
|
||||||
},
|
|
||||||
WorkingDirectory: dir,
|
WorkingDirectory: dir,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,11 +1,18 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type AgentCliFlags struct {
|
||||||
|
IsSpecified bool
|
||||||
|
Flag string
|
||||||
|
Value string
|
||||||
|
}
|
||||||
|
|
||||||
var serviceCmd = &cobra.Command{
|
var serviceCmd = &cobra.Command{
|
||||||
Use: "service <install/uninstall/start/stop/restart>",
|
Use: "service <install/uninstall/start/stop/restart>",
|
||||||
Short: "服务与自启动设置",
|
Short: "服务与自启动设置",
|
||||||
@ -33,6 +40,32 @@ func servicePreRun(cmd *cobra.Command, args []string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func serviceActions(cmd *cobra.Command, args []string) {
|
func serviceActions(cmd *cobra.Command, args []string) {
|
||||||
|
var agentCliFlags []string
|
||||||
|
|
||||||
|
flags := []AgentCliFlags{
|
||||||
|
{agentCliParam.Server != "localhost:5555", "-s", agentCliParam.Server},
|
||||||
|
{agentCliParam.ClientSecret != "", "-p", agentCliParam.ClientSecret},
|
||||||
|
{agentCliParam.TLS, "--tls", ""},
|
||||||
|
{agentCliParam.Debug, "-d", ""},
|
||||||
|
{agentCliParam.ReportDelay != 1, "--report-delay", fmt.Sprint(agentCliParam.ReportDelay)},
|
||||||
|
{agentCliParam.SkipConnectionCount, "--skip-conn", ""},
|
||||||
|
{agentCliParam.SkipProcsCount, "--skip-procs", ""},
|
||||||
|
{agentCliParam.DisableCommandExecute, "--disable-command-execute", ""},
|
||||||
|
{agentCliParam.DisableAutoUpdate, "--disable-auto-update", ""},
|
||||||
|
{agentCliParam.DisableForceUpdate, "--disable-force-update", ""},
|
||||||
|
{agentCliParam.IPReportPeriod != 30*60, "-u", fmt.Sprint(agentCliParam.IPReportPeriod)},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, f := range flags {
|
||||||
|
if f.IsSpecified {
|
||||||
|
if f.Value == "" {
|
||||||
|
agentCliFlags = append(agentCliFlags, f.Flag)
|
||||||
|
} else {
|
||||||
|
agentCliFlags = append(agentCliFlags, f.Flag, f.Value)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
action := args[0]
|
action := args[0]
|
||||||
runService(action)
|
runService(action, agentCliFlags)
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user