diff --git a/system-info/system-info-WSL.sh b/system-info/system-info-WSL.sh index f6a901a..7a2d247 100755 --- a/system-info/system-info-WSL.sh +++ b/system-info/system-info-WSL.sh @@ -8,37 +8,25 @@ if [ ! -d $cache_dir ]; then mkdir -p $cache_dir fi -while true; do - # Assumes OpenHardwareMonitor is has the Remote Web Server enabled on port - # 8085 of the Windows host. In WSL2 the Windows host IP is accessible using - # $(homename).local, use this to grab sensor data but this depends on WSL2 - # being allowed to make connections to the Windows host: - # - # ```powershell - # New-NetFirewallRule -DisplayName "WSL" -Direction Inbound -InterfaceAlias "vEthernet (WSL)" -Action Allow - # ``` - # - # However this setting must be applied each boot, there's probably a sticky - # setting but not sure what it is. - cpu_json=`curl --silent $(hostname).local:8085/data.json | jq \ -".Children[] | select(.Text | test(\"$(hostname | awk '{print toupper($0)}')\"))"\ -'.Children[] | select(.ImageURL | test("images_icon/cpu.png"))'` +if cat /proc/cpuinfo | grep -i intel > /dev/null; then + cpu_temp_sensor="/intelcpu/0/temperature/0" +elif cat /proc/cpuinfo | grep -i amd > /dev/null; then + cpu_temp_sensor="/amdcpu/0/temperature/0" +else + return 1 +fi - # cpu_load=`echo $cpu_json | jq --raw-output \ - # '.Children[] | select(.Text | test("Load"))'\ - # '.Children[] | select(.Text | test("CPU Core #[0-9]+")).Value'` - # echo cpu load: $cpu_load +while true; do + # Assumes OpenHardwareMonitor is running and emitting data to WMI so we can + # access it via the Windows hosts powershell.exe. + raw_cpu_temp=$(powershell.exe -NoProfile "(Get-WmiObject -Namespace \"root/OpenHardwareMonitor\" -Query 'select Value from Sensor WHERE Identifier LIKE \"$cpu_temp_sensor\"').Value" | sed 's/\r//') + cpu_temp=$(printf "%.1f°C" "$raw_cpu_temp") cpu_load=`mpstat -P ALL -n 1 -u 1 -o JSON | \ jq '.sysstat.hosts[0].statistics[0]["cpu-load"][1:]|.[].idle' | \ awk '$idle ~ /[-.0-9]*/ { printf "%s", substr("█▇▆▅▄▃▂▁ ", int($idle / 11), 1) }'` - cpu_temp=`echo $cpu_json | jq --raw-output \ -'.Children[] | select(.Text | test("Temperatures"))'\ -'.Children[] | select(.Text | test("CPU Package")).Value' | \ - awk '{gsub(/ /,""); print}'` - echo "$cpu_temp $cpu_load" > $cache_file # echo -e "HTTP/1.1 200 OK\n\n$cpu_temp $cpu_load" | nc -l -k -p 8080 -q 1; - sleep 1 + sleep 2 done