From 8080314d9bf8e0582e24199f28a881d8c6ea832c Mon Sep 17 00:00:00 2001 From: zeaslity Date: Tue, 24 Oct 2023 10:46:57 +0800 Subject: [PATCH] =?UTF-8?q?[=20Agent=20]=20[=20Executor=20]=20-=20agent?= =?UTF-8?q?=E5=90=AF=E5=8A=A8=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- agent-go/main-dev.go | 114 +++++++++++++++++----------------- agent-go/main.go | 64 +++++++++---------- agent-go/shell/octopus-env.sh | 104 ++++++++++++++++++++++++++++--- 3 files changed, 185 insertions(+), 97 deletions(-) diff --git a/agent-go/main-dev.go b/agent-go/main-dev.go index a150c21..91c7e85 100644 --- a/agent-go/main-dev.go +++ b/agent-go/main-dev.go @@ -1,59 +1,59 @@ package main -import ( - "agent-go/executor" - logger2 "agent-go/logger" - "agent-go/register" -) - -var log = logger2.Log - -func main() { - - var agentOP = &executor.AgentOsOperator{ - InstallCommandPrefix: []string{ - "apt-get", "install", "--allow-downgrades", "-y", - }, - RemoveCommandPrefix: []string{"apt", "remove", "-y"}, - CanAccessInternet: true, - IsOsTypeUbuntu: true, - IsAgentInnerWall: false, - AgentArch: "amd64", - AgentOSReleaseCode: "focal", - AgentServerInfo: ®ister.AgentServerInfo{ - ServerName: "", - ServerIPPbV4: "158.247.241.43", - ServerIPInV4: "10.0.4.6", - ServerIPPbV6: "", - ServerIPInV6: "", - Location: "", - Provider: "", - ManagePort: "", - CPUCore: "", - CPUBrand: "", - OSInfo: "", - OSKernelInfo: "", - TCPControl: "", - Virtualization: "", - IoSpeed: "", - MemoryTotal: "", - DiskTotal: "", - DiskUsage: "", - Comment: "", - MachineID: "", - AgentVersion: "", - TopicName: "", - }, - OssOfflinePrefix: "https://oss-s1.107421.xyz/", - } - - //executor.BasicPrettyPrint(agentOP.Exec("shutdownFirewall")) - //executor.BasicPrettyPrint(agentOP.Exec("modifyHostname", "seoul-amd64-07")) - //executor.BasicPrettyPrint(agentOP.Exec("disableSwap")) - //executor.BasicPrettyPrint(agentOP.Exec("removeDocker")) - //executor.BasicPrettyPrint(agentOP.Exec("installDocker", "20")) - //executor.BasicPrettyPrint(agentOP.Exec("removeDockerCompose")) - executor.BasicPrettyPrint(agentOP.Exec("installDockerCompose")) - executor.BasicPrettyPrint(agentOP.Exec("installZSH")) - -} +//import ( +// "agent-go/executor" +// logger2 "agent-go/logger" +// "agent-go/register" +//) +// +//var log = logger2.Log +// +//func main() { +// +// var agentOP = &executor.AgentOsOperator{ +// InstallCommandPrefix: []string{ +// "apt-get", "install", "--allow-downgrades", "-y", +// }, +// RemoveCommandPrefix: []string{"apt", "remove", "-y"}, +// CanAccessInternet: true, +// IsOsTypeUbuntu: true, +// IsAgentInnerWall: false, +// AgentArch: "amd64", +// AgentOSReleaseCode: "focal", +// AgentServerInfo: ®ister.AgentServerInfo{ +// ServerName: "", +// ServerIPPbV4: "158.247.241.43", +// ServerIPInV4: "10.0.4.6", +// ServerIPPbV6: "", +// ServerIPInV6: "", +// Location: "", +// Provider: "", +// ManagePort: "", +// CPUCore: "", +// CPUBrand: "", +// OSInfo: "", +// OSKernelInfo: "", +// TCPControl: "", +// Virtualization: "", +// IoSpeed: "", +// MemoryTotal: "", +// DiskTotal: "", +// DiskUsage: "", +// Comment: "", +// MachineID: "", +// AgentVersion: "", +// TopicName: "", +// }, +// OssOfflinePrefix: "https://oss-s1.107421.xyz/", +// } +// +// //executor.BasicPrettyPrint(agentOP.Exec("shutdownFirewall")) +// //executor.BasicPrettyPrint(agentOP.Exec("modifyHostname", "seoul-amd64-07")) +// //executor.BasicPrettyPrint(agentOP.Exec("disableSwap")) +// //executor.BasicPrettyPrint(agentOP.Exec("removeDocker")) +// //executor.BasicPrettyPrint(agentOP.Exec("installDocker", "20")) +// //executor.BasicPrettyPrint(agentOP.Exec("removeDockerCompose")) +// executor.BasicPrettyPrint(agentOP.Exec("installDockerCompose")) +// executor.BasicPrettyPrint(agentOP.Exec("installZSH")) +// +//} diff --git a/agent-go/main.go b/agent-go/main.go index 1bf173c..85c3ba2 100644 --- a/agent-go/main.go +++ b/agent-go/main.go @@ -1,34 +1,34 @@ package main -//import ( -// "agent-go/g" -// logger2 "agent-go/logger" -// "agent-go/register" -// "flag" -// "fmt" -//) -// -//var log = logger2.Log -// -//func main() { -// -// // 解析命令行参数 -// var version string -// var agentServerInfoConf string -// flag.StringVar(&version, "version", "", "config file version") -// flag.StringVar(&agentServerInfoConf, "agentServerInfoConf", "", "agent server info conf file") -// flag.Parse() -// // 读取对应版本的配置文件 -// filename := fmt.Sprintf("octopus-agent-%s.yaml", version) -// println("config file name is => " + filename) -// println("agent server info file is => " + agentServerInfoConf) -// -// // 初始化Nacos的连接配置 -// g.G.AgentConfig = register.ParseConfiguration(filename) -// -// // 执行初始化之策工作 -// businessForeverChan := INIT(agentServerInfoConf) -// -// // 永远等待 runtime的队列消息 -// <-businessForeverChan -//} +import ( + "agent-go/g" + logger2 "agent-go/logger" + "agent-go/register" + "flag" + "fmt" +) + +var log = logger2.Log + +func main() { + + // 解析命令行参数 + var version string + var agentServerInfoConf string + flag.StringVar(&version, "version", "", "config file version") + flag.StringVar(&agentServerInfoConf, "agentServerInfoConf", "", "agent server info conf file") + flag.Parse() + // 读取对应版本的配置文件 + filename := fmt.Sprintf("octopus-agent-%s.yaml", version) + println("config file name is => " + filename) + println("agent server info file is => " + agentServerInfoConf) + + // 初始化Nacos的连接配置 + g.G.AgentConfig = register.ParseConfiguration(filename) + + // 执行初始化之策工作 + businessForeverChan := INIT(agentServerInfoConf) + + // 永远等待 runtime的队列消息 + <-businessForeverChan +} diff --git a/agent-go/shell/octopus-env.sh b/agent-go/shell/octopus-env.sh index 027eaf2..6024d68 100644 --- a/agent-go/shell/octopus-env.sh +++ b/agent-go/shell/octopus-env.sh @@ -38,6 +38,94 @@ org="" managePort="" #### CollectSystemInfo #### +command_exists() { + command -v "$@" >/dev/null 2>&1 +} + +####### 获取系统版本及64位或32位信息 +check_sys() { + # 获取当前终端的宽度,动态调整分割线的长度 + shellwidth=$(stty size | awk '{print $2}') + SplitLine=$(yes "-" | sed ${shellwidth}'q' | tr -d '\n') + + sys_bit=$(uname -m) + case $sys_bit in + i[36]86) + os_bit="32" + hostArch="386" + ;; + x86_64) + os_bit="64" + hostArch="amd64" + ;; + *armv6*) + os_bit="arm" + hostArch="arm6" + ;; + *armv7*) + os_bit="arm" + hostArch="arm7" + ;; + *aarch64* | *armv8*) + os_bit="arm64" + hostArch="arm64" + ;; + *) + error " + 哈哈……这个 辣鸡脚本 不支持你的系统。 (-_-) \n + 备注: 仅支持 Ubuntu 16+ / Debian 8+ / CentOS 7+ 系统 + " && exit 1 + ;; + esac + ## 判定Linux的发行版本 + if [ -f /etc/redhat-release ]; then + hostArchVersion="centos" + elif cat /etc/issue | grep -Eqi "debian"; then + hostArchVersion="debian" + elif cat /etc/issue | grep -Eqi "ubuntu"; then + hostArchVersion="ubuntu" + elif cat /etc/issue | grep -Eqi "centos|red hat|redhat"; then + hostArchVersion="centos" + elif cat /proc/version | grep -Eqi "debian"; then + hostArchVersion="debian" + elif cat /proc/version | grep -Eqi "ubuntu"; then + hostArchVersion="ubuntu" + elif cat /proc/version | grep -Eqi "centos|red hat|redhat"; then + hostArchVersion="centos" + else + hostArchVersion="" + fi + + # 判断系统的包管理工具 apt, yum, or zypper + getPackageManageTool() { + if [[ -n $(command -v apt-get) ]]; then + CMD_INSTALL="apt-get -y -qq install" + CMD_UPDATE="apt-get -qq update" + CMD_REMOVE="apt-get -y remove" + elif [[ -n $(command -v yum) ]]; then + CMD_INSTALL="yum -y -q install" + CMD_UPDATE="yum -q makecache" + CMD_REMOVE="yum -y remove" + elif [[ -n $(command -v zypper) ]]; then + CMD_INSTALL="zypper -y install" + CMD_UPDATE="zypper ref" + CMD_REMOVE="zypper -y remove" + else + return 1 + fi + return 0 + } + + # 检查系统包管理方式,更新包 + getPackageManageTool + if [[ $? -eq 1 ]]; then + error "系统的包管理不是 APT or YUM, 请手动安装所需要的软件." + return 1 + fi + + return 0 +} + ####################################### # description # Arguments: @@ -262,14 +350,14 @@ GetIpv4Info() { fi # inner ipinfo - export interface_prefix=("[[:space:]]eth[0-9]{1,2}" "[[:space:]]ens[0-9]{1,3}" "[[:space:]]eno[0-9]{1,3}" "[[:space:]]enp[0-9]{1,2}") - export real_interface="eth90" + export interface_prefix=("[[:space:]]eth[0-9]{1,2}" "[[:space:]]ens[0-9]{1,3}" "[[:space:]]eno[0-9]{1,3}" "[[:space:]]enp[0-9]{1,2}" "[[:space:]]enp[0-9]{1,2}s[0-9]{1,3}") + local real_interface="eth0" for interface in "${interface_prefix[@]}"; do echo $(ip link show) | grep -oE ${interface} | head -1 if [[ $? -eq 0 ]]; then real_interface=$(echo $(ip link show) | grep -oE ${interface} | head -1 | cut -d" " -f2) - echo "当前主机的真实内网网卡为 => [$real_interface]" + echo "当前主机的真实内网网卡为 => [ $real_interface ]" break fi done @@ -281,12 +369,12 @@ GetIpv4Info() { ipv6_regex="inet6[[:space:]]([0-9a-fA-F]{0,4}(:[0-9a-fA-F]{0,4}){1,7})\/[0-9]{1,3}" # 查找IPv4地址 - inner_ipv4=$(echo $(ip addr show $real_interface) | grep -oE $ipv4_regex | cut -d" " -f2) + inner_ipv4=$(echo $(ip addr show $real_interface) | grep -oE $ipv4_regex | grep -v 127 | cut -d" " -f2) echo "Interface: $real_interface, IPv4 Address: $inner_ipv4" # 查找IPv6地址 - inner_ipv6=$(echo $(ip addr show $real_interface) | grep -oE $ipv6_regex | cut -d" " -f2) - echo "Interface: $real_interface, IPv4 Address: $inner_ipv6" + inner_ipv6=$(echo $(ip addr show $real_interface) | grep -oE $ipv6_regex | grep -v "::1/" | cut -d" " -f2) + echo "Interface: $real_interface, IPv6 Address: $inner_ipv6" } @@ -368,10 +456,10 @@ if [[ $(cat /etc/hostname | cut -d"-" -f 3 | grep -c '^[0-9][0-9]') -gt 0 ]]; th else machineNumber=99 fi -agentServerInfoFile="/octopus-agent/octopus-agent.conf" +export agentServerInfoFile="/octopus-agent/octopus-agent.conf" #cat >/etc/environment.d/octopus-agent.conf <"$agentServerInfoFile" <