muninでブラザーのプリンタの情報(2)

 muninでブラザーのプリンタの情報(1)でインク残量の取得に失敗したが、とりあえず、急ぎでインクの状態が知りたかったので、美しくなはい事を理解しつつ、動かせることを前提に構築

でSNMPでとれなかったので、どうしたかというと、WEB管理ページの推定インク残量のところからとることにした。個々のインクの残量の四角の高さをHTMLで指定している

muninで温度と湿度をグラフ化- 10/26/2019

で使った方式を採用。



/usr/local/bin/chk_dcp926_ink.py
-----------------------------------

#!/usr/bin/env python3
import sys

from bs4 import BeautifulSoup
import requests
import urllib3
from urllib3.exceptions import InsecureRequestWarning
urllib3.disable_warnings(InsecureRequestWarning)

url = "https://プリンタのIPアドレス/home/status.html"

r = requests.get(url, verify = False) #htmlの取得
soup = BeautifulSoup(r.content, 'html.parser')

# すべてのliタグを検索して、その文字列を表示する
elems = soup.find_all("img")
for elem in elems:
    if elem.get('alt') == "Magenta":
        myMagenta = elem.get('height')
    if elem.get('alt') == "Cyan":
        myCyan = elem.get('height')
    if elem.get('alt') == "Yellow":
        myYellow = elem.get('height')
    if elem.get('alt') == "Black":
        myBlack = elem.get('height')

print(myMagenta + "," + myCyan+ "," + myYellow + "," + myBlack)

---------------------

/usr/share/munin/plugins/munin-chk_dcp926_ink

---------------------

#!/bin/bash

: << =cut
=head1 NAME
temp - Plugin to measure dcp926 ink Level.

=head1 NOTES
Especially the average and max values on the bigger graphs (yearly) can be interesting.

=head1 AUTHOR
Contributed by Nicolas Salles

=head1 LICENSE
GPLv2

=head1 MAGIC MARKERS
#%# family=auto
#%# capabilities=autoconf
=cut

if [ "$1" = "autoconf" ]; then
    echo "yes"
    exit 0
fi

if [ "$1" = "config" ]; then
# グラフタイトル
    echo 'graph_title Ink Level dcp926'
# グラフ縦軸
    echo 'graph_vlabel Ink Level'
    # グラフのスケール設定
    # echo 'graph_args --base 1024 -l 0'
#カテゴリ
    echo "graph_category print"
#グラフの縦軸の制限
    echo graph_args --lower-limit 0 --upper-limit 70
# 凡例の設定
# each line name
    echo server1.label Magenta
    echo server2.label Cyan
    echo server3.label Yellow
    echo server4.label Black

#ライン値設定
    echo server1.draw LINE2
    echo server2.draw LINE2
    echo server3.draw LINE2
    echo server4.draw LINE2
    exit 0
fi

# collect
CMD=`/usr/local/bin/chk_dcp926_ink.py`
#echo "${CMD}"

list=(${CMD//,/ })
#echo ${list[@]}
#echo ${list[1]}

echo server1.value "${list[0]}"
echo server2.value "${list[1]}"
echo server3.value "${list[2]}"
echo server4.value "${list[3]}"
list1=$(echo "$CMD" | cut -d',' -f1)
list2=$(echo "$CMD" | cut -d',' -f2)
list3=$(echo "$CMD" | cut -d',' -f3)
list4=$(echo "$CMD" | cut -d',' -f4)

echo server1.value "$list1"
echo server2.value "$list2"
echo server3.value "$list3"
echo server4.value "$list4"


---------------------

 リンク作って

sudo ln -s /usr/share/munin/plugins/munin-chk_dcp926_ink /etc/munin/plugins/munin-chk_dcp926_ink

ただしこのままでは動かずBeautifulSoupがroot権限で動かないので、rootでpipしたら動くようになった、正しい方法かどうかわからんが、アクセス権壊れてうごかんようになる的な警告は出た。
とりあえず、これでグラフは書けた。プログラムは美しくないけど




コメント

このブログの人気の投稿

Windows10デフォルトゲートウェアに0.0.0.0が追加される

iOS VLC でSMB共有できなかった点について

無線LANルータの選択肢が、NEC Aterm 静的ルーティングできない問題