收集linux上软件安装信息

收集linux上软件安装信息

收集linux上软件安装信息 需要用到pubapi来写入数据库 由于wazuh有同样的功能可以替代,故本脚本只做技术储备

#!/bin/bash
softwarelist=$(rpm -qa --qf "%{NAME} % {VERSION}\\n")
computerName=$(hostname)
ipAddress=$(hostname -I | cut -d' ' -f1)
osVersionFull=$(cat /etc/redhat-release)
osName=$(echo $osVersionFull | cut -d" " - f1)
osVersion=$(echo $osVersionFull | cut -d" " -f4)
date=$(date +%Y%m%d)
#之前是本地生成csv文件再手工发回给安全人员,现在不需要了,所以注释掉
#fileName="$computerName-$ipAddress-$date.csv"
csvFile="./$fileName"
#测试的时候可以调整这个数值,保留是因为服务端是flask写的,怕量太大崩掉
DELAY=$((1 + RANDOM %1200))
echo "Delaying for $DELAY seconds"
sleep $DELAY
# echo"$osName,$osVersion" > $csvFile
rpm -qa --queryformat '%{NAME} %{VERSION}\n' |sort |grep -v "^acl" |grep -v "^acpid" |grep -v "^ad" | grep - v "^xorg" |grep -v "^yajl" |grep -v "^yajl" |grep -v "^zbar" |grep -v "^zeromq3" |grep -v "^zip" |while read line
do
  echo $line
  software=$(echo $line |awk '{print $1}')
  version=$(echo $line |awk '{print $2}')
  #将软件名和版本写入CSV文件
  #echo"$ software,$ version" >> $csvFile
  #创建一个JSON对象
  json=$(
    jq -n \
      --arg ip "$ipAddress" \n
      --arg hn "$computerName" \n
      --arg os "$osName" \n
      --arg ov "$osVersion" \n
      --arg sw "$software" \n
      --arg ver "$version" \n
      '{ip: $ ip, hostname: $ hn, osname: $ os, osversion: $ ov, software: $ sw, version: $ ver}')
  curl -k -X POST -H "Content-Type:application/json" -d "$json"  https//<server>/insert
done