1

Pythonで作成されたスクリプトを使用する監視システムを1つセットアップしています。(check_mkを使用したOMD Linuxディストリビューションの情報のみ)。

とにかく、これは私が使いたいスクリプトです

#!/usr/bin/python
# -*- encoding: utf-8; py-indent-offset: 4 -*-
# WARN num, CRIT num
eximq_default_levels = (100, 200) 

def inventory_eximq(info):
if len(info) > 0 and info[0] != '':
    return [(None, 'eximq_default_levels')]

def check_eximq(item, params, info):
for line in info:
    if line[0] == '0':
        return (0, 'OK - The mailqueue is empty ', [ ('length', 0, params[0], params[1]),
                                                     ('size', '0') ])
    else:
        len     = int(line[0])

        perfdata = [ ('length', len, params[0], params[1])]

        if len > params[1]:
            return (2, 'CRIT - Mailqueue length is %d '
                       '(More than threshold: %d)' % (len, params[0]), perfdata)
        elif len > params[0]:
            return (1, 'WARN - Mailqueue length is %d '
                       '(More than threshold: %d)' % (len, params[0]), perfdata)
        else:
            return (0, 'OK - Mailqueue length is %d ' % len, perfdata)

return (3, 'UNKNOWN - Could not find summarizing line in output')

check_info['eximq'] = (check_eximq, "Exim Queue", 1, inventory_eximq)
checkgroup_of["eximq"] = "mailqueue_length"

このスクリプトからパッケージをコンパイル/作成すると、次のエラーが発生します

プラグイン ファイル /omd/sites/infonet/local/share/check_mk/checks/eximq-1.0.mkp のエラー: ファイル /omd/sites/infonet/local/share/check_mk/checks の非 >ASCII 文字 '\x8b' /eximq-1.0.mkp > 1 行目ですが、エンコーディングが宣言されていません。詳細については、 http: //www.python.org/peps/pep-0263.html を参照してください (eximq-1.0.mkp、1 行目)

エンコーディングをコーディングに変更し、完全に削除して #!/usr/bin/python の前に追加しようとしましたが、何も役に立ちません。また、すべての文字を表示するオプションを使用してviを介してファイルをチェックしましたが、それらの場所に奇妙な文字は見つかりませんでした。

オペレーティング システムは Centos で、Python は 2.6 です。

この問題を解決するために他にできることはありますか?

ps関連する場合、これはスクリプトからパッケージを作成するためのガイドです https://mathias-kettner.de/checkmk_packaging.html

4

0 に答える 0