Commit a04337
2026-01-18 14:57:13 mb tech: added script| /dev/null .. scripts/linux-system-info.md | |
| @@ 0,0 1,112 @@ | |
| + | # Linux-System-Info |
| + | |
| + | linux-system-info.sh |
| + | ```bash |
| + | #!/bin/bash |
| + | |
| + | # System Information Script |
| + | # Outputs system specifications in beautified Markdown format |
| + | |
| + | echo "# 🖥️ System Specifications" |
| + | echo "" |
| + | |
| + | # Date |
| + | echo "**📅 Date:** $(date)" |
| + | echo "" |
| + | |
| + | # OS Information |
| + | echo "## 🐧 Operating System" |
| + | if [ -f /etc/os-release ]; then |
| + | . /etc/os-release |
| + | echo "- **OS:** $PRETTY_NAME" |
| + | else |
| + | echo "- **OS:** Unknown" |
| + | fi |
| + | echo "- **Kernel:** \`$(uname -r)\`" |
| + | echo "- **Hostname:** \`$(hostname)\`" |
| + | echo "" |
| + | |
| + | # CPU Information |
| + | echo "## 🧠 CPU" |
| + | # Try to use lscpu first |
| + | if command -v lscpu &> /dev/null; then |
| + | MODEL=$(lscpu | grep "Model name" | cut -d: -f2 | xargs) |
| + | CORES=$(lscpu | grep "^CPU(s):" | cut -d: -f2 | xargs) |
| + | ARCH=$(lscpu | grep "Architecture" | cut -d: -f2 | xargs) |
| + | echo "- **Model:** $MODEL" |
| + | echo "- **Cores:** $CORES" |
| + | echo "- **Architecture:** \`$ARCH\`" |
| + | else |
| + | # Fallback to /proc/cpuinfo |
| + | MODEL=$(grep -m1 "model name" /proc/cpuinfo | cut -d: -f2 | xargs) |
| + | CORES=$(grep -c processor /proc/cpuinfo) |
| + | echo "- **Model:** $MODEL" |
| + | echo "- **Cores:** $CORES" |
| + | fi |
| + | echo "" |
| + | |
| + | # Memory Information |
| + | echo "## 💾 Memory" |
| + | if command -v free &> /dev/null; then |
| + | TOTAL_MEM=$(free -h | awk '/^Mem:/ {print $2}') |
| + | echo "- **Total RAM:** $TOTAL_MEM" |
| + | else |
| + | # Fallback to /proc/meminfo |
| + | TOTAL_KB=$(grep MemTotal /proc/meminfo | awk '{print $2}') |
| + | TOTAL_GB=$(echo "scale=2; $TOTAL_KB / 1024 / 1024" | bc 2>/dev/null || echo "$TOTAL_KB kB") |
| + | echo "- **Total RAM:** ${TOTAL_GB} GB" |
| + | fi |
| + | echo "" |
| + | |
| + | # Motherboard Information (Requires root for dmidecode, trying sysfs) |
| + | echo "## 🔢 Motherboard" |
| + | if [ -r /sys/class/dmi/id/board_vendor ] && [ -r /sys/class/dmi/id/board_name ]; then |
| + | VENDOR=$(cat /sys/class/dmi/id/board_vendor) |
| + | NAME=$(cat /sys/class/dmi/id/board_name) |
| + | VERSION=$(cat /sys/class/dmi/id/board_version 2>/dev/null || echo "") |
| + | echo "- **Vendor:** $VENDOR" |
| + | echo "- **Model:** $NAME" |
| + | if [ -n "$VERSION" ]; then |
| + | echo "- **Version:** $VERSION" |
| + | fi |
| + | else |
| + | echo "*Access to motherboard DMI info restricted or unavailable.*" |
| + | fi |
| + | echo "" |
| + | |
| + | # GPU Information |
| + | echo "## 🎮 Graphics" |
| + | if command -v lspci &> /dev/null; then |
| + | # Filter for VGA compatible controller or 3D controller |
| + | lspci | grep -E "VGA|3D" | while read -r line; do |
| + | # Extract the device name part (everything after the ID and type) |
| + | DEVICE=$(echo "$line" | cut -d: -f3- | xargs) |
| + | echo "- $DEVICE" |
| + | done |
| + | else |
| + | echo "*lspci command not found, cannot list GPUs.*" |
| + | fi |
| + | echo "" |
| + | |
| + | # Disk Information |
| + | echo "## 💽 Storage" |
| + | if command -v lsblk &> /dev/null; then |
| + | echo "| Name | Size | Type | Model |" |
| + | echo "| :--- | :--- | :--- | :--- |" |
| + | # List disks only, no partitions/loops/roms generally desirable for "specs" but lsblk -d does that |
| + | lsblk -d -o NAME,SIZE,TYPE,MODEL -n | while read -r line; do |
| + | # Format as table row |
| + | NAME=$(echo "$line" | awk '{print $1}') |
| + | SIZE=$(echo "$line" | awk '{print $2}') |
| + | TYPE=$(echo "$line" | awk '{print $3}') |
| + | MODEL=$(echo "$line" | cut -d' ' -f4-) |
| + | echo "| \`$NAME\` | $SIZE | $TYPE | $MODEL |" |
| + | done |
| + | else |
| + | echo "*lsblk command not found.*" |
| + | fi |
| + | echo "" |
| + | |
| + | echo "---" |
| + | echo "*Generated by linux-system-info.sh*" |
| + | ``` |
