Files
2026-06-02 13:33:01 +08:00

90 lines
2.1 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/sh
# 通用批量进程检查脚本 - 运行时指定进程名
# 使用方法:./check.sh 进程名
# 示例:./check.sh trap
# 示例:./check.sh node_exporter
# 示例:./check.sh nginx
# ====================== 固定配置 ======================
IP_FILE="ip.txt"
SSH_USER="root"
SSH_PASS="hp93000"
SSH_TIMEOUT=3
# ======================================================
# 检查是否输入进程名
if [ $# -ne 1 ]; then
echo "用法:$0 进程名"
echo "示例:$0 trap"
echo "示例:$0 node_exporter"
exit 1
fi
PROCESS_NAME="$1"
OUTPUT_CSV="进程检查结果_${PROCESS_NAME}.csv"
# 安装依赖
if ! command -v sshpass >/dev/null 2>&1; then
yum install -y sshpass >/dev/null 2>&1
fi
# 清理Windows换行符
sed 's/\r$//' "$IP_FILE" > ip_temp.txt
mv -f ip_temp.txt "$IP_FILE"
# 写CSV表头
echo "IP地址,IP类型,主机名,系统版本,进程状态" > "$OUTPUT_CSV"
echo "===== 开始批量检查【进程:$PROCESS_NAME】====="
# 逐行检查
for IP in $(cat "$IP_FILE"); do
IP=$(echo "$IP" | xargs)
[ -z "$IP" ] && continue
# 判断IPv4/IPv6
if echo "$IP" | grep -q ":"; then
TYPE="IPv6"
else
TYPE="IPv4"
fi
echo -n "$IP "
# 远程执行
output=$(sshpass -p "$SSH_PASS" \
ssh -o StrictHostKeyChecking=no \
-o ConnectTimeout=$SSH_TIMEOUT \
-o ConnectionAttempts=1 \
-o UserKnownHostsFile=/dev/null \
$SSH_USER@$IP 2>/dev/null \
"hostname
cat /etc/os-release | grep PRETTY_NAME | cut -d'\"' -f2 | head -n1
ps -ef | grep -v grep | grep -i '$PROCESS_NAME' | wc -l")
# 解析结果
if [ -z "$output" ]; then
hn="SSH超时"
os="---"
st="不可达"
echo " [超时]"
else
hn=$(echo "$output" | sed -n 1p | xargs)
os=$(echo "$output" | sed -n 2p | xargs)
cnt=$(echo "$output" | sed -n 3p | xargs)
if [ "$cnt" -ge 1 ]; then
st="已运行"
else
st="未运行"
fi
echo " [$st]"
fi
# 写入CSV(无乱码)
echo "$IP,$TYPE,$hn,$os,$st" >> "$OUTPUT_CSV"
done
echo -e "\n===== 执行完成 ====="
echo "报告:$OUTPUT_CSV"
echo "进程:$PROCESS_NAME"
echo "总IP$(wc -l < "$IP_FILE")"