Экспериментирую с gnuplot для отображения разной информации о машине. Решил попробовать наблюдать за напряжением в сети. Написал вот такой скрипт:
#!/bin/sh LOGFILE=voltage.log IMGFILE=/home/ftp/pub/voltage.png while [ 1 ] do #read new voltage date +%H:%M|head -c 5 >> $LOGFILE upsc ippon600@localhost|grep input.voltage|tail -c 7 >> $LOGFILE #recreate image gnuplot <<END set terminal png size 800,600 set output "$IMGFILE" set xdata time set timefmt "%H:%M" set grid set title "UPS Input Voltage" set ylabel "Voltage (V)" set xlabel "Time" set time plot [*:*][0:*] "$LOGFILE" using 1:2 with linespoints title "input" END sleep 60 done
Не нравится, что время на графике отображается как ММ:СС если час одинаковый для всех точек. И это при том, что формат указан как ЧЧ:ММ. Как можно исправить? Вот картинка за короткий промежуток: http://dimkas.homelinux.org/voltage1.png, а вот что собралось на данный момент: http://dimkas.homelinux.org/voltage.png
Ну и по самому скрипту… Сдаётся мне, что вместо всех этих head и tail можно использовать что-то другое. Только я не знаю, что… upsc возвращает такие строки:
dimka@box:~$ upsc ippon600@localhost battery.charge: 100.0 battery.voltage: 13.6 driver.name: ippon driver.parameter.port: /dev/ttyS0 driver.version: 2.0.4 driver.version.internal: 0.02 input.frequency: 49.9 input.voltage: 206.0 output.voltage: 206.0 ups.load: 009 ups.mfr: Ippon ups.model: universal driver ups.status: OL ups.temperature:
Как можно покрасивее вытащить значения для input.voltage и output.voltage?
+++
Только что обнаружил, что при переходе от 23:59 к 00:00 появляется очень интересный глюк. Видимо, надо добавить еще и дату, чтоб построение шло нормально..
Последние комментарии
-
OlegL, 17 декабря 2023 года в 15:00 →
Перекличка
21
-
REDkiy, 8 июня 2023 года в 9:09 →
Как «замокать» файл для юниттеста в Python?
2
-
fhunter, 29 ноября 2022 года в 2:09 →
Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt?
6
-
Иванн, 9 апреля 2022 года в 8:31 →
Ассоциация РАСПО провела первое учредительное собрание
1
-
Kiri11.ADV1, 7 марта 2021 года в 12:01 →
Логи catalina.out в TomCat 9 в формате JSON
1
DevOps as a Service from Palark

Вот, что мне было нужно:
Теперь проблем быть не должно. Скоро проверю.
Остался вопрос о красивом извлечении нужного параметра из строки разделённой пробелами. Подскажете — буду рад, а нет — сам нагуглю :)
$d=`date +%H:%M` $iv=`upsc ippon600@localhost | awk '/input.voltage/{print $2}'` echo $d $iv >> $LOGFILEа не лучше ли занести содержимое цикла в отдельный скрипт и настроить cron-task для генерации картинки?
Genie, спасибо! Про awk как раз этой ночью в LinuxFormat читал. Скрипт перенесу в крон после того, как выбью из него всё, что мне нужно =)
Еще вопрос вылез. Есть вот эти две строки:
Можно ли как-то оба числа сразу вытащить и через пробел в файл дописать? Или надо два раза выполнять команду с разными параметрами для awk?
Вот конечный (надеюсь) результат:
#!/bin/sh LOGFILE=voltage1.log IMGFILE=/home/ftp/pub/voltage1.png TMPFILE=voltage1.log.tmp #append new values to log d=`date +%Y/%m/%d-%H:%M` v=`upsc ippon600@localhost |grep .voltage|tail -n2| awk '{print $2}'` echo $d $v >> $LOGFILE #cut old values tail -n 288 $LOGFILE > $TMPFILE mv $TMPFILE $LOGFILE #recreate image gnuplot <<END set terminal png size 800,600 set output "$IMGFILE" set xdata time set timefmt "%Y/%m/%d-%H:%M" set grid set title "UPS Input Voltage" set ylabel "Voltage (V)" set xlabel "Time" set format x "%H:%M" set time f(x)=220 plot [*:*][0:*] "$LOGFILE" using 1:2 with lines title "UPS input", \ f(x) with lines title "220 V", \ "$LOGFILE" using 1:3 with lines title "UPS output" END exit 0