COLT_CMDB_linux_redis_nopass.sh

#!/bin/bash
#IT_BEGIN
#IT_TYPE=1
#原型指标
#IT MIDWARE_REDIS_IPADDRESS|ipAddress[{$redispass}]
#IT MIDWARE_REDIS_hostname|hostname[{$redispass}]
#IT MIDWARE_REDIS_VERSION|version[{$redispass}]
#IT MIDWARE_REDIS_INSTANCENAME|instancename[{$redispass}]
#IT MIDWARE_REDIS_PID|pid[{$redispass}]
#IT MIDWARE_REDIS_INSTALLDIR|install_dir[{$redispass}]
#IT MIDWARE_REDIS_CONFDIR|conf_dir[{$redispass}]
#IT MIDWARE_REDIS_USER|user[{$redispass}]
#IT MIDWARE_REDIS_CONFFILE|conf_file[{$redispass}]
#IT MIDWARE_REDIS_FREE|free[{$redispass}]
#IT MIDWARE_REDIS_PIDFILE|pid_file[{$redispass}]
#IT MIDWARE_REDIS_DATABASENUM|database_num[{$redispass}]
#IT MIDWARE_REDIS_MEMINFO|meminfo[{$redispass}]
#IT MIDWARE_REDIS_TCPKEEPALIVE|tcp_keepalive[{$redispass}]
#IT MIDWARE_REDIS_DAEMONIZE|daemonize[{$redispass}]
#IT MIDWARE_REDIS_LOGFILE|logfile[{$redispass}]
#IT MIDWARE_REDIS_BIND|bind[{$redispass}]
#IT MIDWARE_REDIS_APPENDONLY|appendonly[{$redispass}]
#IT MIDWARE_REDIS_SAVE|save[{$redispass}]
#IT MIDWARE_REDIS_VAL|val[{$redispass}]
#IT MIDWARE_REDIS_appendfsync|appendfsync[{$redispass}]
#IT MIDWARE_REDIS_appendfilename|appendfilename[{$redispass}]
#IT MIDWARE_REDIS_dbfilename|dbfilename[{$redispass}]
#IT MIDWARE_REDIS_timeout|timeout[{$redispass}]
#IT MIDWARE_REDIS_maxclients|maxclients[{$redispass}]
#IT MIDWARE_REDIS_clusterenabled|clusterenabled[{$redispass}]
#IT MIDWARE_REDIS_PORT|port[{$redispass}]
#IT MIDWARE_REDIS_processpath|processpath[{$redispass}]
#IT MIDWARE_REDIS_datapath|datapath[{$redispass}]
#IT_END

shname=$(basename "$0")
ScriptName="_X(g=$shname,p=cmdb,t=script,f=0)"
redispass="${1}"
tmpdir="/tmp/redis_collect_${$}"

cleanup() {
    rm -rf "${tmpdir}"
}
trap cleanup EXIT

mkdir -p "${tmpdir}"

# 获取Redis进程信息
get_redis_process() {
    pgrep -af "redis-server" | grep -vE "redis-(cli|check|bench)" | head -1
}

# 基础信息获取
redis_process=$(get_redis_process)
[ -z "$redis_process" ] && echo "ERROR: Redis process not found!" >&2 && exit 1

pid=$(awk '{print $1}' <<< "$redis_process")
exec_cmd=$(awk '{for(i=2;i<=NF;i++) if($i ~ /^redis-server/) {print $i; exit}}' <<< "$redis_process")
install_dir=$(readlink -f /proc/"$pid"/exe | sed 's/\/bin\/redis-server$//')
[ -z "$install_dir" ] && install_dir=$(find / -name "redis-server" -exec dirname {} \; 2>/dev/null |awk -F'/bin' '{print $1}'| head -1)
port=$(awk '{for(i=1;i<=NF;i++) if($i ~ /:[0-9]+$/) {print $i; exit}}' <<< "$redis_process" | cut -d: -f2)

# 构建redis-cli命令基础
redis_cli_cmd() {
    local cmd="${install_dir}/bin/redis-cli -p $port"
    [ -n "$redispass" ] && cmd+=" -a $redispass --no-auth-warning"
    echo "$cmd"
}

# 配置获取函数
config_get() {
    local config_name="$1"
    local redis_cmd=$(redis_cli_cmd)
    $redis_cmd CONFIG GET "$config_name" 2>"${tmpdir}/error.log" | \
    awk 'BEGIN{RS="\\r?\\n";ORS="";flag=0;IGNORECASE=1} 
         {if(flag==1) {print $0; exit} 
         if(tolower($1) == tolower(config_name)) {flag=1}}' config_name="$config_name"
}

# 获取所有配置项(带密码验证检查)
check_auth() {
    local redis_cmd=$(redis_cli_cmd)
    $redis_cmd PING 2>&1 | grep -q "PONG"
}

if check_auth; then
    auth_valid=true
else
    auth_valid=false
    echo "WARNING: Redis authentication failed or not required" >&2
fi

# 获取配置信息(仅在认证有效时)
conf_file=""
if $auth_valid; then
    conf_file=$(config_get "config_file")
    [ -z "$conf_file" ] && conf_file=$(awk -F: '/^config_file/ {print $2}' <<< "$(redis_cli_cmd) INFO ALL 2>&1" | tr -d '\r')
fi

# 多维度信息采集
hostname=$(hostname)
ip=$(hostname -I 2>/dev/null | tr ' ' ',' | sed 's/,$//')
[ -z "$ip" ] && ip=$(ip addr show 2>/dev/null | grep -w inet | grep -vE '127.0.0.1|inet6' | awk '{print $2}' | cut -d/ -f1 | tr '\n' ',' | sed 's/,$//')

# 配置参数获取(兼容无密码情况)
declare -A redis_config=(
    ["daemonize"]=$($auth_valid && config_get "daemonize")
    ["logfile"]=$($auth_valid && config_get "logfile")
    ["bind"]=$($auth_valid && config_get "bind" | tr ' ' ',')
    ["appendonly"]=$($auth_valid && config_get "appendonly")
    ["save"]=$($auth_valid && config_get "save" | tr ' ' ',')
    ["appendfsync"]=$($auth_valid && config_get "appendfsync")
    ["appendfilename"]=$($auth_valid && config_get "appendfilename")
    ["dbfilename"]=$($auth_valid && config_get "dbfilename")
    ["timeout"]=$($auth_valid && config_get "timeout")
    ["maxclients"]=$($auth_valid && config_get "maxclients")
    ["cluster-enabled"]=$($auth_valid && config_get "cluster-enabled")
    ["dir"]=$($auth_valid && config_get "dir")
    ["pidfile"]=$($auth_valid && config_get "pidfile")
    ["tcp-keepalive"]=$($auth_valid && config_get "tcp-keepalive")
    ["databases"]=$($auth_valid && config_get "databases")
)

