AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 497039
Accepted
Steve Brown
Steve Brown
Asked: 2019-01-28 08:39:53 +0800 CST2019-01-28 08:39:53 +0800 CST 2019-01-28 08:39:53 +0800 CST

是否可以将 Debian 9 的 SMART Monitoring 放入 Slack?

  • 772

我最近在家庭服务器上设置了 Debian 9,我想对我的 HDD 运行一些 SMART 检查,然后在有任何问题时收到警报。理想情况下,我希望警报进入我的 Slack 实例,因为我已将它连接到我的智能手机并发现它非常有用(我的 UPS 已经收到警报,并且那里的 ping 失败)。

我一直在研究 smartd/smartctl,但我似乎找不到将通知放入 Slack 的方法。

我希望可以在某处调用一些 bash 脚本来处理通知并调用另一个(python)脚本将通知发送到 Slack。

(编辑:只是为了澄清我已经有了 Slack Notifications 的 Python 脚本,因为我在其他地方使用它,所以我们在那里很好)

编辑 以下两种解决方案都经过测试,对我来说效果很好。我选择了邮件 + 脚本解决方案,因为它涵盖了我在 Slack 因任何原因无法工作的情况下,但两者都很可靠,我感谢 RalfFriedl 为我包括环境变量。

debian smartctl
  • 2 2 个回答
  • 767 Views

2 个回答

  • Voted
  1. Best Answer
    sourcejedi
    2019-01-28T10:02:31+08:002019-01-28T10:02:31+08:00
    # /etc/smartd.conf
    /dev/sda -a -m <nomailer> -M exec /my/script
    

    这是为了sda. 每个设备添加一条线路。或者,替换/dev/sda为DEVICESCAN监控所有检测到的设备。

    确保/my/script不会花费太长时间,因为它会挂起smartd直到完成。

    /my/script将使用各种环境变量运行。搜索。man smartd.conf_ SMARTD_DEVICE例如另一个变量:“SMARTD_FULLMESSAGE设置为来自 smartd 的整个电子邮件警告消息字符串的内容。”

    要测试消息传递,请使用此临时配置文件启动 smartd,以发送测试消息:

    # /etc/smartd.conf
    /dev/sda -a -m <nomailer> -M exec /my/script -M test
    

    我没有测试过上述任何一个。我假设您已经确定是否需要-d通过使用smartctl. (我不知道如何-d和 DEVICESCAN 交互)。我还假设默认测试-a符合您的设备所需。例如,长手册页中提到的一件事是,在重新分配坏扇区后,某些驱动器会显示误报:https ://superuser.com/a/539040/110495

    • 3
  2. RalfFriedl
    2019-01-28T09:49:46+08:002019-01-28T09:49:46+08:00

    如果要smartd调用脚本,请参阅选项-w:

    -w 路径,--warnexec=路径

    当 smartd 需要发送警告消息时,运行可执行 PATH 而不是默认脚本。PATH 必须指向可执行的二进制文件或脚本。默认脚本是/etc/smartd_warning.sh.

    该脚本通常用于发送电子邮件。使用以下环境变量调用它:

    SMARTD_MAILER
    设置为 -M exec 的参数(如果存在),否则设置为“mail”(例如:/usr/local/bin/mail、mail)。

    SMARTD_DEVICE
    设置为设备路径(例如:/dev/sda)。

    SMARTD_DEVICETYPE
    设置为“-d”指令指定的设备类型,如果没有,则设置为“auto”。

    SMARTD_DEVICESTRING
    设置为设备描述。它以 SMARTD_DEVICE 开头,后跟可选的控制器标识(例如:/dev/sda [SAT])。该字符串可能包含一个空格并且不被引用。

    SMARTD_DEVICEINFO
    设置为设备标识信息。它包括 smartctl -i 打印的大部分信息,但使用简短的单行格式。smartd 启动时也会记录此设备信息。该字符串包含空格字符并且不被引用。

    SMARTD_FAILTYPE
    给出警告或消息电子邮件的原因。它可能采用的值及其含义如下:
    EmailTest:这是一封电子邮件测试消息。
    健康:SMART 健康状态指示即将发生故障。
    用法:用法属性失败。
    SelfTest:自检失败次数增加。
    ErrorCount:ATA 错误日志中的错误数量增加了。
    CurrentPendingSector:多个磁盘扇区之一无法读取并被标记为重新分配(替换为备用扇区)。
    OfflineUncorrectableSector:在离线测试或自检过程中,一个或多个磁盘扇区无法读取。
    温度:温度达到临界极限(参见 -W 指令)。
    FailedHealthCheck:SMART 健康状态命令失败。
    FailedReadSmartData:读取 SMART Attribute 数据的命令失败。
    FailedReadSmartErrorLog:读取SMART错误日志的命令失败。
    FailedReadSmartSelfTestLog:读取SMART自检日志的命令失败。
    FailedOpenDevice:对设备的 open() 命令失败。

    SMARTD_ADDRESS
    由“-m”指令的地址参数 ADD 确定。如果 ADD 为 ,则未设置 SMARTD_ADDRESS。否则,它将设置为参数 ADD 给出的电子邮件地址的逗号分隔列表,逗号替换为空格(例如:[email protected] 根目录)。如果给出了多个电子邮件地址,则此字符串将包含空格字符且不加引号,因此要在 shell 脚本中使用它,您可能需要将其括在双引号中。

    SMARTD_MESSAGE
    设置为来自 smartd 的单句摘要警告电子邮件字符串。此消息字符串包含空格字符且未加引号。因此,要在 shell 脚本中使用 $SMARTD_MESSAGE,您可能应该将其括在双引号中。

    SMARTD_FULLMESSAGE
    设置为来自 smartd 的整个电子邮件警告消息字符串的内容。此消息字符串包含空格和返回字符,并且没有被引用。因此,要在 shell 脚本中使用 $SMARTD_FULLMESSAGE,您可能应该用双引号将其括起来。

    SMARTD_TFIRST
    是一个文本字符串,给出了报告第一个此类问题的时间和日期。此文本字符串包含空格字符且没有换行符,并且没有被引用。例如:2003 年 2 月 9 日星期日 14:58:19 CST

    SMARTD_TFIRSTEPOCH
    是一个整数,它是 SMARTD_TFIRST 的 unix 纪元(自 1970 年 1 月 1 日以来的秒数)。

    SMARTD_PREVCNT
    是一个整数,指定先前发送的消息数。对于第一条消息,它设置为“0”。

    SMARTD_NEXTDAYS
    是一个整数,指定距离发送下一条消息的天数。它在“-M once”上设置为空,并在“-M daily”上设置为“1”。

    有关详细信息,请参阅man smartd和man smartd.conf。

    • 0

相关问题

  • GRUB 配置以识别同一 Linux 发行版的不同桌面环境(安装)

  • astyle 不会更改源文件格式

  • 接收有关全新 Debian 的电子邮件

  • Debian Stretch:libgs_plugin_systemd-updates.so 中的 gnome-software 段错误

  • 如何在拼音输入法中输入ü?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve