Şahsi Özel Donanım Kullanım Ömrü Hesaplama Betiği

Programlama ve Script dilleri konusunda bilgi paylaşım alanıdır.
Cevapla
Kullanıcı avatarı
TRWE_2012
Zettabyte1
Zettabyte1
Mesajlar: 15613
Kayıt: 25 Eyl 2013, 13:38
cinsiyet: Erkek
Teşekkür etti: 2710 kez
Teşekkür edildi: 5626 kez

Şahsi Özel Donanım Kullanım Ömrü Hesaplama Betiği

Mesaj gönderen TRWE_2012 »

Merhabalar

Uzun bir zaman önce aldığım donanımların, kullanım ömrünün neresinde olduğunu merak ettim ve aşağıdaki irsaliye belgesine göre, bir bash shell betiği tasarladım...

Resim
KOD İÇERİĞİ :

Kod: Tümünü seç

#!/bin/bash

export LC_NUMERIC=C

INVOICE_DATETIME="2022-10-31 10:43:56"

echo "Enter date and time (YYYY-MM-DD HH:MM:SS) or only date:"
read INPUT

# If user enters only date, append 00:00:00
if [[ "$INPUT" =~ ^[0-9]{4}-[0-9]{2}-[0-9]{2}$ ]]; then
    INPUT="$INPUT 00:00:00"
fi

# Validate date
date -d "$INPUT" >/dev/null 2>&1 || { echo "Invalid date format"; exit 1; }

invoice_sec=$(date -d "$INVOICE_DATETIME" +%s)
input_sec=$(date -d "$INPUT" +%s)

if [ "$input_sec" -lt "$invoice_sec" ]; then
    echo "Date cannot be earlier than invoice date"
    exit 1
fi

# Time difference in years (real seconds)
diff=$((input_sec - invoice_sec))
years=$(awk "BEGIN {printf \"%.4f\", $diff / 31557600}")

printf "\nElapsed time: %.2f years\n" "$years"
echo "-----------------------------------"

status() {
    y=$1
    min=$2
    max=$3

    if awk "BEGIN {exit !($y < $min)}"; then
        echo "NEW"
    elif awk "BEGIN {exit !($y < ($max*0.7))}"; then
        echo "NORMAL"
    elif awk "BEGIN {exit !($y < $max)}"; then
        echo "AGING"
    else
        echo "CRITICAL"
    fi
}

calculate() {
    max=$1
    awk "BEGIN {printf \"%.2f\", ($years / $max) * 100}"
}

print_device() {
    name=$1
    min=$2
    max=$3
    percent=$4

    echo ""
    echo "Device: $name"
    echo "Lifetime range: $min - $max years"
    echo "Status: $(status $years $min $max)"
    printf "Wear: %.0f%%\n" "$percent"
    echo "-----------------------------------"
}

# Calculate percentages
laptop=$(calculate 8)
ssd=$(calculate 10)
hdd=$(calculate 5)
mouse=$(calculate 4)
cooler=$(calculate 10)
dvd=$(calculate 8)

# Print results
print_device "Laptop" 3 8 "$laptop"
print_device "SSD" 5 10 "$ssd"
print_device "HDD" 3 5 "$hdd"
print_device "Mouse" 2 4 "$mouse"
print_device "Cooler" 5 10 "$cooler"
print_device "DVD Drive" 5 8 "$dvd"

# Weighted analysis
average=$(awk "BEGIN {
print ($laptop*0.40)+($ssd*0.20)+($hdd*0.20)+($mouse*0.05)+($cooler*0.10)+($dvd*0.05)
}")

health=$(awk "BEGIN {print 100 - $average}")

echo ""
echo "=========== FINAL ANALYSIS ==========="
printf "Healthy: %.0f%%\n" "$health"
printf "Aging: %.0f%%\n" "$average"
echo "======================================"
ANALİZ SONUCU :

Dosya: /home/linuxmaster/Masaüstü/donanım_ömür_hesaplama.sh
linuxmaster@notebook-pc:~/Masaüstü$ ./donanım_ömür_hesaplama.sh
Enter date and time (YYYY-MM-DD HH:MM:SS) or only date:
2026-04-01 20:00:00

Elapsed time: 3.42 years
-----------------------------------

Device: Laptop
Lifetime range: 3 - 8 years
Status: NORMAL
Wear: 43%
-----------------------------------

Device: SSD
Lifetime range: 5 - 10 years
Status: NEW
Wear: 34%
-----------------------------------

Device: HDD
Lifetime range: 3 - 5 years
Status: NORMAL
Wear: 68%
-----------------------------------

Device: Mouse
Lifetime range: 2 - 4 years
Status: AGING
Wear: 85%
-----------------------------------

Device: Cooler
Lifetime range: 5 - 10 years
Status: NEW
Wear: 34%
-----------------------------------

Device: DVD Drive
Lifetime range: 5 - 8 years
Status: NEW
Wear: 43%
-----------------------------------

=========== FINAL ANALYSIS ===========
Healthy: 53%
Aging: 47%
======================================
linuxmaster@notebook-pc:~/Masaüstü$



NOT :

“Aging” demek:

Yaşlanmış / Ömrünün sonuna yaklaşan

Yani

Parçalar hâlâ çalışıyor
Ama yıpranmış
Arıza riski artmış


Yani Healthy: 53% > Aging: 47%

Betiğe göre ne fazla 10-11 sene daha bu donanım seti rahat gider.Ondan sonrası Allah(c.c) kerim....
Kullanıcı avatarı
TRWE_2012
Zettabyte1
Zettabyte1
Mesajlar: 15613
Kayıt: 25 Eyl 2013, 13:38
cinsiyet: Erkek
Teşekkür etti: 2710 kez
Teşekkür edildi: 5626 kez

Re: Şahsi Özel Donanım Kullanım Ömrü Hesaplama Betiği

Mesaj gönderen TRWE_2012 »

Siz kendinize göre betiği uyarlamak için kod içeriğindeki şu satırı değiştirmeniz yeterli

INVOICE_DATETIME="2022-10-31 10:43:56"

Bu bendeki fatura kesim tarihi , burasını kendinize göre değiştirin..
Cevapla

“Programlama ve Script dilleri” sayfasına dön