我的任務是制作一個自定義 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
,則可以定制此解決方案以適合您的情況。
添加回答
舉報
0/150
提交
取消