Add cpufantemp.py, hddtemp.py, sysFanTemp.py
This commit is contained in:
55
cpufantemp.py
Executable file
55
cpufantemp.py
Executable file
@@ -0,0 +1,55 @@
|
|||||||
|
#!/usr/bin/python3
|
||||||
|
|
||||||
|
import subprocess
|
||||||
|
import json
|
||||||
|
|
||||||
|
|
||||||
|
def runCmd(cmdString):
|
||||||
|
result = subprocess.run(cmdString, stdout=subprocess.PIPE, shell=True).stdout.decode('utf-8')
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
def getCpuTempAndFanSpeed():
|
||||||
|
cmd = "sensors"
|
||||||
|
ret = runCmd(cmd).split("\n")
|
||||||
|
|
||||||
|
fanTempDict = {
|
||||||
|
"cpu": {},
|
||||||
|
"fan": {}
|
||||||
|
}
|
||||||
|
for line in ret:
|
||||||
|
if line.startswith("Core"):
|
||||||
|
line = line.split(":")
|
||||||
|
if len(line) > 1:
|
||||||
|
cpuIndex, tempString = line[0], line[1]
|
||||||
|
tempString = tempString.split(" ")
|
||||||
|
tempString = [x for x in tempString if x != ""]
|
||||||
|
if len(tempString) > 1:
|
||||||
|
temp = float(tempString[0].replace("+", "").replace("°C", ""))
|
||||||
|
else:
|
||||||
|
temp = -999.9
|
||||||
|
fanTempDict["cpu"][cpuIndex] = temp
|
||||||
|
|
||||||
|
elif line.startswith("fan"):
|
||||||
|
line = line.split(":")
|
||||||
|
if len(line) > 1:
|
||||||
|
fanId, fanNumber = line[0], line[1]
|
||||||
|
fanNumber = fanNumber.split(" ")
|
||||||
|
fanNumber = [x for x in fanNumber if x != ""]
|
||||||
|
if len(fanNumber) > 1:
|
||||||
|
fanSpeed = int(fanNumber[0])
|
||||||
|
else:
|
||||||
|
fanSpeed = 0
|
||||||
|
|
||||||
|
if fanSpeed > 0:
|
||||||
|
fanTempDict["fan"][fanId] = fanSpeed
|
||||||
|
return fanTempDict
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
fanTempDict = getCpuTempAndFanSpeed()
|
||||||
|
print(f"{json.dumps(fanTempDict, indent=4)}")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
2
ddns.sh
2
ddns.sh
@@ -24,7 +24,7 @@ INTERNET_IP=`curl -s http://ipv4.icanhazip.com`
|
|||||||
DNS_RECORD_IP=`dig +short "${URLS[0]}" | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}' | awk 'NR==1{print}'`
|
DNS_RECORD_IP=`dig +short "${URLS[0]}" | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}' | awk 'NR==1{print}'`
|
||||||
NOW_TIME=`date`
|
NOW_TIME=`date`
|
||||||
|
|
||||||
if [ "$INTERNET_IP" != "$DNS_RECORD_IP" ]
|
if [ "$INTERNET_IP" != "$DNS_RECORD_IP" ] || [ "$1" = "-f" ]
|
||||||
then
|
then
|
||||||
printf "[${NOW_TIME}]: Renew IP: ${DNS_RECORD_IP} to ${INTERNET_IP}\n"
|
printf "[${NOW_TIME}]: Renew IP: ${DNS_RECORD_IP} to ${INTERNET_IP}\n"
|
||||||
for ((i = 0; i < ${#URLS[@]}; i++)); do
|
for ((i = 0; i < ${#URLS[@]}; i++)); do
|
||||||
|
|||||||
52
hddtemp.py
Executable file
52
hddtemp.py
Executable file
@@ -0,0 +1,52 @@
|
|||||||
|
#!/usr/bin/python3
|
||||||
|
|
||||||
|
import subprocess
|
||||||
|
import json
|
||||||
|
|
||||||
|
|
||||||
|
def runCmd(cmdString):
|
||||||
|
result = subprocess.run(cmdString, stdout=subprocess.PIPE, shell=True).stdout.decode('utf-8')
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
def findHddId():
|
||||||
|
hddDict = {}
|
||||||
|
results = runCmd("blkid").split("\n")
|
||||||
|
for line in results:
|
||||||
|
if line == "":
|
||||||
|
continue
|
||||||
|
|
||||||
|
hddInfoList = line.split(" ")
|
||||||
|
if len(hddInfoList) > 1 and hddInfoList[0].startswith("/dev/sd"):
|
||||||
|
hddName = hddInfoList[0].replace(":", "")
|
||||||
|
hddDict[hddName] = {}
|
||||||
|
for hddInfoline in hddInfoList[1:]:
|
||||||
|
kvList = hddInfoline.split("=")
|
||||||
|
if len(kvList) > 1:
|
||||||
|
hddDict[hddName][kvList[0].replace("\"", "")] = kvList[1].replace("\"", "")
|
||||||
|
return hddDict
|
||||||
|
|
||||||
|
|
||||||
|
def findHddTemp(hddDict):
|
||||||
|
for hddName in sorted(hddDict.keys()):
|
||||||
|
cmd = f"smartctl -A {hddName} | grep Temperature_Celsius"
|
||||||
|
hddTempString = runCmd(cmd)
|
||||||
|
hddTempList = hddTempString.split(" ")
|
||||||
|
hddTempList = [item for item in hddTempList if item != ""]
|
||||||
|
if len(hddTempList) > 9:
|
||||||
|
hddDict[hddName]["temp"] = int(hddTempList[9])
|
||||||
|
|
||||||
|
|
||||||
|
def getHddTemp():
|
||||||
|
hddDict = findHddId()
|
||||||
|
findHddTemp(hddDict)
|
||||||
|
return hddDict
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
hddDict = getHddTemp()
|
||||||
|
print(f"{json.dumps(hddDict, indent=4)}")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
50
sysFanTemp.py
Executable file
50
sysFanTemp.py
Executable file
@@ -0,0 +1,50 @@
|
|||||||
|
#!/usr/bin/python3
|
||||||
|
import hddtemp
|
||||||
|
import cpufantemp
|
||||||
|
from rich import print
|
||||||
|
from rich.layout import Layout
|
||||||
|
from rich.panel import Panel
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
hddtempDict = hddtemp.getHddTemp()
|
||||||
|
fanTempDict = cpufantemp.getCpuTempAndFanSpeed()
|
||||||
|
|
||||||
|
layout = Layout()
|
||||||
|
layout.split_row(
|
||||||
|
Layout(name="left"),
|
||||||
|
Layout(name="center"),
|
||||||
|
Layout(name="right"),
|
||||||
|
)
|
||||||
|
|
||||||
|
## Fan speed on left
|
||||||
|
fanSpeedString = ""
|
||||||
|
for fanKey in sorted(fanTempDict["fan"].keys()):
|
||||||
|
fanSpeed = fanTempDict["fan"][fanKey]
|
||||||
|
fanSpeedString += f"{fanKey}: {fanSpeed:<4} RPM\n"
|
||||||
|
p = Panel(fanSpeedString, title="Fan Speed")
|
||||||
|
p.height = 15
|
||||||
|
layout["left"].update(p)
|
||||||
|
|
||||||
|
## CPU temp on center
|
||||||
|
cpuTempString = ""
|
||||||
|
for cpuKey in sorted(fanTempDict["cpu"].keys()):
|
||||||
|
cpuTemp = fanTempDict["cpu"][cpuKey]
|
||||||
|
cpuTempString += f"{cpuKey:<8}: {cpuTemp}°C\n"
|
||||||
|
p = Panel(cpuTempString, title="CPU Temperature")
|
||||||
|
p.height = 15
|
||||||
|
layout["center"].update(p)
|
||||||
|
|
||||||
|
## HDD temp on right
|
||||||
|
hddTempString = ""
|
||||||
|
for hddname in sorted(hddtempDict.keys()):
|
||||||
|
temp = hddtempDict[hddname]["temp"]
|
||||||
|
hddTempString += f"{hddname}: {temp}°C\n"
|
||||||
|
p = Panel(hddTempString, title="HDD Temperature")
|
||||||
|
p.height = 15
|
||||||
|
layout["right"].update(p)
|
||||||
|
print(layout)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
Reference in New Issue
Block a user