亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

NRPE Python腳本輸出錯誤

NRPE Python腳本輸出錯誤

郎朗坤 2021-05-30 12:12:23
我的任務是制作一個自定義 python 腳本(因為我不擅長 Bash)在遠程 NRPE 客戶端上運行,該客戶端遞歸地計算 /tmp 目錄中的文件數。這是我的腳本:#!/usr/bin/python3.5import osimport subprocessimport sysfile_count = sum([len(files) for r, d, files in os.walk("/tmp")]) #Recursive check of /tmpif file_count < 1000:        x = subprocess.Popen(['echo', 'OK -', str(file_count), 'files in /tmp.'], stdout=subproce$        print(x.communicate()[0].decode("utf-8")) #Converts from byteobj to str#       subprocess.run('exit 0', shell=True, check=True) #Service OK  - exit 0        sys.exit(0)elif 1000 <= file_count < 1500:        x = subprocess.Popen(['echo', 'WARNING -', str(file_count), 'files in /tmp.'], stdout=sub$        print(x.communicate()[0].decode("utf-8")) #Converts from byteobj to str        sys.exit(1)else:        x = subprocess.Popen(['echo', 'CRITICAL -', str(file_count), 'files in /tmp.'], stdout=su$        print(x.communicate()[0].decode("utf-8")) #Converts from byteobj to str        sys.exit(2)編輯1:我想硬編碼file_count到1300,我得到了一個警告:1300 files in /tmp。看來問題僅在于nagios服務器讀取客戶端計算機中文件的能力/tmp。我做了什么:我將腳本和其他腳本一起放在目錄中。我/usr/local/nagios/etc/nrpe.cfg在客戶端計算機上用以下行進行了編輯:command[check_tmp]=/usr/local/nagios/libexec/check_tmp.py我/usr/local/nagios/etc/servers/testserver.cfg在 nagios 服務器上編輯了這個文件,如下所示:define service {        use                             generic-service        host_name                       wp-proxy        service_description             Files in /tmp        check_command                   check_nrpe!check_tmp}輸出:正確的輸出是:OK - 3 files in /tmp當我以 root 身份在客戶端機器上運行腳本時,我得到了正確的輸出當我以 nagios 用戶身份在客戶端機器上運行腳本時,我得到了正確的輸出我在 Nagios 核心上的輸出似乎可以正常工作,但是/tmp當我知道還有更多文件時,它顯示有 0 個文件。我在客戶端機器上制作了 2 個文件,在 nagios 服務器上制作了 1 個文件。服務器輸出供參考:https://puu.sh/BioHW/838ba84c3e.png(忽略底層服務器,使用wp-proxy解決的任何問題也將在wpreess-gkanc1上進行更改)編輯2:我在nagios服務器上運行以下命令:/usr/local/nagios/libexec/check_nrpe -H 192.168.1.59 -c check_tmp_folder 我確實得到了一個 0 文件返回。但是,我仍然不知道如何解決此問題。
查看完整描述

2 回答

?
千巷貓影

TA貢獻1829條經驗 獲得超7個贊

解決了!

解決方案:

  • 轉到 nrpe 的 systemd 文件。我的被發現在這里:

    /lib/systemd/system/nrpe.service
  • 如果沒有,請運行:

    find / -name "nrpe.service"

并忽略所有 system.slice 結果

  • 用 vi/nano 打開文件

  • 找到一行PrivateTmp=(通常是倒數第二行)

  • 如果設置為true,則將其設置為false

  • 保存并退出文件,然后運行以下2個命令:

    daemon-reload
    restart nrpe.service

問題解決了。

簡短說明:該問題的主要原因是,在debian 9.x中,某些使用systemd的進程默認情況下強制使用了私有tmp目錄。因此,如果您有任何其他程序在搜索或索引編制方面存在問題/tmp,則可以定制此解決方案以適合您的情況。


查看完整回答
反對 回復 2021-06-01
  • 2 回答
  • 0 關注
  • 187 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號