[init] 修改大量代码

This commit is contained in:
zeaslity
2023-11-13 16:50:50 +08:00
parent fe25545fc1
commit e2aee45ff1
4 changed files with 236 additions and 95 deletions

View File

@@ -1,10 +1,11 @@
#!/bin/bash
. ./wdd-lib-log.sh
. ./wdd-lib-sys.sh
octopus_agent_path=/usr/local/etc/octpus-agent
. "$octopus_agent_path/lib/wdd-lib-log.sh"
. "$octopus_agent_path/lib/wdd-lib-sys.sh"
host_arch_version=""
host_arch=""
cpu_arch=""
#### CollectSystemInfo ####
server_name=""
server_ip_pb_v4=""
@@ -27,9 +28,10 @@ io_speed=""
machine_id=""
arch_info=""
agent_version=""
os_bit=""
### tmp usage
io_avg=""
io_speed=""
public_ipv4=""
inner_ipv4=""
public_ipv6=""
@@ -37,7 +39,7 @@ inner_ipv6=""
country=""
region=""
city=""
org=""
net_provider=""
manage_port=""
machine_number=""
l_bit=""
@@ -52,6 +54,60 @@ io_test() {
(LANG=C dd if=/dev/zero of=benchtest_$$ bs=512k count=$1 conv=fdatasync && rm -f benchtest_$$) 2>&1 | awk -F, '{io=$NF} END { print io}' | sed 's/^[ \t]*//;s/[ \t]*$//'
}
####### 获取系统版本及64位或32位信息
check_sys() {
local sys_bit
sys_bit=$(uname -m)
case $sys_bit in
i[36]86)
os_bit="32"
cpu_arch="386"
;;
x86_64)
os_bit="64"
cpu_arch="amd64"
;;
*armv6*)
os_bit="arm"
cpu_arch="arm6"
;;
*armv7*)
os_bit="arm"
cpu_arch="arm7"
;;
*aarch64* | *armv8*)
os_bit="arm64"
cpu_arch="arm64"
;;
*)
error "
哈哈……这个 辣鸡脚本 不支持你的系统。 (-_-) \n
备注: 仅支持 Ubuntu 16+ / Debian 8+ / CentOS 7+ 系统
" && exit 1
;;
esac
## 判定Linux的发行版本
if [ -f /etc/redhat-release ]; then
host_arch_version="centos"
elif cat /etc/issue | grep -Eqi "debian"; then
host_arch_version="debian"
elif cat /etc/issue | grep -Eqi "ubuntu"; then
host_arch_version="ubuntu"
elif cat /etc/issue | grep -Eqi "centos|red hat|redhat"; then
host_arch_version="centos"
elif cat /proc/version | grep -Eqi "debian"; then
host_arch_version="debian"
elif cat /proc/version | grep -Eqi "ubuntu"; then
host_arch_version="ubuntu"
elif cat /proc/version | grep -Eqi "centos|red hat|redhat"; then
host_arch_version="centos"
else
host_arch_version=""
fi
return 0
}
#######################################
# description
# Arguments:
@@ -94,9 +150,11 @@ calc_size() {
#######################################
get_host_arch_info() {
FunctionStart "开始获取系统架构信息!"
[ -f /etc/redhat-release ] && awk '{print $0}' /etc/redhat-release && return
[ -f /etc/os-release ] && awk -F'[= "]' '/PRETTY_NAME/{print $3,$4,$5}' /etc/os-release && return
[ -f /etc/lsb-release ] && awk -F'[="]+' '/DESCRIPTION/{print $2}' /etc/lsb-release && return
FunctionEnd
}
@@ -137,8 +195,8 @@ start_io_test() {
ioraw3=$(echo $io3 | awk 'NR==1 {print $1}')
[ "$(echo $io3 | awk 'NR==1 {print $2}')" == "GB/s" ] && ioraw3=$(awk 'BEGIN{print '$ioraw3' * 1024}')
ioall=$(awk 'BEGIN{print '$ioraw1' + '$ioraw2' + '$ioraw3'}')
io_avg=$(awk 'BEGIN{printf "%.1f", '$ioall' / 3}')
log "I/O Speed(average) : $io_avg MB/s)"
io_speed=$(awk 'BEGIN{printf "%.1f", '$ioall' / 3}')
log "I/O Speed(average) : $io_speed MB/s)"
else
echo " $(_red "Not enough space for I/O Speed test!")"
fi
@@ -254,7 +312,7 @@ get_manage_port() {
# Globals:
# city
# country
# org
# net_provider
# public_ipv4
# region
# Arguments:
@@ -265,7 +323,7 @@ get_ipv4_info() {
FunctionStart "开始收集服务器IP信息"
# public ip info
org="$(wget -q -T10 -O- ipinfo.io/org)"
net_provider="$(wget -q -T10 -O- ipinfo.io/org)"
city="$(wget -q -T10 -O- ipinfo.io/city)"
country="$(wget -q -T10 -O- ipinfo.io/country)"
region="$(wget -q -T10 -O- ipinfo.io/region)"
@@ -281,17 +339,29 @@ get_ipv4_info() {
fi
# inner ipinfo
local 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}")
local interface_prefix=("eth[0-9]{1,2}" "ens[0-9]{1,3}" "eno[0-9]{1,3}" "enp[0-9]{1,2}" "enp[0-9]{1,2}s[0-9]{1,2}")
local real_interface="eth90"
local interface
for interface in "${interface_prefix[@]}"; do
if ip link show | grep -oE "${interface}" | head -1; then
real_interface=$(ip link show | grep -oE "${interface}" | head -1 | cut -d" " -f2)
echo "当前主机的真实内网网卡为 => [$real_interface]"
if command_exists ifconfig; then
log "使用ifconfig检测内部IP地址信息"
for interface in "${interface_prefix[@]}"; do
if ifconfig | grep -oqE "${interface}:"; then
real_interface=$(ifconfig | grep -E "${interface}:" | cut -d ":" -f1)
break
fi
done
fi
done
else
log "使用 ip link show检测内部IP地址信息"
for interface in "${interface_prefix[@]}"; do
if ip link show | grep -oqE "${interface}:"; then
real_interface=$(ip link show | grep -oE "${interface}:" | head -1 | cut -d" " -f2)
break
fi
done
fi
echo "当前主机的真实内网网卡为 => [$real_interface]"
# 提取IPv4地址CIDR格式
local ipv4_regex="inet[[:space:]](25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\/[0-9]{1,2}"
@@ -300,11 +370,11 @@ get_ipv4_info() {
local 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=$(ip addr show "$real_interface" | grep -oE "$ipv4_regex" | cut -d" " -f2)
inner_ipv4=$(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=$(ip addr show "$real_interface" | grep -oE "$ipv6_regex" | cut -d" " -f2)
inner_ipv6=$(ip addr show "$real_interface" | grep -oE "$ipv6_regex" | grep -v "::1" | cut -d" " -f2)
echo "Interface: $real_interface, IPv4 Address: $inner_ipv6"
FunctionEnd
@@ -323,14 +393,14 @@ get_ipv4_info() {
# cpu_virt
# disk_total_size
# disk_used_size
# freq
# kern
# cpu_freq
# kernel_info
# lbit
# load
# opsy
# os_info
# swap
# tcp_ctrl
# tram
# mem_total
# unused_ram
# unused_swap
# up
@@ -338,24 +408,24 @@ get_ipv4_info() {
# None
#######################################
collect_system_info() {
FunctionStart "开始收集系统信息!"
FunctionStart "开始收集系统信息!"
check_sys
check_sys
cpu_name=$(awk -F: '/model name/ {name=$2} END {print name}' /proc/cpuinfo | sed 's/^[ \t]*//;s/[ \t]*$//')
cores=$(awk -F: '/processor/ {core++} END {print core}' /proc/cpuinfo)
freq=$(awk -F'[ :]' '/cpu MHz/ {print $4;exit}' /proc/cpuinfo)
cpu_freq=$(awk -F'[ :]' '/cpu MHz/ {print $4;exit}' /proc/cpuinfo)
local c_cache
local cpu_aes
local cpu_virt
c_cache=$(awk -F: '/cache size/ {cache=$2} END {print cache}' /proc/cpuinfo | sed 's/^[ \t]*//;s/[ \t]*$//')
cpu_aes=$(grep -i 'aes' /proc/cpuinfo)
cpu_virt=$(grep -Ei 'vmx|svm' /proc/cpuinfo)
tram=$(
mem_total=$(
LANG=C
free | awk '/Mem/ {print $2}'
)
tram=$(calc_size "$tram")
mem_total=$(calc_size "$mem_total")
local unused_ram
unused_ram=$(
LANG=C
@@ -388,7 +458,7 @@ collect_system_info() {
uptime | head -1 | awk -F'load average:' '{print $2}' | sed 's/^[ \t]*//;s/[ \t]*$//'
)
fi
opsy=$(get_host_arch_info)
os_info=$(get_host_arch_info)
arch=$(uname -m)
local l_bit
if command_exists "getconf"; then
@@ -396,7 +466,7 @@ collect_system_info() {
else
echo "${arch}" | grep -q "64" && l_bit="64" || l_bit="32"
fi
kern=$(uname -r)
kernel_info=$(uname -r)
disk_total_size=$(
LANG=C
df -t simfs -t ext2 -t ext3 -t ext4 -t btrfs -t xfs -t vfat -t ntfs -t swap --total 2>/dev/null | grep total | awk '{ print $2 }'
@@ -409,7 +479,6 @@ collect_system_info() {
disk_used_size=$(calc_size "$disk_used_size")
tcp_ctrl=$(sysctl net.ipv4.tcp_congestion_control | awk -F ' ' '{print $3}')
local machine_number=""
if [[ $(cut -d"-" -f 3 </etc/hostname | grep -c '^[0-9][0-9]') -gt 0 ]]; then
machine_number=$(cut -d"-" -f 3 </etc/hostname)
else
@@ -437,13 +506,21 @@ get_agent_version() {
FunctionStart "获取Agent的版本信息"
local file
for file in ${octopus_agent_path}; do
if grep -q "octopus-agent_" <"${file}"; then
agent_version=$(cut -d "_" -f4- <"${file}")
log "获取到的Agent版本信息为 => ${agent_version}"
for file in "${octopus_agent_path}"/*; do
if [[ ! -d ${file} ]]; then
if echo "$file" | grep "octopus-agent_linux_amd64_"; then
agent_version=$(echo "${file}" | cut -d "_" -f4-)
break
fi
fi
done
if [[ $agent_version -eq "" ]]; then
agent_version=2011-11-11-11-11-11
fi
log "获取到的Agent版本信息为 => ${agent_version}"
FunctionEnd
}
@@ -458,22 +535,22 @@ get_agent_version() {
# cpu_name
# disk_total_size
# disk_used_size
# freq
# host_arch
# cpu_freq
# cpu_arch
# inner_ipv4
# inner_ipv6
# io_avg
# kern
# io_speed
# kernel_info
# lbit
# machine_number
# manage_port
# opsy
# org
# os_info
# net_provider
# public_ipv4
# public_ipv6
# region
# tcp_ctrl
# tram
# mem_total
# virt
# Arguments:
# None
@@ -482,6 +559,8 @@ main() {
# todo
# start_iotest
check_sys
get_manage_port
collect_system_info
@@ -492,34 +571,43 @@ main() {
get_agent_version
local agent_server_info_file="/octopus-agent/octopus-agent.conf"
local agent_server_info_file="$octopus_agent_path/octopus-agent.conf"
touch "$agent_server_info_file"
cat >"$agent_server_info_file" <<EOF
serverName: ${city}-${host_arch}-${machine_number}
serverIpPbV4: $public_ipv4
serverIpInV4: $inner_ipv4
serverIpPbV6: $public_ipv6
serverIpInV6: $inner_ipv6
serverName: "${city}-${cpu_arch}-${machine_number}"
serverIpPbV4: "$public_ipv4"
serverIpInV4: "$inner_ipv4"
serverIpPbV6: "$public_ipv6"
serverIpInV6: "$inner_ipv6"
location: "$city $region $country"
provider: $org
managePort: $manage_port
cpuCore: "$cores @ $freq MHz"
provider: "$net_provider"
managePort: "$manage_port"
cpuCore: "$cores @ $cpu_freq MHz"
cpuBrand: "$cpu_name"
memoryTotal: $tram
diskTotal: $disk_total_size
diskUsage: $disk_used_size
archInfo: "$arch ($l_bit Bit)"
osInfo: "$opsy"
osKernelInfo: $kern
tcpControl: $tcp_ctrl
virtualization: $virt
ioSpeed: "$io_avg MB/s"
machineId: $(cat /etc/machine-id)
agentVersion: ${agent_version}
memoryTotal: "$mem_total"
diskTotal: "$disk_total_size"
diskUsage: "$disk_used_size"
archInfo: "$arch ($os_bit Bit)"
osInfo: "$os_info"
osKernelInfo: "$kernel_info"
tcpControl: "$tcp_ctrl"
virtualization: "$virt"
ioSpeed: "$io_speed MB/s"
machineId: "$(cat /etc/machine-id)"
agentVersion: "${agent_version}"
EOF
log "agent server info has collect complete!"
log "file is => $agent_server_info_file"
echo ""
SplitGreen "查看Agent的环境信息"
cat - 1>&2 <<EOF
cat $agent_server_info_file
EOF
}
main