feat: added temperature command

main v0.3.0
Antonio De Lucreziis 6 months ago
parent 7ff45091c7
commit c86785ecdf

@ -11,6 +11,7 @@ The protocol supports the following commands:
- `network` — returns the network usage in bytes
- `storage` — returns the storage usage in GB
- `uptime` — returns the system uptime in seconds
- `temperature` — returns the CPU temperature of Big and Little cores in Celsius
[TODO: check if the command docs are correct]

@ -25,13 +25,54 @@ ExecStart=/usr/local/bin/stats-server serve
WantedBy=default.target
`)
// commands is a map of commands that can be run on the server, originally made by https://github.com/bachoseven
// cmdStrHelper removes indentation and newlines from a shell command string for
// better readability.
//
// Precisely, it first trims the string, then splits it by newlines, then trims
// each line, then joins them back with a space.
func cmdStrHelper(command string) string {
lines := strings.Split(strings.TrimSpace(command), "\n")
for i, line := range lines {
lines[i] = strings.TrimSpace(line)
}
return strings.Join(lines, " ")
}
// commands is a map of commands that can be run on the server, originally made
// by @BachoSeven
var commands = map[string]string{
"cpu": `top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | sed "s/^/100 - /" | bc`,
"memory": `free -m | awk '/Mem/{print $3 " " $2}'`,
"network": `cat /sys/class/net/[e]*/statistics/{r,t}x_bytes`,
"storage": `df -Ph | grep mmcblk0p5 | awk '{print $2 " " $3}' | sed 's/G//g'`,
"uptime": `cut -f1 -d. /proc/uptime`,
"cpu": cmdStrHelper(`
top -bn1
| grep "Cpu(s)"
| sed "s/.*, *\([0-9.]*\)%* id.*/\1/"
| sed "s/^/100 - /"
| bc
`),
"memory": cmdStrHelper(`
free -m
| awk '/Mem/{print $3 " " $2}'
`),
"network": cmdStrHelper(`
cat /sys/class/net/[e]*/statistics/{r,t}x_bytes
`),
"storage": cmdStrHelper(`
df -Ph
| grep mmcblk0p5
| awk '{print $2 " " $3}'
| sed 's/G//g'
`),
"uptime": cmdStrHelper(`
cut -f1 -d. /proc/uptime
`),
"temperature": cmdStrHelper(`
paste
<(cat /sys/class/thermal/thermal_zone*/type)
<(awk
'{printf "%.3f\n", $1/1000}'
/sys/class/thermal/thermal_zone*/temp
)
`),
}
func init() {

Loading…
Cancel
Save