收集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