Я пытаюсь использовать subprocess.popen () для выполнения двух команд Linux, а затем обработать их потоки STDOUT для извлечения температуры ЦП и средней нагрузки ЦП. Вот мой код: < /p>
#!/usr/bin/env python
import subprocess
Answers = ""
IPs = ["192.168.70.13"]
IPName = ["xxx"]
for x in IPs:
cmd = ['ssh', 'me@'+x, 'vcgencmd', ' measure_temp']
cmd2 = ['top -n 1 | grep "%Cpu"']
j = IPs.index(x)
print(cmd2)
proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
o, e = proc.communicate()
print(IPName[j] + ': ' + o.decode('ascii'))
Answers = Answers + IPName[j] + o.decode('ascii')
proc.stdout.close()
proc.stderr.close()
proc2 = subprocess.Popen(cmd2, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
o, e = proc2.communicate()
TempCpu = o.decode('ascii')
TempCpu = TempCpu.strip()
print("lenght is " + str(len(TempCpu)))
print("TempCpu = " + TempCpu)
k = TempCpu.find('id')
print("index of id = " + str(k))
value = TempCpu[k-6:k]
print(value)
print(IPName[j] + ': ' + o.decode('ascii'))
Answers = Answers + IPName[j] + ' == ' + o.decode('ascii')
print('Answers were : /n' + Answers)
< /code>
Цель состоит в том, чтобы получить загрузку процессора и температуры ЦП на Raspberry Pi, работающий Debian Linux. Выход был < /p>
['top -n 1 | grep "%Cpu"']
xxx: temp=49.8'C
lenght is 387
TempCpu = %Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
index of id = 169
xxx: %Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi,
0.0 si, 0.0 st
Answers were : /nRPStemp=49.8'C
xxx == %Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi,
0.0 si, 0.0 st
Если визуально проверяет значение tempcpu, оно составляет около 50 символов, а не 387, который возвращает функция Length () . Таким образом, очевидно, что переменная TempCPU не является значением символа, которую он отображает. Что приводит к другим вопросам, когда я пытаюсь извлечь определенные значения, например, "ID".>
Я пытаюсь использовать subprocess.popen () для выполнения двух команд Linux, а затем обработать их потоки STDOUT для извлечения температуры ЦП и средней нагрузки ЦП. Вот мой код: < /p> [code]#!/usr/bin/env python import subprocess Answers = "" IPs = ["192.168.70.13"] IPName = ["xxx"] for x in IPs: cmd = ['ssh', 'me@'+x, 'vcgencmd', ' measure_temp'] cmd2 = ['top -n 1 | grep "%Cpu"'] j = IPs.index(x) print(cmd2) proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) o, e = proc.communicate() print(IPName[j] + ': ' + o.decode('ascii')) Answers = Answers + IPName[j] + o.decode('ascii') proc.stdout.close() proc.stderr.close() proc2 = subprocess.Popen(cmd2, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True) o, e = proc2.communicate() TempCpu = o.decode('ascii') TempCpu = TempCpu.strip() print("lenght is " + str(len(TempCpu))) print("TempCpu = " + TempCpu) k = TempCpu.find('id') print("index of id = " + str(k)) value = TempCpu[k-6:k] print(value) print(IPName[j] + ': ' + o.decode('ascii')) Answers = Answers + IPName[j] + ' == ' + o.decode('ascii') print('Answers were : /n' + Answers) < /code> Цель состоит в том, чтобы получить загрузку процессора и температуры ЦП на Raspberry Pi, работающий Debian Linux. Выход был < /p>
Если визуально проверяет значение tempcpu, оно составляет около 50 символов, а не 387, который возвращает функция Length () . Таким образом, очевидно, что переменная TempCPU не является значением символа, которую он отображает. Что приводит к другим вопросам, когда я пытаюсь извлечь определенные значения, например, "ID".>