Test temperature and alert


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Test temperature and alert
# 1  
Old 09-21-2018
Test temperature and alert

i have this script which result is cpu temp in celsius

first install:

apt-get install lm-sensors
YES |sensors-detect --auto


Code:
#!/bin/bash

# 1. get temperature

## a. split response
## Core 0:       +143.6°F  (high = +186.8°F, crit = +212.0°F)
IFS=')' read -ra core_temp_arr <<< $(sensors -f | grep '^Core\s[[:digit:]]\+:') #echo "${core_temp_arr[0]}"

## b. find cpu usage
total_cpu_temp=0
index=0
for i in "${core_temp_arr[@]}"; do :
    temp=$(echo $i | sed -n 's/°F.*//; s/.*[+-]//; p; q')
    let index++
    total_cpu_temp=$(echo "$total_cpu_temp + $temp" | bc)
done
avg_cpu_temp=$(echo "scale=2; $total_cpu_temp / $index" | bc)

## c. build entry
temp_status="CPU: $avg_cpu_temp F"
#echo $avg_cpu_temp
#echo $[(${avg_cpu_temp}*9/5)+32]
tc=$(echo "scale=2;(5/9)*($avg_cpu_temp-32)"|bc)
echo $tc=$avg_cpu_temp

this give a number like: 54

I want to have some condition, possible in new .sh and test if its ok or not.
For the start I want to tell temp is OK or not, just echo. Then i will figure out how to send to email.
I have something similar but for raspberry and mail function, but here on ubuntu i don't figure out just yet.
# 2  
Old 09-21-2018
Hi,

If all you're looking for is a way in Bash to test the value of a number, then the if statement can handle that on its own.

