medium2 update
This commit is contained in:
127
driveAtlas.sh
127
driveAtlas.sh
@ -54,28 +54,51 @@ medium1='''
|
|||||||
└─────────────────────────────────────────────────────────────┘
|
└─────────────────────────────────────────────────────────────┘
|
||||||
'''
|
'''
|
||||||
|
|
||||||
medium2='''
|
generate_medium2_layout() {
|
||||||
|
local usb_drives=$(ls -l /dev/disk/by-path/pci-0000:0b:00.0* | awk -F'/' '{print $NF}')
|
||||||
|
local sata_drives=$(ls -l /dev/disk/by-path/pci-0000:0c:00.0-ata-* | grep -v "part" | awk -F'/' '{print $NF}')
|
||||||
|
local nvme_drive=$(ls -l /dev/disk/by-path/pci-0000:0d:00.0* | awk -F'/' '{print $NF}')
|
||||||
|
|
||||||
|
echo " External USB [0b:00.0]"
|
||||||
|
for usb in $usb_drives; do
|
||||||
|
size=$(get_drive_details $usb)
|
||||||
|
smart_info=$(get_drive_smart_info $usb)
|
||||||
|
echo " ┌────────────────────┐"
|
||||||
|
echo " │ $usb ($size) │"
|
||||||
|
echo " │ $smart_info │"
|
||||||
|
echo " └────────────────────┘"
|
||||||
|
done
|
||||||
|
|
||||||
|
cat << EOF
|
||||||
┌──────────────────────────────────────────────────────────────┐
|
┌──────────────────────────────────────────────────────────────┐
|
||||||
|
│ B650D4U3-2Q/BCM │
|
||||||
│ │
|
│ │
|
||||||
|
│ NVMe [0d:00.0] │
|
||||||
|
│ ┌────────────────────┐ │
|
||||||
|
│ │ $nvme_drive │ │
|
||||||
|
│ │ $(get_drive_smart_info $nvme_drive) │
|
||||||
|
│ └────────────────────┘ │
|
||||||
│ │
|
│ │
|
||||||
│ │
|
│ Front Hot-swap Bays [0c:00.0] │
|
||||||
│ │
|
EOF
|
||||||
│ medium2 │
|
|
||||||
│ │
|
for i in {1..10}; do
|
||||||
│ │
|
drive=$(echo "$sata_drives" | grep "ata-$i" || echo "empty")
|
||||||
│ │
|
if [ "$drive" != "empty" ]; then
|
||||||
│ ┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐ │
|
size=$(get_drive_details $drive)
|
||||||
│ │ ││ ││ ││ ││ ││ ││ ││ ││ ││ │ │
|
smart_info=$(get_drive_smart_info $drive)
|
||||||
│ │ ││ ││ ││ ││ ││ ││ ││ ││ ││ │ │
|
echo "│ ┌────────────────────┐ │"
|
||||||
│ │ ││ ││ ││ ││ ││ ││ ││ ││ ││ │ │
|
echo "│ │ Bay $i: $drive │ │"
|
||||||
│ │ 1 ││ 2 ││ 3 ││ 4 ││ 5 ││ 6 ││ 7 ││ 8 ││ 9 ││ 10 │ │
|
echo "│ │ $size | $smart_info│ │"
|
||||||
│ │ ││ ││ ││ ││ ││ ││ ││ ││ ││ │ │
|
echo "│ └────────────────────┘ │"
|
||||||
│ │ ││ ││ ││ ││ ││ ││ ││ ││ ││ │ │
|
else
|
||||||
│ │ ││ ││ ││ ││ ││ ││ ││ ││ ││ │ │
|
echo "│ ┌────────────────────┐ │"
|
||||||
│ └────┘└────┘└────┘└────┘└────┘└────┘└────┘└────┘└────┘└────┘ │
|
echo "│ │ Bay $i: [EMPTY] │ │"
|
||||||
│ │
|
echo "│ └────────────────────┘ │"
|
||||||
└──────────────────────────────────────────────────────────────┘
|
fi
|
||||||
'''
|
done
|
||||||
|
echo "└──────────────────────────────────────────────────────────────┘"
|
||||||
|
}
|
||||||
|
|
||||||
microGeneric='''
|
microGeneric='''
|
||||||
┌─┐ ┌─┐
|
┌─┐ ┌─┐
|
||||||
@ -103,7 +126,7 @@ case "$HOSTNAME" in
|
|||||||
echo -e "$medium1"
|
echo -e "$medium1"
|
||||||
;;
|
;;
|
||||||
"medium2")
|
"medium2")
|
||||||
echo -e "$medium2"
|
generate_medium2_layout
|
||||||
;;
|
;;
|
||||||
"micro1" | "micro2")
|
"micro1" | "micro2")
|
||||||
echo -e "$microGeneric"
|
echo -e "$microGeneric"
|
||||||
@ -125,6 +148,49 @@ map_drives_to_layout() {
|
|||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get_device_info() {
|
||||||
|
local pci_addr=$1
|
||||||
|
local info=$(lspci -s "$pci_addr")
|
||||||
|
echo "$info"
|
||||||
|
}
|
||||||
|
|
||||||
|
get_drive_details() {
|
||||||
|
local device=$1
|
||||||
|
local size=$(lsblk -d -o NAME,SIZE | grep "$device" | awk '{print $2}')
|
||||||
|
echo "$size"
|
||||||
|
}
|
||||||
|
|
||||||
|
get_drive_smart_info() {
|
||||||
|
local device=$1
|
||||||
|
local smart_info=$(sudo smartctl -A -i -H /dev/$device 2>/dev/null)
|
||||||
|
local temp=$(echo "$smart_info" | grep "Temperature" | awk '{print $10}' | head -1)
|
||||||
|
local type=$(echo "$smart_info" | grep "Rotation Rate" | grep -q "Solid State" && echo "SSD" || echo "HDD")
|
||||||
|
local health=$(echo "$smart_info" | grep "SMART overall-health" | grep -q "PASSED" && echo "✓" || echo "✗")
|
||||||
|
local model=$(echo "$smart_info" | grep "Device Model" | cut -d: -f2 | xargs)
|
||||||
|
|
||||||
|
echo "$type|$temp°C|$health|$model"
|
||||||
|
}
|
||||||
|
|
||||||
|
#get_drive_details() {
|
||||||
|
# local position=$1
|
||||||
|
# # Get drive info from lsblk and nvme list
|
||||||
|
# local drive_info=$(lsblk -d -o NAME,SIZE,TYPE | grep "disk")
|
||||||
|
# local nvme_info=$(sudo nvme list 2>/dev/null)
|
||||||
|
#
|
||||||
|
# # Map position to drive using DRIVE_PATHS
|
||||||
|
# local drive_path=$(echo "$DRIVE_PATHS" | grep "position$position" || echo "")
|
||||||
|
#
|
||||||
|
# if [ -z "$drive_path" ]; then
|
||||||
|
# echo "[EMPTY]"
|
||||||
|
# return
|
||||||
|
# fi
|
||||||
|
#
|
||||||
|
# local device_name=$(basename $(readlink -f "$drive_path"))
|
||||||
|
# local size=$(echo "$drive_info" | grep "$device_name" | awk '{print $2}')
|
||||||
|
#
|
||||||
|
# echo "$device_name $size"
|
||||||
|
#}
|
||||||
|
|
||||||
# Enhanced Drive Information Function
|
# Enhanced Drive Information Function
|
||||||
get_drives_info() {
|
get_drives_info() {
|
||||||
local path="/dev/disk/by-path"
|
local path="/dev/disk/by-path"
|
||||||
@ -135,6 +201,27 @@ get_drives_info() {
|
|||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
update_ascii_layout() {
|
||||||
|
local layout="$1"
|
||||||
|
|
||||||
|
for i in {1..9}; do
|
||||||
|
local drive_details=$(get_drive_details $i)
|
||||||
|
if [[ "$drive_details" == "[EMPTY]" ]]; then
|
||||||
|
layout=${layout//│ $i │/│ [EMPTY] │}
|
||||||
|
else
|
||||||
|
layout=${layout//│ $i │/│ $drive_details │}
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Update NVMe slots in motherboard
|
||||||
|
local nvme1=$(get_drive_details "nvme0")
|
||||||
|
local nvme2=$(get_drive_details "nvme1")
|
||||||
|
layout=${layout//│M1│/│${nvme1:0:3}│}
|
||||||
|
layout=${layout//│M2│/│${nvme2:0:3}│}
|
||||||
|
|
||||||
|
echo "$layout"
|
||||||
|
}
|
||||||
|
|
||||||
DRIVE_PATHS=$(get_drives_info | awk '{print $1, $2}')
|
DRIVE_PATHS=$(get_drives_info | awk '{print $1, $2}')
|
||||||
|
|
||||||
# Initialize array for "not found" messages
|
# Initialize array for "not found" messages
|
||||||
|
|||||||
Reference in New Issue
Block a user