46 lines
1.0 KiB
Bash
Executable File
46 lines
1.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
function RAM(){
|
|
local OUT_FILE=$1
|
|
# Read RAM information
|
|
ram_info=$(sudo dmidecode -t memory)
|
|
# Get memory type
|
|
ram_type=$(echo "$ram_info" | awk -F': ' '/^[[:space:]]*Type:/ && $2 !~ /Unknown/ {print $2; exit}')
|
|
# Get module sizes
|
|
modules=$(echo "$ram_info" | awk '
|
|
/^[[:space:]]*Size:/ {
|
|
if ($0 !~ /No Module Installed/ && $2 ~ /^[0-9]+$/)
|
|
print $2
|
|
}
|
|
')
|
|
# Count empty slots
|
|
empty_slots=$(echo "$ram_info" | awk '
|
|
/^[[:space:]]*Size:/ {
|
|
if ($0 ~ /No Module Installed/)
|
|
count++
|
|
}
|
|
END {
|
|
print count+0
|
|
}
|
|
')
|
|
|
|
# Calculate total RAM and format modules
|
|
total=0
|
|
sizes=""
|
|
|
|
for size in $modules; do
|
|
total=$((total + size))
|
|
if [ -z "$sizes" ]; then
|
|
sizes="${size} GB"
|
|
else
|
|
sizes="${sizes} + ${size} GB"
|
|
fi
|
|
done
|
|
|
|
# Output
|
|
if [ -z "$modules" ]; then
|
|
echo -e "RAM: No modules detected - ${empty_slots} empty slots ${ram_type}" >>"$OUT_FILE"
|
|
else
|
|
echo -e "RAM: ${total} GB - ${sizes} ${ram_type} - ${empty_slots} empty slots" >>"$OUT_FILE"
|
|
fi
|
|
} |