For example, here's a script that will test a previously-defined number, and display one message if it's less than or equal to 90 (the meaning of the -le arithmetic operator), and a different message if any other condition is met (i.e. if it's greater than 90):

Code:
$ cat example.sh
#!/bin/bash
randomnumber=`/usr/bin/shuf -i 1-100 -n 1`
echo "Considering: $randomnumber"

if [ "$randomnumber" -le "90" ]
then
        echo "Less than or equal to 90, so that's OK"
        exit 0
else
        echo "Oh no, it's greater than 90 !"
        exit 1
fi

Here's the output of a sample session:

Code:
$ ./example.sh 
Considering: 5
Less than or equal to 90, so that's OK
$ ./example.sh 
Considering: 91
Oh no, it's greater than 90 !
$ ./example.sh 
Considering: 27
Less than or equal to 90, so that's OK
$

So if all you're looking for is "If less than X do this, if greater than X do the other" the if statement is probably all you need. Hope this helps.
# 3  
Old 09-21-2018
Insstead if your random number how can i put a result of my bash script?
# 4  
Old 09-21-2018
Hi,

I'd just included that as a demonstration of how if works, really, so you could get an idea of what you need to do in your own code. So rather than directly using my example script, you'd adapt it and write your own if statement in your script to test the value of your temperature variable, after your script had set it.

So looking at your provided code, your could write an if statement at the end to test the value of the tc variable (assuming that's correct, and it does contain just a single integer that is the number you want to test). If the variable tc isnt' the right one then you'd use whatever variable contains the CPU temperature as an integer, and do the if tests on that.

If that doesn't work then if you can provide an example of the code you've written and what goes wrong when you run it, I'd be happy to help further in debugging and we can take things from there.
# 5  
Old 09-21-2018
It gives me

Quote:
bash get_cpu_temp.sh
44.55
get_cpu_temp.sh: line 25: [: tc: integer expression expected
Oh no, it's greater than 90 !
this is a part of code
Code:
tc=$(echo "scale=2;(5/9)*($avg_cpu_temp-32)"|bc)
echo $tc
if [ "tc" -le "90" ]
then
        echo "Less than or equal to 90, so that's OK"
        exit 0
else
        echo "Oh no, it's greater than 90 !"
        exit 1
fi

# 6  
Old 09-21-2018
didn't you mean?
Code:
if [ "${tc}" -le  90 ]

# 7  
Old 09-21-2018
Hi,

Aside from missing out the $ before your variable name as has been pointed out, the other problem you'll have here is that you have to cast your temperature variable (which is a floating-point number) into an integer. Bash built-in arithmetic of the kind we're using here solely works with integers, and not floats.

There are many ways you could do that - off the top of my head, you could get an external integer calculator (such as bc) to divide it by one, which will have the effect of trimming off the decimal part.

For example:

Code:
#!/bin/bash

temperature=44.55
integer=`echo "$temperature / 1" | /usr/bin/bc`

echo "Before conversion: $temperature"
echo "After conversion: $integer"

if [ "$integer" -le "90" ]
then
        echo "Less than 90, so that's OK"
        exit 0
else
        echo "Oh no, it's at least 90 !"
        exit 1
fi

So here I start with a hard-coded floating point value for temperature, get bc running in its default integer-only mode to divide it by one, assign that result to a variable called integer, and do my Bash arithmetic operators on that integer.

Here's an example session.

Code:
$ ./example.sh 
Before conversion: 44.55
After conversion: 44
Less than 90, so that's OK
$

Hope this helps.
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Solaris

reading temperature again and ipmitool

some say '/usr/sfw/bin/ipmitool' can be used to read temperature. has anyone tried it? what options should be used? (1 Reply)
Discussion started by: orange47
1 Replies

2. Shell Programming and Scripting

How to check weather a string is like test* or test* ot *test* in if condition

How to check weather a string is like test* or test* ot *test* in if condition (5 Replies)
Discussion started by: johnjerome
5 Replies

3. UNIX for Dummies Questions & Answers

MAKING A SCRIPT FOR TEMPERATURE

People hello to everybody exist a way to do a script for view the temperature. I have Red Hat Linux release 9 (Shrike) Kernel 2.4.20-8 on an i686 THANk YOU FOR YOUR TIME. (4 Replies)
Discussion started by: enkei17
4 Replies

4. Solaris

CPU Temperature Details

How to get a CPU temperature and current power consumption in T5220 server both from system controller and Operating system. I need details by cores. Thanks in advance. (13 Replies)
Discussion started by: fugitive
13 Replies

5. Shell Programming and Scripting

Test on string containing spacewhile test 1 -eq 1 do read a $a if test $a = quitC then break fi d

This is the code: while test 1 -eq 1 do read a $a if test $a = stop then break fi done I read a command on every loop an execute it. I check if the string equals the word stop to end the loop,but it say that I gave too many arguments to test. For example echo hello. Now the... (1 Reply)
Discussion started by: Max89
1 Replies

6. Filesystems, Disks and Memory

Hard Drive Temperature?

Hi, I just set up a raid Z array in solaris xpress and I notice that the drives feel pretty damn hot. I use speedfan to monitor the temperatures of the hard drives in XP. Is there a similar program for solrais? I assume there would be since the drives all have temp sensors in them, but I... (2 Replies)
Discussion started by: ciscocbee
2 Replies

7. Solaris

CPU temperature

Hi all I have a SUN V480 server with 4 processores and I've noticed that the temperature for 2 of the 4 processers are quite high (63 degrees Celsius). Does anyone know what the operating temperatures of the Sparc CPU's are? I'm not getting any warning messages yet, but I want to resolve the... (3 Replies)
Discussion started by: soliberus
3 Replies

8. SCO

temperature monitor

Is there command in sco unixware 7.1.3 from which i can find the temperature of the system/hardware. Something equivalent to prtdiag in solaris maybe thanks (1 Reply)
Discussion started by: gsb81
1 Replies

9. HP-UX

temperature records

I'm fairly new to hpux, so this is what i've been trying to figure out. Is it possible to get any logs on hpux that would indicate if the system, cpu, or other hardware components reached above normal or critical temperatures? Thanks, -K (0 Replies)
Discussion started by: uzerx
0 Replies
Login or Register to Ask a Question