RRDTool’da bir VRULE’yı Bash değişkeninde çalışma zamanında nasıl eklerim?


0

Harika RRDTool uygulamasıyla başarılı bir şekilde birkaç grafik oluşturuyorum. Ancak, grafik çizerken VRULE seçeneğiyle ilgili bazı sorunlar yaşıyorum.

Bash komut dosyasıyla grafikler oluşturuyorum. Şimdilik gece yarısında dikey bir kırmızı çizgi çizmeye çalışıyorum (UTC + 02: 00’da).

Çağdaki son 2 gece yarısı saatini alma kodu:

NOW=`date +%s`
DAY=86400
ZONE=7200
LDAY=$((NOW/DAY))
MID=$((LDAY*DAY))
SAST=$((MID-ZONE))
YEST=$((SAST-DAY))

Öyleyse eğer echo ya $SAST veya $YESTBana dün gece ya da önceki gün gece yarısında dönme zamanı verecek.

İşte grafiklerden biri için çalışma snippet'i:

$RRDTOOL graph /var/www/images/graphs/wdata36h.png                      \
--title 'Pi Traffic Count (wlan0)'                                      \
--watermark "Graph Drawn `date`"                                        \
--vertical-label 'Bytes'                                                \
--lower-limit '0'                                                       \
--rigid                                                                 \
--alt-autoscale                                                         \
--units=si                                                              \
--width '700'                                                           \
--height '200'                                                          \
--full-size-mode                                                        \
--start end-36h                                                         \
'DEF:wrx=/usr/local/bin/system/data.rrd:wrx:AVERAGE'                    \
'DEF:wtx=/usr/local/bin/system/data.rrd:wtx:AVERAGE'                    \
'AREA:wtx#0000FFFF:Upload\:'                                            \
'GPRINT:wtx:LAST:\:%8.2lf %s]'                                          \
'STACK:wrx#00CC00FF:Download\:'                                         \
'GPRINT:wrx:LAST:\:%8.2lf %s]'

Gördüğünüz gibi, grafik 2 orta geceyi kapsayan son 36 saati kapsar. Eklemeye çalıştım $SAST ve $YEST değişkenler birkaç yolludur ancak değişken değerleri olarak değil, değişken isimleri olarak okumaya devam eder.

Eklemeye çalıştım:

'VRULE:$YEST#FF0000' \
'VRULE:$SAST#FF0000' \

ve

'VDEF:yest=$YEST'   \
'VDEF:sast=$SAST'   \
'VRULE:yest#FF0000' \
'VRULE:sast#FF0000' \

Fakat alıntı işaretleri değişkenlerin değişken isimleri olarak yorumlanmasına neden oluyor.

Gerçekten yeniden yaratmak istemiyorum. data.rrd Çok sayıda tarihi veri bulunduğundan dosyalayın. Bu, dikey çizgileri çizmem gerekeceği anlamına geliyor. graph sahne değil update sahne.

Yanıtlar:


0

Bir sürü deneme yanılma sonrasında (aşağıda daha fazlası)

Tüm tartışmaları tırnak içinde alamayacağımı öğrendim.

Ben bununla bitti:

$RRDTOOL graph /var/www/images/graphs/wdata36h.png                      \
--title 'Pi Traffic Count (wlan0)'                                      \
--watermark "Graph Drawn `date`"                                        \
--vertical-label 'Bytes'                                                \
--lower-limit '0'                                                       \
--rigid                                                                 \
--alt-autoscale                                                         \
--units=si                                                              \
--width '700'                                                           \
--height '200'                                                          \
--full-size-mode                                                        \
--start end-36h                                                         \
'DEF:wrx=/usr/local/bin/system/data.rrd:wrx:AVERAGE'                    \
'DEF:wtx=/usr/local/bin/system/data.rrd:wtx:AVERAGE'                    \
'AREA:wtx#0000FFFF:Upload\:'                                            \
'GPRINT:wtx:LAST:\:%8.2lf %s]'                                          \
'STACK:wrx#00CC00FF:Download\:'                                         \
'GPRINT:wrx:LAST:\:%8.2lf %s]'                                          \
VRULE:$YEST#FF0000                                                      \
VRULE:$SAST#FF0000

Tümünü birleştirmeyi denedim graph bir değişkeni içine alıp, bu değişkeni çalıştırdıktan sonra, tek tek tırnak işaretleri kaldırırken muhteşem bir şekilde başarısız oldu ve sonra herhangi bir boşluğun, hatalara neden olan yeni bir komut veya işlev anlamına geldiğine inandı. ERROR: 'T' is not a valid function name (içinde "T" den - 'Pi Trafik Sayısı (wlan0)' ).

Sonra tüm boşlukları fiziksel olarak çıkarmaya çalıştım (ve \ ) ama yine de aynı hatayı aldım, bu sefer bugünün tarihini üreten benden oldu:

--watermark "Graph Drawn `date`"

Hangi "Perşembe" olur.

Umarım bu aynı problemi yaşayan birine yardım eder.


0

Her 6 saatte bir dikey çizgi çizmeye çalışıyorum. bu benim çalışma betiğim

#!/bin/sh
NOW=`date +%s`
DAY=86400
day6=21600
ZONE=10800
LDAY=$((NOW/DAY))
MID=$((LDAY*DAY))
SAST=$((MID-ZONE))
sa6=$((SAST+day6))
sa12=$((SAST+day6*2))
sa18=$((SAST+day6*3))
#YEST=$((SAST+43200))

bsd="/home/alex112/us/u2"
#dat0=date -u -d $diff" +%-D
rrdtool graph $bsd/temp01.png       \
--watermark "Graph Drawn `date`"   \
 -w 600 -h 220 -v "Temperature"     \
--upper-limit 10 --lower-limit -8   \
  DEF:t11=$bsd/temp.rrd:t1:AVERAGE  \
  DEF:t12=$bsd/temp.rrd:t2:AVERAGE  \
  CDEF:ct11=t11,10,/                \
  CDEF:ct12=t12,10,/                \
  LINE1:ct11#00FF00:"fridge"        \
  LINE1:ct12#0000FF:"stock"         \
  HRULE:0#000000:"Zero Level"      \
  HRULE:8#FF0000:"Max temp"        \
  HRULE:-6#FF0000:"Min Fridge"     \
  VRULE:$SAST#FF0000:   \
  VRULE:$sa6#FF0000:   \
  VRULE:$sa12#FF0000:   \
  VRULE:$sa18#FF0000:"Zero time"

Bu nasıl Cevap soru?
Pierre.Vriens
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.