# 系统信息采集
user=$(stat -c "%U" "/proc/$pid" 2>/dev/null || ps -o user= -p "$pid" | tr -d ' ')
free=$(free -m | awk '/Mem:/ {print $2}')
meminfo=$(grep -m1 DirectMap2M /proc/meminfo | awk '{print $2}')
val=$(awk "BEGIN {printf \"%.2f\", ${meminfo}/1024/1024}")GB

# 处理路径信息
conf_dir=$(dirname "$conf_file")
[ "$conf_dir" = "." ] && conf_dir="$install_dir"
processpath=$(readlink -f "/proc/$pid/cwd")
version=$("$install_dir/bin/redis-server" --version 2>&1 | grep -oE "v=([0-9]+\.){1,}[0-9]+"| head -1 | cut -d'=' -f2)

# 输出结果
echo COL_DETAIL_START:
echo "type[$ScriptName,$redispass]|+|redis"
echo "ipAddress[$ScriptName,$redispass]|+|$ip"
echo "hostname[$ScriptName,$redispass]|+|$hostname"
echo "version[$ScriptName,$redispass]|+|redis-$version"
echo "instancename[$ScriptName,$redispass]|+|redis_${port}"
echo "pid[$ScriptName,$redispass]|+|$pid"
echo "install_dir[$ScriptName,$redispass]|+|$install_dir"
echo "conf_dir[$ScriptName,$redispass]|+|${conf_dir}"
echo "user[$ScriptName,$redispass]|+|$user"
echo "conf_file[$ScriptName,$redispass]|+|${conf_file}"
echo "free[$ScriptName,$redispass]|+|$free"
echo "pid_file[$ScriptName,$redispass]|+|${redis_config[pidfile]}"
echo "database_num[$ScriptName,$redispass]|+|${redis_config[databases]}"
echo "meminfo[$ScriptName,$redispass]|+|$meminfo"
echo "val[$ScriptName,$redispass]|+|${val}"
echo "tcp_keepalive[$ScriptName,$redispass]|+|${redis_config[tcp-keepalive]}"
echo "daemonize[$ScriptName,$redispass]|+|${redis_config[daemonize]}"
echo "logfile[$ScriptName,$redispass]|+|${redis_config[logfile]}"
echo "save[$ScriptName,$redispass]|+|${redis_config[save]}"
echo "bind[$ScriptName,$redispass]|+|${redis_config[bind]}"
echo "appendonly[$ScriptName,$redispass]|+|${redis_config[appendonly]}"
echo "appendfsync[$ScriptName,$redispass]|+|${redis_config[appendfsync]}" 
echo "appendfilename[$ScriptName,$redispass]|+|${redis_config[appendfilename]}"
echo "dbfilename[$ScriptName,$redispass]|+|${redis_config[dbfilename]}"
echo "timeout[$ScriptName,$redispass]|+|${redis_config[timeout]}"
echo "maxclients[$ScriptName,$redispass]|+|${redis_config[maxclients]}"
echo "clusterenabled[$ScriptName,$redispass]|+|${redis_config[cluster-enabled]}"
echo "port[$ScriptName,$redispass]|+|$port"
echo "processpath[$ScriptName,$redispass]|+|$processpath"
echo "datapath[$ScriptName,$redispass]|+|${redis_config[dir]}"
echo COL_DETAIL_END:
exit 0

再10.14.1.232服务器执行结果如下:

