添加 ps.sh
This commit is contained in:
@@ -0,0 +1,90 @@
|
||||
#!/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")"
|
||||
Reference in New Issue
Block a user