[root@localhost ~]# sh nopass_redis.sh 
WARNING: Redis authentication failed or not required
COL_DETAIL_START:
type[_X(g=nopass_redis.sh,p=cmdb,t=script,f=0),]|+|redis
ipAddress[_X(g=nopass_redis.sh,p=cmdb,t=script,f=0),]|+|10.14.1.232
hostname[_X(g=nopass_redis.sh,p=cmdb,t=script,f=0),]|+|localhost.localdomain
version[_X(g=nopass_redis.sh,p=cmdb,t=script,f=0),]|+|redis-7.2.3
instancename[_X(g=nopass_redis.sh,p=cmdb,t=script,f=0),]|+|redis_16379
pid[_X(g=nopass_redis.sh,p=cmdb,t=script,f=0),]|+|25008
install_dir[_X(g=nopass_redis.sh,p=cmdb,t=script,f=0),]|+|/home/ntciom/redis
conf_dir[_X(g=nopass_redis.sh,p=cmdb,t=script,f=0),]|+|/home/ntciom/redis
user[_X(g=nopass_redis.sh,p=cmdb,t=script,f=0),]|+|root
conf_file[_X(g=nopass_redis.sh,p=cmdb,t=script,f=0),]|+|
free[_X(g=nopass_redis.sh,p=cmdb,t=script,f=0),]|+|15884
pid_file[_X(g=nopass_redis.sh,p=cmdb,t=script,f=0),]|+|
database_num[_X(g=nopass_redis.sh,p=cmdb,t=script,f=0),]|+|
meminfo[_X(g=nopass_redis.sh,p=cmdb,t=script,f=0),]|+|5050368
val[_X(g=nopass_redis.sh,p=cmdb,t=script,f=0),]|+|4.82GB
tcp_keepalive[_X(g=nopass_redis.sh,p=cmdb,t=script,f=0),]|+|
daemonize[_X(g=nopass_redis.sh,p=cmdb,t=script,f=0),]|+|
logfile[_X(g=nopass_redis.sh,p=cmdb,t=script,f=0),]|+|
save[_X(g=nopass_redis.sh,p=cmdb,t=script,f=0),]|+|
bind[_X(g=nopass_redis.sh,p=cmdb,t=script,f=0),]|+|
appendonly[_X(g=nopass_redis.sh,p=cmdb,t=script,f=0),]|+|
appendfsync[_X(g=nopass_redis.sh,p=cmdb,t=script,f=0),]|+|
appendfilename[_X(g=nopass_redis.sh,p=cmdb,t=script,f=0),]|+|
dbfilename[_X(g=nopass_redis.sh,p=cmdb,t=script,f=0),]|+|
timeout[_X(g=nopass_redis.sh,p=cmdb,t=script,f=0),]|+|
maxclients[_X(g=nopass_redis.sh,p=cmdb,t=script,f=0),]|+|
clusterenabled[_X(g=nopass_redis.sh,p=cmdb,t=script,f=0),]|+|
port[_X(g=nopass_redis.sh,p=cmdb,t=script,f=0),]|+|16379
processpath[_X(g=nopass_redis.sh,p=cmdb,t=script,f=0),]|+|/home/ntciom/redis/cluster
datapath[_X(g=nopass_redis.sh,p=cmdb,t=script,f=0),]|+|
COL_DETAIL_END:
[root@localhost ~]# sh nopass_redis.sh "Kw&nMSMYju%2v5NhnV"
COL_DETAIL_START:
type[_X(g=nopass_redis.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV]|+|redis
ipAddress[_X(g=nopass_redis.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV]|+|10.14.1.232
hostname[_X(g=nopass_redis.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV]|+|localhost.localdomain
version[_X(g=nopass_redis.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV]|+|redis-7.2.3
instancename[_X(g=nopass_redis.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV]|+|redis_16379
pid[_X(g=nopass_redis.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV]|+|25008
install_dir[_X(g=nopass_redis.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV]|+|/home/ntciom/redis
conf_dir[_X(g=nopass_redis.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV]|+|/home/ntciom/redis
user[_X(g=nopass_redis.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV]|+|root
conf_file[_X(g=nopass_redis.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV]|+|
free[_X(g=nopass_redis.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV]|+|15884
pid_file[_X(g=nopass_redis.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV]|+|/var/run/redis_16379.pid
database_num[_X(g=nopass_redis.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV]|+|1
meminfo[_X(g=nopass_redis.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV]|+|5050368
val[_X(g=nopass_redis.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV]|+|4.82GB
tcp_keepalive[_X(g=nopass_redis.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV]|+|300
daemonize[_X(g=nopass_redis.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV]|+|yes
logfile[_X(g=nopass_redis.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV]|+|/home/ntciom/redis/cluster/log/16379.log
save[_X(g=nopass_redis.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV]|+|3600,1,300,100,60,10000
bind[_X(g=nopass_redis.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV]|+|0.0.0.0
appendonly[_X(g=nopass_redis.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV]|+|no
appendfsync[_X(g=nopass_redis.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV]|+|everysec
appendfilename[_X(g=nopass_redis.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV]|+|appendonly.aof
dbfilename[_X(g=nopass_redis.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV]|+|dump_16379.rdb
timeout[_X(g=nopass_redis.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV]|+|0
maxclients[_X(g=nopass_redis.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV]|+|10000
clusterenabled[_X(g=nopass_redis.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV]|+|yes
port[_X(g=nopass_redis.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV]|+|16379
processpath[_X(g=nopass_redis.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV]|+|/home/ntciom/redis/cluster
datapath[_X(g=nopass_redis.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV]|+|/home/ntciom/redis/cluster
COL_DETAIL_END:

---补充最大内存取值到脚本中---------20250512-------------------------------

#!/bin/bash
#IT_BEGIN
#IT_TYPE=1
#原型指标
#IT MIDWARE_REDIS_IPADDRESS|ipAddress[{$redispass}]
#IT MIDWARE_REDIS_hostname|hostname[{$redispass}]
#IT MIDWARE_REDIS_VERSION|version[{$redispass}]
#IT MIDWARE_REDIS_INSTANCENAME|instancename[{$redispass}]
#IT MIDWARE_REDIS_PID|pid[{$redispass}]
#IT MIDWARE_REDIS_INSTALLDIR|install_dir[{$redispass}]
#IT MIDWARE_REDIS_CONFDIR|conf_dir[{$redispass}]
#IT MIDWARE_REDIS_USER|user[{$redispass}]
#IT MIDWARE_REDIS_CONFFILE|conf_file[{$redispass}]
#IT MIDWARE_REDIS_FREE|free[{$redispass}]
#IT MIDWARE_REDIS_PIDFILE|pid_file[{$redispass}]
#IT MIDWARE_REDIS_DATABASENUM|database_num[{$redispass}]
#IT MIDWARE_REDIS_MEMINFO|meminfo[{$redispass}]
#IT MIDWARE_REDIS_TCPKEEPALIVE|tcp_keepalive[{$redispass}]
#IT MIDWARE_REDIS_DAEMONIZE|daemonize[{$redispass}]
#IT MIDWARE_REDIS_LOGFILE|logfile[{$redispass}]
#IT MIDWARE_REDIS_BIND|bind[{$redispass}]
#IT MIDWARE_REDIS_APPENDONLY|appendonly[{$redispass}]
#IT MIDWARE_REDIS_SAVE|save[{$redispass}]
#IT MIDWARE_REDIS_VAL|val[{$redispass}]
#IT MIDWARE_REDIS_appendfsync|appendfsync[{$redispass}]
#IT MIDWARE_REDIS_appendfilename|appendfilename[{$redispass}]
#IT MIDWARE_REDIS_dbfilename|dbfilename[{$redispass}]
#IT MIDWARE_REDIS_timeout|timeout[{$redispass}]
#IT MIDWARE_REDIS_maxclients|maxclients[{$redispass}]
#IT MIDWARE_REDIS_clusterenabled|clusterenabled[{$redispass}]
#IT MIDWARE_REDIS_PORT|port[{$redispass}]
#IT MIDWARE_REDIS_processpath|processpath[{$redispass}]
#IT MIDWARE_REDIS_datapath|datapath[{$redispass}]
#新增的最大内存指标
#IT MIDWARE_REDIS_maxmemory|maxmemory[{$redispass}]  
#IT_END

shname=$(basename "$0")
ScriptName="_X(g=$shname,p=cmdb,t=script,f=0)"
redispass="${1}"
tmpdir="/tmp/redis_collect_${$}"

cleanup() {
    rm -rf "${tmpdir}"
}
trap cleanup EXIT

mkdir -p "${tmpdir}"

# 获取Redis进程信息
get_redis_process() {
    pgrep -af "redis-server" | grep -vE "redis-(cli|check|bench)" | head -1
}

# 基础信息获取
redis_process=$(get_redis_process)
[ -z "$redis_process" ] && echo "ERROR: Redis process not found!" >&2 && exit 1

pid=$(awk '{print $1}' <<< "$redis_process")
exec_cmd=$(awk '{for(i=2;i<=NF;i++) if($i ~ /^redis-server/) {print $i; exit}}' <<< "$redis_process")
install_dir=$(readlink -f /proc/"$pid"/exe | sed 's/\/bin\/redis-server$//')
[ -z "$install_dir" ] && install_dir=$(find / -name "redis-server" -exec dirname {} \; 2>/dev/null |awk -F'/bin' '{print $1}'| head -1)
port=$(awk '{for(i=1;i<=NF;i++) if($i ~ /:[0-9]+$/) {print $i; exit}}' <<< "$redis_process" | cut -d: -f2)

# 构建redis-cli命令基础
redis_cli_cmd() {
    local cmd="${install_dir}/bin/redis-cli -p $port"
    [ -n "$redispass" ] && cmd+=" -a $redispass --no-auth-warning"
    echo "$cmd"
}

# 配置获取函数
config_get() {
    local config_name="$1"
    local redis_cmd=$(redis_cli_cmd)
    $redis_cmd CONFIG GET "$config_name" 2>"${tmpdir}/error.log" | \
    awk 'BEGIN{RS="\\r?\\n";ORS="";flag=0;IGNORECASE=1} 
         {if(flag==1) {print $0; exit} 
         if(tolower($1) == tolower(config_name)) {flag=1}}' config_name="$config_name"
}

# 获取所有配置项(带密码验证检查)
check_auth() {
    local redis_cmd=$(redis_cli_cmd)
    $redis_cmd PING 2>&1 | grep -q "PONG"
}

if check_auth; then
    auth_valid=true
else
    auth_valid=false
    echo "WARNING: Redis authentication failed or not required" >&2
fi

# 获取配置信息(仅在认证有效时)
conf_file=""
if $auth_valid; then
    conf_file=$(config_get "config_file")
    [ -z "$conf_file" ] && conf_file=$(awk -F: '/^config_file/ {print $2}' <<< "$(redis_cli_cmd) INFO ALL 2>&1" | tr -d '\r')
fi

# 多维度信息采集
hostname=$(hostname)
ip=$(hostname -I 2>/dev/null | tr ' ' ',' | sed 's/,$//')
[ -z "$ip" ] && ip=$(ip addr show 2>/dev/null | grep -w inet | grep -vE '127.0.0.1|inet6' | awk '{print $2}' | cut -d/ -f1 | tr '\n' ',' | sed 's/,$//')

# 配置参数获取(兼容无密码情况)
declare -A redis_config=(
    ["daemonize"]=$($auth_valid && config_get "daemonize")
    ["logfile"]=$($auth_valid && config_get "logfile")
    ["bind"]=$($auth_valid && config_get "bind" | tr ' ' ',')
    ["appendonly"]=$($auth_valid && config_get "appendonly")
    ["save"]=$($auth_valid && config_get "save" | tr ' ' ',')
    ["appendfsync"]=$($auth_valid && config_get "appendfsync")
    ["appendfilename"]=$($auth_valid && config_get "appendfilename")
    ["dbfilename"]=$($auth_valid && config_get "dbfilename")
    ["timeout"]=$($auth_valid && config_get "timeout")
    ["maxclients"]=$($auth_valid && config_get "maxclients")
    # 新增maxmemory配置项
    ["maxmemory"]=$($auth_valid && config_get "maxmemory")  
    ["cluster-enabled"]=$($auth_valid && config_get "cluster-enabled")
    ["dir"]=$($auth_valid && config_get "dir")
    ["pidfile"]=$($auth_valid && config_get "pidfile")
    ["tcp-keepalive"]=$($auth_valid && config_get "tcp-keepalive")
    ["databases"]=$($auth_valid && config_get "databases")
)

# 系统信息采集
user=$(stat -c "%U" "/proc/$pid" 2>/dev/null || ps -o user= -p "$pid" | tr -d ' ')
free=$(free -m | awk '/Mem:/ {print $2}')
meminfo=$(grep -m1 DirectMap2M /proc/meminfo | awk '{print $2}')
val=$(awk "BEGIN {printf \"%.2f\", ${meminfo}/1024/1024}")GB

# 处理路径信息
conf_dir=$(dirname "$conf_file")
[ "$conf_dir" = "." ] && conf_dir="$install_dir"
processpath=$(readlink -f "/proc/$pid/cwd")
version=$("$install_dir/bin/redis-server" --version 2>&1 | grep -oE "v=([0-9]+\.){1,}[0-9]+"| head -1 | cut -d'=' -f2)

# 输出结果
echo COL_DETAIL_START:
echo "type[$ScriptName,$redispass]|+|redis"
echo "ipAddress[$ScriptName,$redispass]|+|$ip"
echo "hostname[$ScriptName,$redispass]|+|$hostname"
echo "version[$ScriptName,$redispass]|+|redis-$version"
echo "instancename[$ScriptName,$redispass]|+|redis_${port}"
echo "pid[$ScriptName,$redispass]|+|$pid"
echo "install_dir[$ScriptName,$redispass]|+|$install_dir"
echo "conf_dir[$ScriptName,$redispass]|+|${conf_dir}"
echo "user[$ScriptName,$redispass]|+|$user"
echo "conf_file[$ScriptName,$redispass]|+|${conf_file}"
echo "free[$ScriptName,$redispass]|+|$free"
echo "pid_file[$ScriptName,$redispass]|+|${redis_config[pidfile]}"
echo "database_num[$ScriptName,$redispass]|+|${redis_config[databases]}"
echo "meminfo[$ScriptName,$redispass]|+|$meminfo"
echo "val[$ScriptName,$redispass]|+|${val}"
echo "tcp_keepalive[$ScriptName,$redispass]|+|${redis_config[tcp-keepalive]}"
echo "daemonize[$ScriptName,$redispass]|+|${redis_config[daemonize]}"
echo "logfile[$ScriptName,$redispass]|+|${redis_config[logfile]}"
echo "save[$ScriptName,$redispass]|+|${redis_config[save]}"
echo "bind[$ScriptName,$redispass]|+|${redis_config[bind]}"
echo "appendonly[$ScriptName,$redispass]|+|${redis_config[appendonly]}"
echo "appendfsync[$ScriptName,$redispass]|+|${redis_config[appendfsync]}" 
echo "appendfilename[$ScriptName,$redispass]|+|${redis_config[appendfilename]}"
echo "dbfilename[$ScriptName,$redispass]|+|${redis_config[dbfilename]}"
echo "timeout[$ScriptName,$redispass]|+|${redis_config[timeout]}"
echo "maxclients[$ScriptName,$redispass]|+|${redis_config[maxclients]}"
# 新增的输出行
echo "maxmemory[$ScriptName,$redispass]|+|${redis_config[maxmemory]}"  
echo "clusterenabled[$ScriptName,$redispass]|+|${redis_config[cluster-enabled]}"
echo "port[$ScriptName,$redispass]|+|$port"
echo "processpath[$ScriptName,$redispass]|+|$processpath"
echo "datapath[$ScriptName,$redispass]|+|${redis_config[dir]}"
echo COL_DETAIL_END:
exit 0

10.14.1.99执行结果如下:

[root@omptest99 ~]# sh redis_20250512.sh 
WARNING: Redis authentication failed or not required
COL_DETAIL_START:
type[_X(g=redis_20250512.sh,p=cmdb,t=script,f=0),]|+|redis
ipAddress[_X(g=redis_20250512.sh,p=cmdb,t=script,f=0),]|+|10.14.1.99
hostname[_X(g=redis_20250512.sh,p=cmdb,t=script,f=0),]|+|omptest99
version[_X(g=redis_20250512.sh,p=cmdb,t=script,f=0),]|+|redis-7.2.3
instancename[_X(g=redis_20250512.sh,p=cmdb,t=script,f=0),]|+|redis_16379
pid[_X(g=redis_20250512.sh,p=cmdb,t=script,f=0),]|+|487
install_dir[_X(g=redis_20250512.sh,p=cmdb,t=script,f=0),]|+|/home/ntciom/redis
conf_dir[_X(g=redis_20250512.sh,p=cmdb,t=script,f=0),]|+|/home/ntciom/redis
user[_X(g=redis_20250512.sh,p=cmdb,t=script,f=0),]|+|root
conf_file[_X(g=redis_20250512.sh,p=cmdb,t=script,f=0),]|+|
free[_X(g=redis_20250512.sh,p=cmdb,t=script,f=0),]|+|15884
pid_file[_X(g=redis_20250512.sh,p=cmdb,t=script,f=0),]|+|
database_num[_X(g=redis_20250512.sh,p=cmdb,t=script,f=0),]|+|
meminfo[_X(g=redis_20250512.sh,p=cmdb,t=script,f=0),]|+|5054464
val[_X(g=redis_20250512.sh,p=cmdb,t=script,f=0),]|+|4.82GB
tcp_keepalive[_X(g=redis_20250512.sh,p=cmdb,t=script,f=0),]|+|
daemonize[_X(g=redis_20250512.sh,p=cmdb,t=script,f=0),]|+|
logfile[_X(g=redis_20250512.sh,p=cmdb,t=script,f=0),]|+|
save[_X(g=redis_20250512.sh,p=cmdb,t=script,f=0),]|+|
bind[_X(g=redis_20250512.sh,p=cmdb,t=script,f=0),]|+|
appendonly[_X(g=redis_20250512.sh,p=cmdb,t=script,f=0),]|+|
appendfsync[_X(g=redis_20250512.sh,p=cmdb,t=script,f=0),]|+|
appendfilename[_X(g=redis_20250512.sh,p=cmdb,t=script,f=0),]|+|
dbfilename[_X(g=redis_20250512.sh,p=cmdb,t=script,f=0),]|+|
timeout[_X(g=redis_20250512.sh,p=cmdb,t=script,f=0),]|+|
maxclients[_X(g=redis_20250512.sh,p=cmdb,t=script,f=0),]|+|
maxmemory[_X(g=redis_20250512.sh,p=cmdb,t=script,f=0),]|+|
clusterenabled[_X(g=redis_20250512.sh,p=cmdb,t=script,f=0),]|+|
port[_X(g=redis_20250512.sh,p=cmdb,t=script,f=0),]|+|16379
processpath[_X(g=redis_20250512.sh,p=cmdb,t=script,f=0),]|+|/home/ntciom/redis
datapath[_X(g=redis_20250512.sh,p=cmdb,t=script,f=0),]|+|
COL_DETAIL_END:
[root@omptest99 ~]# sh redis_20250512.sh "Kw&nMSMYju%2v5NhnV"
COL_DETAIL_START:
type[_X(g=redis_20250512.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV]|+|redis
ipAddress[_X(g=redis_20250512.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV]|+|10.14.1.99
hostname[_X(g=redis_20250512.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV]|+|omptest99
version[_X(g=redis_20250512.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV]|+|redis-7.2.3
instancename[_X(g=redis_20250512.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV]|+|redis_16379
pid[_X(g=redis_20250512.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV]|+|487
install_dir[_X(g=redis_20250512.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV]|+|/home/ntciom/redis
conf_dir[_X(g=redis_20250512.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV]|+|/home/ntciom/redis
user[_X(g=redis_20250512.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV]|+|root
conf_file[_X(g=redis_20250512.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV]|+|
free[_X(g=redis_20250512.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV]|+|15884
pid_file[_X(g=redis_20250512.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV]|+|/var/run/redis_16379.pid
database_num[_X(g=redis_20250512.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV]|+|16
meminfo[_X(g=redis_20250512.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV]|+|5054464
val[_X(g=redis_20250512.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV]|+|4.82GB
tcp_keepalive[_X(g=redis_20250512.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV]|+|300
daemonize[_X(g=redis_20250512.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV]|+|yes
logfile[_X(g=redis_20250512.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV]|+|
save[_X(g=redis_20250512.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV]|+|3600,1,300,100,60,10000
bind[_X(g=redis_20250512.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV]|+|*,-::*
appendonly[_X(g=redis_20250512.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV]|+|no
appendfsync[_X(g=redis_20250512.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV]|+|everysec
appendfilename[_X(g=redis_20250512.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV]|+|appendonly.aof
dbfilename[_X(g=redis_20250512.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV]|+|dump.rdb
timeout[_X(g=redis_20250512.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV]|+|0
maxclients[_X(g=redis_20250512.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV]|+|10000
maxmemory[_X(g=redis_20250512.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV]|+|0
clusterenabled[_X(g=redis_20250512.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV]|+|no
port[_X(g=redis_20250512.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV]|+|16379
processpath[_X(g=redis_20250512.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV]|+|/home/ntciom/redis
datapath[_X(g=redis_20250512.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV]|+|/home/ntciom/redis
COL_DETAIL_END:

-----20250520----陶京修改版本脚本----且同步109环境中----COLT_CMDB_linux_redis_20250520.sh

#!/bin/bash
#IT_BEGIN
#IT_TYPE=3
#IT MIDWARE_REDIS_DISC|discovery.redis[disc]
#原型指标
#IT MIDWARE_REDIS_IPADDRESS|ipAddress[{$redispass},{#port}]
#IT MIDWARE_REDIS_hostname|hostname[{$redispass},{#port}]
#IT MIDWARE_REDIS_VERSION|version[{$redispass},{#port}]
#IT MIDWARE_REDIS_RUNMode|redisMode[{$redispass},{#port}]
#IT MIDWARE_REDIS_NODEType|nodeType[{$redispass},{#port}]
#IT MIDWARE_REDIS_NODES|nodes[{$redispass},{#port}]
#IT MIDWARE_REDIS_INSTANCENAME|instancename[{$redispass},{#port}]
#IT MIDWARE_REDIS_PID|pid[{$redispass},{#port}]
#IT MIDWARE_REDIS_INSTALLDIR|install_dir[{$redispass},{#port}]
#IT MIDWARE_REDIS_CONFDIR|conf_dir[{$redispass},{#port}]
#IT MIDWARE_REDIS_USER|user[{$redispass},{#port}]
#IT MIDWARE_REDIS_CONFFILE|conf_file[{$redispass},{#port}]
#IT MIDWARE_REDIS_FREE|free[{$redispass},{#port}]
#IT MIDWARE_REDIS_PIDFILE|pid_file[{$redispass},{#port}]
#IT MIDWARE_REDIS_DATABASENUM|database_num[{$redispass},{#port}]
#IT MIDWARE_REDIS_MEMINFO|meminfo[{$redispass},{#port}]
#IT MIDWARE_REDIS_TCPKEEPALIVE|tcp_keepalive[{$redispass},{#port}]
#IT MIDWARE_REDIS_DAEMONIZE|daemonize[{$redispass},{#port}]
#IT MIDWARE_REDIS_LOGFILE|logfile[{$redispass},{#port}]
#IT MIDWARE_REDIS_BIND|bind[{$redispass},{#port}]
#IT MIDWARE_REDIS_APPENDONLY|appendonly[{$redispass},{#port}]
#IT MIDWARE_REDIS_SAVE|save[{$redispass},{#port}]
#IT MIDWARE_REDIS_VAL|val[{$redispass},{#port}]
#IT MIDWARE_REDIS_appendfsync|appendfsync[{$redispass},{#port}]
#IT MIDWARE_REDIS_appendfilename|appendfilename[{$redispass},{#port}]
#IT MIDWARE_REDIS_dbfilename|dbfilename[{$redispass},{#port}]
#IT MIDWARE_REDIS_timeout|timeout[{$redispass},{#port}]
#IT MIDWARE_REDIS_maxclients|maxclients[{$redispass},{#port}]
#IT MIDWARE_REDIS_clusterenabled|clusterenabled[{$redispass},{#port}]
#IT MIDWARE_REDIS_PORT|port[{$redispass},{#port}]
#IT MIDWARE_REDIS_processpath|processpath[{$redispass},{#port}]
#IT MIDWARE_REDIS_datapath|datapath[{$redispass},{#port}]
#新增的最大内存指标
#IT MIDWARE_REDIS_maxmemory|maxmemory[{$redispass},{#port}]
#IT_END

shname=$(basename "$0")
ScriptName="_X(g=$shname,p=cmdb,t=script,f=0)"
redispass="${1}"
tmpdir="/tmp/redis_collect_${$}"
if [ "$1" = 'disc' ];then
      ps aux|grep redis-server|grep -v grep|awk -F"0:" '{print $2}'|awk '{print $1}'|while read port
      do
        echo "{#port}=$port"
      done
    exit 0
fi

# 2. 增强IP地址获取(修复语法错误)
get_ip() {
    if [ -n "$AGENT_HOME" ];then
      ip=`grep "^ListenAddr=" $AGENT_HOME/config/conf/agent.conf|awk -F= '{print $2}'`
      if [ -n "$ip" ] && [ "$ip" != "127.0.0.1" ];then
        echo $ip
        return
      fi
    fi
    ip_list=""
    # 优先使用netstat
    if [ -x /usr/bin/netstat ]; then
        ip_list=$(netstat -in 2>/dev/null | awk '!/^lo/ && /en/ {getline; print $NF}' | sort -u | tr '\n' ',')
    fi

    # 备用方案使用ifconfig
    if [ -z "$ip_list" ] && [ -x /usr/sbin/ifconfig ]; then
        ip_list=$(ifconfig -a 2>/dev/null | awk '/inet / && !/127\.|::/ {print $2}' | tr '\n' ',')
    fi

    # 最后尝试hostname
    if [ -z "$ip_list" ]; then
        ip_list=$(hostname -i 2>/dev/null | tr ' ' ',')
    fi

    echo "${ip_list%,}" | cut -d',' -f1  # 返回第一个有效IP
}

cleanup() {
    rm -rf "${tmpdir}"
}

# 构建redis-cli命令基础
redis_cli_cmd() {
    local cmd="${install_dir}/bin/redis-cli -p $port"
    [ -n "$redispass" ] && cmd+=" -a $redispass --no-auth-warning"
    echo "$cmd"
}

# 配置获取函数
config_get() {
    local config_name="$1"
    local redis_cmd=$(redis_cli_cmd)
    $redis_cmd CONFIG GET "$config_name" 2>"${tmpdir}/error.log" | \
    awk 'BEGIN{RS="\\r?\\n";ORS="";flag=0;IGNORECASE=1}
         {if(flag==1) {print $0; exit}
         if(tolower($1) == tolower(config_name)) {flag=1}}' config_name="$config_name"
}

# 获取所有配置项(带密码验证检查)
check_auth() {
    local redis_cmd=$(redis_cli_cmd)
    $redis_cmd PING 2>&1 | grep -q "PONG"
}

trap cleanup EXIT

mkdir -p "${tmpdir}"

# 获取Redis进程信息
get_redis_process() {
    pgrep -af "redis-server" |grep ":$1 "| grep -vE "redis-(cli|check|bench)" | head -1
}

if [ $# -eq 1 ];then
#采集所有实例
 ps aux|grep redis-server|grep -v grep|awk -F"0:" '{print $2}'|awk '{print $1}'|while read port
 do
   ports="$port $ports"
   echo $ports >/tmp/$$.out
 done
 ports=`cat /tmp/$$.out`
else
   ports=$2
fi

echo COL_DETAIL_START:
for port in $ports;do
  # 基础信息获取
  redis_process=$(get_redis_process $port)
  [ -z "$redis_process" ] && echo "ERROR: Redis process not found!" >&2 && exit 1

  pid=$(awk '{print $1}' <<< "$redis_process")
  exec_cmd=$(awk '{for(i=2;i<=NF;i++) if($i ~ /^redis-server/) {print $i; exit}}' <<< "$redis_process")
  install_dir=$(readlink -f /proc/"$pid"/exe | sed 's/\/bin\/redis-server$//')
  [ -z "$install_dir" ] && install_dir=$(find / -name "redis-server" -exec dirname {} \; 2>/dev/null |awk -F'/bin' '{print $1}'| head -1)
  port=$(awk '{for(i=1;i<=NF;i++) if($i ~ /:[0-9]+$/) {print $i; exit}}' <<< "$redis_process" | cut -d: -f2)

  if check_auth; then
      auth_valid=true
  else
      auth_valid=false
      echo "WARNING: Redis authentication failed or not required" >&2
  fi

  # 获取配置信息(仅在认证有效时)
  conf_file=""
#  if $auth_valid; then
#      conf_file=$(config_get "config_file")
#      [ -z "$conf_file" ] && conf_file=$(awk -F: '/^config_file/ {print $2}' <<< "$(redis_cli_cmd) INFO ALL 2>&1" | tr -d '\r')
#  fi

#获取server信息
# Server
#redis_version:7.2.3
#redis_git_sha1:00000000
#redis_git_dirty:0
#redis_build_id:51383de96c6e8561
#redis_mode:cluster
#os:Linux 3.10.0-1160.el7.x86_64 x86_64
#arch_bits:64
#monotonic_clock:POSIX clock_gettime
#multiplexing_api:epoll
#atomicvar_api:atomic-builtin
#gcc_version:4.8.5
#process_id:25008
#process_supervised:no
#run_id:d3fcee799b82dfe4af9d546da3f9bfb6da31a03e
#tcp_port:16379
#server_time_usec:1747730515903205
#uptime_in_seconds:4166817
#uptime_in_days:48
#hz:10
#configured_hz:10
#lru_clock:2900051
#executable:/home/ntciom/redis/bin/redis-server
#config_file:/home/ntciom/redis/cluster/redis-16379.conf
#io_threads_active:0
#listener0:name=tcp,bind=0.0.0.0,port=16379

  ${install_dir}/bin/redis-cli -p $port -a "$redispass" --no-auth-warning INFO server >/tmp/$$.out
  error=`cat /tmp/$$.out|grep "^NOAUTH"|wc -l`
  if [ $error -gt 0 ];then
     echo "WARNING: Redis authentication failed or not required"
     exit 151
  fi
  conf_file=`grep "^config_file" /tmp/$$.out|awk -F: '{print $2}'`
  redis_mode=`grep "^redis_mode" /tmp/$$.out|awk -F: '{print $2}'`
  version=`grep "^redis_version" /tmp/$$.out|awk -F: '{print $2}'`

  #节点信息
  ${install_dir}/bin/redis-cli -p $port -a "$redispass" --no-auth-warning CLUSTER nodes|while read line
  do
    node=`echo $line|awk '{print $2}'|awk -F"@" '{print $1}'`
    nodes="$node,$nodes"
    echo $nodes > /tmp/$$.out
    me=`echo $line|grep myself|wc -l`
    if [ $me -eq 1 ];then
      master=`echo $line|grep master|wc -l`
      if [ $master -eq 1 ];then
        echo "nodeType[$ScriptName,$redispass,$port]|+|master"
      else
        echo "nodeType[$ScriptName,$redispass,$port]|+|slave"
      fi
    fi
  done
  nodes=`cat /tmp/$$.out|sed 's/,$//g'`
  echo "nodes[$ScriptName,$redispass,$port]|+|$nodes"

  # 多维度信息采集
  hostname=$(hostname)
  ip=$(get_ip)
  [ -z "$ip" ] && ip=$(ip addr show 2>/dev/null | grep -w inet | grep -vE '127.0.0.1|inet6' | awk '{print $2}' | cut -d/ -f1 | tr '\n' ',' | sed 's/,$//')

  # 配置参数获取(兼容无密码情况)
  declare -A redis_config=(
      ["daemonize"]=$($auth_valid && config_get "daemonize")
      ["logfile"]=$($auth_valid && config_get "logfile")
      ["bind"]=$($auth_valid && config_get "bind" | tr ' ' ',')
      ["appendonly"]=$($auth_valid && config_get "appendonly")
      ["save"]=$($auth_valid && config_get "save" | tr ' ' ',')
      ["appendfsync"]=$($auth_valid && config_get "appendfsync")
      ["appendfilename"]=$($auth_valid && config_get "appendfilename")
      ["dbfilename"]=$($auth_valid && config_get "dbfilename")
      ["timeout"]=$($auth_valid && config_get "timeout")
      ["maxclients"]=$($auth_valid && config_get "maxclients")
      # 新增maxmemory配置项
      ["maxmemory"]=$($auth_valid && config_get "maxmemory")
      ["cluster-enabled"]=$($auth_valid && config_get "cluster-enabled")
      ["dir"]=$($auth_valid && config_get "dir")
      ["pidfile"]=$($auth_valid && config_get "pidfile")
      ["tcp-keepalive"]=$($auth_valid && config_get "tcp-keepalive")
      ["databases"]=$($auth_valid && config_get "databases")
  )

  # 系统信息采集
  user=$(stat -c "%U" "/proc/$pid" 2>/dev/null || ps -o user= -p "$pid" | tr -d ' ')
  free=$(free -m | awk '/Mem:/ {print $2}')
  meminfo=$(grep -m1 DirectMap2M /proc/meminfo | awk '{print $2}')
  val=$(awk "BEGIN {printf \"%.2f\", ${meminfo}/1024/1024}")GB

  # 处理路径信息
  conf_dir=$(dirname "$conf_file")
  [ "$conf_dir" = "." ] && conf_dir="$install_dir"
  processpath=$(readlink -f "/proc/$pid/cwd")
#  version=$("$install_dir/bin/redis-server" --version 2>&1 | grep -oE "v=([0-9]+\.){1,}[0-9]+"| head -1 | cut -d'=' -f2)

  # 输出结果
  echo "type[$ScriptName,$redispass,$port]|+|redis"
  echo "ipAddress[$ScriptName,$redispass,$port]|+|$ip"
  echo "hostname[$ScriptName,$redispass,$port]|+|$hostname"
  echo "version[$ScriptName,$redispass,$port]|+|redis-$version"
  echo "instancename[$ScriptName,$redispass,$port]|+|redis_${port}"
  echo "pid[$ScriptName,$redispass,$port]|+|$pid"
  echo "install_dir[$ScriptName,$redispass,$port]|+|$install_dir"
  echo "conf_dir[$ScriptName,$redispass,$port]|+|${conf_dir}"
  echo "user[$ScriptName,$redispass,$port]|+|$user"
  echo "conf_file[$ScriptName,$redispass,$port]|+|${conf_file}"
  echo "free[$ScriptName,$redispass,$port]|+|$free"
  echo "pid_file[$ScriptName,$redispass,$port]|+|${redis_config[pidfile]}"
  echo "database_num[$ScriptName,$redispass,$port]|+|${redis_config[databases]}"
  echo "meminfo[$ScriptName,$redispass,$port]|+|$meminfo"
  echo "val[$ScriptName,$redispass,$port]|+|${val}"
  echo "tcp_keepalive[$ScriptName,$redispass,$port]|+|${redis_config[tcp-keepalive]}"
  echo "daemonize[$ScriptName,$redispass,$port]|+|${redis_config[daemonize]}"
  echo "logfile[$ScriptName,$redispass,$port]|+|${redis_config[logfile]}"
  echo "save[$ScriptName,$redispass,$port]|+|${redis_config[save]}"
  echo "bind[$ScriptName,$redispass,$port]|+|${redis_config[bind]}"
  echo "appendonly[$ScriptName,$redispass,$port]|+|${redis_config[appendonly]}"
  echo "appendfsync[$ScriptName,$redispass,$port]|+|${redis_config[appendfsync]}"
  echo "appendfilename[$ScriptName,$redispass,$port]|+|${redis_config[appendfilename]}"
  echo "dbfilename[$ScriptName,$redispass,$port]|+|${redis_config[dbfilename]}"
  echo "timeout[$ScriptName,$redispass,$port]|+|${redis_config[timeout]}"
  echo "maxclients[$ScriptName,$redispass,$port]|+|${redis_config[maxclients]}"
  # 新增的输出行
  echo "maxmemory[$ScriptName,$redispass,$port]|+|${redis_config[maxmemory]}"
  echo "clusterenabled[$ScriptName,$redispass,$port]|+|${redis_config[cluster-enabled]}"
  echo "port[$ScriptName,$redispass,$port]|+|$port"
  echo "processpath[$ScriptName,$redispass,$port]|+|$processpath"
  echo "datapath[$ScriptName,$redispass,$port]|+|${redis_config[dir]}"
  echo "redisMode[$ScriptName,$redispass,$port]|+|$redis_mode"
done
echo COL_DETAIL_END:
exit 0

10.14.1.99服务器执行结果如下:

[root@omptest99 ~]# sh COLT_CMDB_linux_redis_20250520.sh "Kw&nMSMYju%2v5NhnV"
COL_DETAIL_START:
nodeType[_X(g=COLT_CMDB_linux_redis_20250520.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV,16379]|+|slave
nodes[_X(g=COLT_CMDB_linux_redis_20250520.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV,16379]|+|10.14.1.44:16379,10.14.1.71:16379,10.14.1.150:16379,10.14.1.99:16379,10.14.1.4:16379,10.14.1.91:16379
type[_X(g=COLT_CMDB_linux_redis_20250520.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV,16379]|+|redis
ipAddress[_X(g=COLT_CMDB_linux_redis_20250520.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV,16379]|+|LRU
hostname[_X(g=COLT_CMDB_linux_redis_20250520.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV,16379]|+|omptest99
version[_X(g=COLT_CMDB_linux_redis_20250520.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV,16379]|+|redis-7.4.3
instancename[_X(g=COLT_CMDB_linux_redis_20250520.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV,16379]|+|redis_16379
pid[_X(g=COLT_CMDB_linux_redis_20250520.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV,16379]|+|9522
install_dir[_X(g=COLT_CMDB_linux_redis_20250520.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV,16379]|+|/home/ntciom/redis
conf_dir[_X(g=COLT_CMDB_linux_redis_20250520.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV,16379]|+|/home/ntciom/redis/cluster
user[_X(g=COLT_CMDB_linux_redis_20250520.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV,16379]|+|root
conf_file[_X(g=COLT_CMDB_linux_redis_20250520.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV,16379]|+|/home/ntciom/redis/cluster/redis-16379.conf
free[_X(g=COLT_CMDB_linux_redis_20250520.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV,16379]|+|15884
pid_file[_X(g=COLT_CMDB_linux_redis_20250520.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV,16379]|+|/home/ntciom/redis/redis-16379.pid
database_num[_X(g=COLT_CMDB_linux_redis_20250520.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV,16379]|+|1
meminfo[_X(g=COLT_CMDB_linux_redis_20250520.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV,16379]|+|5054464
val[_X(g=COLT_CMDB_linux_redis_20250520.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV,16379]|+|4.82GB
tcp_keepalive[_X(g=COLT_CMDB_linux_redis_20250520.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV,16379]|+|300
daemonize[_X(g=COLT_CMDB_linux_redis_20250520.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV,16379]|+|yes
logfile[_X(g=COLT_CMDB_linux_redis_20250520.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV,16379]|+|/home/ntciom/redis/log/16379.log
save[_X(g=COLT_CMDB_linux_redis_20250520.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV,16379]|+|3600,1,300,100,60,10000
bind[_X(g=COLT_CMDB_linux_redis_20250520.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV,16379]|+|0.0.0.0
appendonly[_X(g=COLT_CMDB_linux_redis_20250520.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV,16379]|+|no
appendfsync[_X(g=COLT_CMDB_linux_redis_20250520.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV,16379]|+|everysec
appendfilename[_X(g=COLT_CMDB_linux_redis_20250520.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV,16379]|+|appendonly.aof
dbfilename[_X(g=COLT_CMDB_linux_redis_20250520.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV,16379]|+|dump-16379.rdb
timeout[_X(g=COLT_CMDB_linux_redis_20250520.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV,16379]|+|0
maxclients[_X(g=COLT_CMDB_linux_redis_20250520.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV,16379]|+|10000
maxmemory[_X(g=COLT_CMDB_linux_redis_20250520.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV,16379]|+|0
clusterenabled[_X(g=COLT_CMDB_linux_redis_20250520.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV,16379]|+|yes
port[_X(g=COLT_CMDB_linux_redis_20250520.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV,16379]|+|16379
processpath[_X(g=COLT_CMDB_linux_redis_20250520.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV,16379]|+|/home/ntciom/redis
datapath[_X(g=COLT_CMDB_linux_redis_20250520.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV,16379]|+|/home/ntciom/redis
redisMode[_X(g=COLT_CMDB_linux_redis_20250520.sh,p=cmdb,t=script,f=0),Kw&nMSMYju%2v5NhnV,16379]|+|cluster
COL_DETAIL_END:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值