<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Spug Blog</title>
        <link>https://spug.cc/blog</link>
        <description>Spug Blog</description>
        <lastBuildDate>Fri, 19 May 2023 04:05:23 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>zh-Hans</language>
        <item>
            <title><![CDATA[一键配置Zabbix电话短信飞书钉钉微信报警]]></title>
            <link>https://spug.cc/blog/zabbix5-import-media-alarm</link>
            <guid>https://spug.cc/blog/zabbix5-import-media-alarm</guid>
            <pubDate>Fri, 19 May 2023 04:05:23 GMT</pubDate>
            <description><![CDATA[Zabbix是一款开源的企业级监控系统，可以监控网络、服务器、应用程序等各种资源。在监控过程中，及时的告警通知是非常重要的，本文将介绍如何在Zabbix中配置电话、短信、飞书、钉钉、微信和邮件报警。]]></description>
            <content:encoded><![CDATA[<p>Zabbix是一款开源的企业级监控系统，可以监控网络、服务器、应用程序等各种资源。在监控过程中，及时的告警通知是非常重要的，本文将介绍如何在Zabbix中配置电话、短信、飞书、钉钉、微信和邮件报警。</p><h3 class="anchor anchorWithStickyNavbar_J8e2" id="前置条件">前置条件<a href="#前置条件" class="hash-link" aria-label="前置条件的直接链接" title="前置条件的直接链接">​</a></h3><ul><li>已经安装并配置好了Zabbix5以上版本监控系统。</li><li>提前下载电话短信报警媒介：<a href="https://cdn.spug.cc/push/usage/zabbix/SpugPush_AlarmMedia.json" target="_blank" rel="noopener noreferrer">https://cdn.spug.cc/push/usage/zabbix/SpugPush_AlarmMedia.json</a></li></ul><h3 class="anchor anchorWithStickyNavbar_J8e2" id="步骤一导入报警媒介类型">步骤一：导入报警媒介类型<a href="#步骤一导入报警媒介类型" class="hash-link" aria-label="步骤一：导入报警媒介类型的直接链接" title="步骤一：导入报警媒介类型的直接链接">​</a></h3><p>在Zabbix管理界面，依次点击左侧 管理 / 报警媒介类型 / 点击右上角的“导入”按钮，选择下载好的SpugPush_AlarmMedia.json报警媒介文件，导入报警媒介
<img loading="lazy" src="https://cdn.spug.cc/push/usage/zabbix/2305/push-zabbix-import-media.png" class="img_ABpA">
<img loading="lazy" src="https://cdn.spug.cc/push/usage/zabbix/2305/push-zabbix-import-media2.png" class="img_ABpA">
<img loading="lazy" src="https://cdn.spug.cc/push/usage/zabbix/2305/push-zabbix-media-import-ok.png" class="img_ABpA"></p><h3 class="anchor anchorWithStickyNavbar_J8e2" id="步骤二打开推送助手官网选择zabbix模板">步骤二：打开推送助手官网，选择Zabbix模板<a href="#步骤二打开推送助手官网选择zabbix模板" class="hash-link" aria-label="步骤二：打开推送助手官网，选择Zabbix模板的直接链接" title="步骤二：打开推送助手官网，选择Zabbix模板的直接链接">​</a></h3><p>推送助手官网push.spug.cc / 模板市场 /  Zabbix模板 / 使用模版 / 配置模板对象
<img loading="lazy" src="https://cdn.spug.cc/push/usage/zabbix/zabbix-use1.png" class="img_ABpA">
<img loading="lazy" src="https://cdn.spug.cc/push/usage/zabbix/zabbix-config-target.png" class="img_ABpA"></p><h3 class="anchor anchorWithStickyNavbar_J8e2" id="步骤三拷贝保存模板编码">步骤三：拷贝保存模板编码<a href="#步骤三拷贝保存模板编码" class="hash-link" aria-label="步骤三：拷贝保存模板编码的直接链接" title="步骤三：拷贝保存模板编码的直接链接">​</a></h3><p>配置完成推送对象后，拷贝保存模板ID
<img loading="lazy" src="https://cdn.spug.cc/push/usage/zabbix/zabbix-copy-template-id.png" class="img_ABpA"></p><h3 class="anchor anchorWithStickyNavbar_J8e2" id="步骤四配置报警用户">步骤四：配置报警用户<a href="#步骤四配置报警用户" class="hash-link" aria-label="步骤四：配置报警用户的直接链接" title="步骤四：配置报警用户的直接链接">​</a></h3><p>1、在Zabbix管理界面，依次点击左侧 管理 / 用户 / 创建用户 / <strong>用户权限需要给超级管理员权限</strong>
<img loading="lazy" src="https://cdn.spug.cc/push/usage/zabbix/2305/push-zabbix-add-user1.png" class="img_ABpA"></p><p>2、配置报警媒介</p><ul><li>类型选择刚才导入的报警媒介：SpugPush推送助手</li><li>收件人填写上面步骤三的模板ID
<img loading="lazy" src="https://cdn.spug.cc/push/usage/zabbix/2305/push-zabbix-user-add-media.png" class="img_ABpA"></li></ul><h3 class="anchor anchorWithStickyNavbar_J8e2" id="步骤五配置报警动作">步骤五：配置报警动作<a href="#步骤五配置报警动作" class="hash-link" aria-label="步骤五：配置报警动作的直接链接" title="步骤五：配置报警动作的直接链接">​</a></h3><ol><li><p>在Zabbix管理界面，点击左侧“配置”，然后选择“动作”。</p></li><li><p>点击右上角的“创建动作”按钮。
<img loading="lazy" src="https://cdn.spug.cc/push/usage/zabbix/2305/push-zabbix-action-add.png" class="img_ABpA"></p></li></ol><p>3、动作配置</p><ul><li><p>名称：【电话短信机器人报警】</p></li><li><p>条件：根据自己的配置，可以选择自己监控的主机组
<img loading="lazy" src="https://cdn.spug.cc/push/usage/zabbix/2305/push-zabbix-action-if.png" class="img_ABpA">
4、操作配置</p></li><li><p>报警操作：发送用户选择前面创建的电话短信机器人报警用户，发送渠道选择SpugPush推送助手
<img loading="lazy" src="https://cdn.spug.cc/push/usage/zabbix/2305/push-zabbix-action-alert-send.png" class="img_ABpA"></p></li><li><p>报警恢复操作：报警用户选择前面创建的电话短信机器人报警用户，发送渠道选择SpugPush推送助手
<img loading="lazy" src="https://cdn.spug.cc/push/usage/zabbix/2305/push-zabbix-action-alert-send.png" class="img_ABpA"></p></li></ul><h3 class="anchor anchorWithStickyNavbar_J8e2" id="验证电话短信机器人报警">验证电话、短信、机器人报警<a href="#验证电话短信机器人报警" class="hash-link" aria-label="验证电话、短信、机器人报警的直接链接" title="验证电话、短信、机器人报警的直接链接">​</a></h3><p>完成以上配置后，我们可以进行测试，验证报警是否正常工作。</p><p>1、在Zabbix管理界面，点击左侧“监控”，然后选择“仪表盘”。</p><p>2、登录监控的主机，执行命令<code>stress -c 8</code>消耗一些CPU产生报警</p><p>3、如果CPU使用率超过了80%，则会触发刚才创建的报警动作，发送报警通知到配置的电话、短信、飞书、钉钉、微信或邮件中。</p><p><img loading="lazy" src="https://cdn.spug.cc/push/usage/zabbix/zabbix-template-view.png" class="img_ABpA"></p><p>4、推送助手平台 / 推送日志 也可以看到发送的历史消息。
<img loading="lazy" src="https://cdn.spug.cc/push/usage/zabbix/spug-push-log.png" class="img_ABpA"></p><h3 class="anchor anchorWithStickyNavbar_J8e2" id="结论">结论<a href="#结论" class="hash-link" aria-label="结论的直接链接" title="结论的直接链接">​</a></h3><p>以上就是Zabbix电话、短信、飞书、钉钉、微信和邮件报警的配置过程。通过以上配置，可以及时地收到各种报警通知，帮助我们更好地管理和维护监控系统。</p><p>如果你是Zabbix4版本参考：<a href="https://spug.cc/blog/zabbix4-phone-alarm" target="_blank" rel="noopener noreferrer">Zabbix4电话短信钉钉飞书微信报警</a></p><h3 class="anchor anchorWithStickyNavbar_J8e2" id="关于spug推送助手">关于Spug推送助手:<a href="#关于spug推送助手" class="hash-link" aria-label="关于Spug推送助手:的直接链接" title="关于Spug推送助手:的直接链接">​</a></h3><blockquote><p>推送助手是一个集成了电话、短信、邮件、飞书、钉钉、微信、企业微信等多通道的消息推送平台。
用户只需要调用一个简单的URL，就可以完成多通道的消息推送。链接：<a href="https://push.spug.cc" target="_blank" rel="noopener noreferrer">push.spug.cc</a></p></blockquote><hr><p>更多资讯、视频、欢迎关注公众号： <strong>Spug社区</strong></p><p><img loading="lazy" src="https://cdn.spug.cc/img/spug-club.jpg" alt="Spug社区" class="img_ABpA"></p>]]></content:encoded>
            <category>电话报警</category>
            <category>zabbix电话报警</category>
            <category>zabbix短信报警</category>
            <category>zabbix机器人报警</category>
            <category>zabbix飞书报警</category>
            <category>zabbix钉钉报警</category>
            <category>zabbix微信报警</category>
        </item>
        <item>
            <title><![CDATA[推送助手新功能：支持内置函数和电话重试设置]]></title>
            <link>https://spug.cc/blog/push-features-230407</link>
            <guid>https://spug.cc/blog/push-features-230407</guid>
            <pubDate>Fri, 07 Apr 2023 00:08:06 GMT</pubDate>
            <description><![CDATA[推送助手]]></description>
            <content:encoded><![CDATA[<h2 class="anchor anchorWithStickyNavbar_J8e2" id="推送助手">推送助手<a href="#推送助手" class="hash-link" aria-label="推送助手的直接链接" title="推送助手的直接链接">​</a></h2><p>推送助手是一个集成了电话、短信、邮件、飞书、钉钉、微信、企业微信等多通道的消息推送平台，用户只需要调用一个简单的URL，就可以完成多通道的消息推送。</p><p>目前推送助手已经内置了Zabbix、Prometheus、夜莺（N9e）等监控系统的消息模版，可以通过推送助手3分钟实现电话短信报警的能力。</p><h2 class="anchor anchorWithStickyNavbar_J8e2" id="近期功能更新">近期功能更新：<a href="#近期功能更新" class="hash-link" aria-label="近期功能更新：的直接链接" title="近期功能更新：的直接链接">​</a></h2><h3 class="anchor anchorWithStickyNavbar_J8e2" id="1内置函数">1、内置函数<a href="#1内置函数" class="hash-link" aria-label="1、内置函数的直接链接" title="1、内置函数的直接链接">​</a></h3><p>推送助手内置了一些函数，可以在模版内容里配置后对数据进一步处理，我们以如下报警消息体作为例子来说明内置函数的用法：</p><div class="codeBlockContainer_azwa theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_kMmd"><pre tabindex="0" class="prism-code language-text codeBlock_eq8c thin-scrollbar"><code class="codeBlockLines_M058"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">{</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    "id": 20,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    "rule_name": "CPU usage",</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    "trigger_time": 1660791492,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    "trigger_value": 92,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    "is_recovered": false</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">}</span><br></span></code></pre><div class="buttonGroup_VjRJ"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_nkyW" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_nr7X"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_P_G1"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_J8e2" id="datetime">datetime()<a href="#datetime" class="hash-link" aria-label="datetime()的直接链接" title="datetime()的直接链接">​</a></h4><p>用于将时间戳转换为时间格式，不传参数时返回当前时间，例如：</p><div class="codeBlockContainer_azwa theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_kMmd"><pre tabindex="0" class="prism-code language-text codeBlock_eq8c thin-scrollbar"><code class="codeBlockLines_M058"><span class="token-line" style="color:#393A34"><span class="token plain">${datetime(trigger_time)}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">${datetime()}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">将会输出：</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">2022-08-18 10:58:12</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">2023-03-24 11:40:30</span><br></span></code></pre><div class="buttonGroup_VjRJ"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_nkyW" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_nr7X"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_P_G1"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_J8e2" id="date">date()<a href="#date" class="hash-link" aria-label="date()的直接链接" title="date()的直接链接">​</a></h4><p>用于将时间戳转换为日期格式，不传参数时返回当前时间，例如：</p><div class="codeBlockContainer_azwa theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_kMmd"><pre tabindex="0" class="prism-code language-text codeBlock_eq8c thin-scrollbar"><code class="codeBlockLines_M058"><span class="token-line" style="color:#393A34"><span class="token plain">${date(trigger_time)}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">${date()}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">将会输出：</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">2022-08-18</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">2023-03-24</span><br></span></code></pre><div class="buttonGroup_VjRJ"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_nkyW" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_nr7X"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_P_G1"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_J8e2" id="time">time()<a href="#time" class="hash-link" aria-label="time()的直接链接" title="time()的直接链接">​</a></h4><p>用于将时间戳转换为时间格式，不传参数时返回当前时间，例如：</p><div class="codeBlockContainer_azwa theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_kMmd"><pre tabindex="0" class="prism-code language-text codeBlock_eq8c thin-scrollbar"><code class="codeBlockLines_M058"><span class="token-line" style="color:#393A34"><span class="token plain">${time(trigger_time)}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">${time()}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">将会输出：</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">10:58:12</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">11:40:30</span><br></span></code></pre><div class="buttonGroup_VjRJ"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_nkyW" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_nr7X"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_P_G1"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_J8e2" id="upper">upper()<a href="#upper" class="hash-link" aria-label="upper()的直接链接" title="upper()的直接链接">​</a></h4><p>用于将字符串转换为大写，例如：</p><div class="codeBlockContainer_azwa theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_kMmd"><pre tabindex="0" class="prism-code language-text codeBlock_eq8c thin-scrollbar"><code class="codeBlockLines_M058"><span class="token-line" style="color:#393A34"><span class="token plain">${upper(rule_name)}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">将会输出：</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">CPU USAGE</span><br></span></code></pre><div class="buttonGroup_VjRJ"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_nkyW" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_nr7X"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_P_G1"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_J8e2" id="lower">lower()<a href="#lower" class="hash-link" aria-label="lower()的直接链接" title="lower()的直接链接">​</a></h4><p>用于将字符串转换为小写，例如：</p><div class="codeBlockContainer_azwa theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_kMmd"><pre tabindex="0" class="prism-code language-text codeBlock_eq8c thin-scrollbar"><code class="codeBlockLines_M058"><span class="token-line" style="color:#393A34"><span class="token plain">${lower(rule_name)}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">将会输出：</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">cpu usage</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span></code></pre><div class="buttonGroup_VjRJ"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_nkyW" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_nr7X"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_P_G1"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h3 class="anchor anchorWithStickyNavbar_J8e2" id="2电话报警重试次数">2、电话报警重试次数<a href="#2电话报警重试次数" class="hash-link" aria-label="2、电话报警重试次数的直接链接" title="2、电话报警重试次数的直接链接">​</a></h3><p>现在电话推送重试次数，可以自定义设置了，0表示不尝试重复呼叫，最多尝试10次。</p><blockquote><p> 推送助手 / 个人中心 / 个人设置 / 语音重试
<img loading="lazy" src="https://cdn.spug.cc/push/guide/setup-phone-try.png" class="img_ABpA"></p></blockquote><h2 class="anchor anchorWithStickyNavbar_J8e2" id="你的想法">你的想法<a href="#你的想法" class="hash-link" aria-label="你的想法的直接链接" title="你的想法的直接链接">​</a></h2><p>如果你对内置函数和其他功能还有想法，可以在这里反馈：<a href="https://support.qq.com/product/406949" target="_blank" rel="noopener noreferrer">https://support.qq.com/product/406949</a></p><hr><p>更多资讯、视频、欢迎关注公众号“<strong>Spug社区</strong>”</p><p><img loading="lazy" src="https://cdn.spug.cc/img/spug-club.jpg" alt="Spug社区" class="img_ABpA"></p>]]></content:encoded>
            <category>推送助手</category>
            <category>新功能</category>
            <category>推送助手内置函数</category>
        </item>
        <item>
            <title><![CDATA[简单好用的HTTPS证书监控工具]]></title>
            <link>https://spug.cc/blog/https-tools-introduction</link>
            <guid>https://spug.cc/blog/https-tools-introduction</guid>
            <pubDate>Sun, 02 Apr 2023 22:56:29 GMT</pubDate>
            <description><![CDATA[HTTPS证书监控可能是很多企业缺失的监控，大部分HTTPS证书有效期都是一年，每年都需要定时更换，这就需要想个办法一年后提醒来更换证书，常见的Zabbix、Prometheus都不能很好的直接监控证书，这时候就可以用Spug证书监控工具来帮你监控证书到期。]]></description>
            <content:encoded><![CDATA[<blockquote><p>HTTPS证书监控可能是很多企业缺失的监控，大部分HTTPS证书有效期都是一年，每年都需要定时更换，这就需要想个办法一年后提醒来更换证书，常见的Zabbix、Prometheus都不能很好的直接监控证书，这时候就可以用Spug证书监控工具来帮你监控证书到期。</p></blockquote><h3 class="anchor anchorWithStickyNavbar_J8e2" id="证书监控工具">证书监控工具<a href="#证书监控工具" class="hash-link" aria-label="证书监控工具的直接链接" title="证书监控工具的直接链接">​</a></h3><p>Spug证书监控是专门用来监控HTTPS证书的SAAS监控工具，免安装，一次添加永久监控，到期前可以设置电话、短信、钉钉、飞书、微信等多个时间段反复提醒</p><h3 class="anchor anchorWithStickyNavbar_J8e2" id="如何使用">如何使用<a href="#如何使用" class="hash-link" aria-label="如何使用的直接链接" title="如何使用的直接链接">​</a></h3><p>打开<a href="https://push.spug.cc/toolkit" target="_blank" rel="noopener noreferrer">推送助手官网</a>(<a href="https://push.spug.cc" target="_blank" rel="noopener noreferrer">https://push.spug.cc</a>) / 应用市场 / SSL证书监控 / 新建一个监测项，填写域名、告警规则和告警通知对象就可以完成证书的监控，非常简单方便！
<img loading="lazy" src="https://cdn.spug.cc/push/guide/spug-push-console.png" class="img_ABpA">
<img loading="lazy" src="https://cdn.spug.cc/push/guide/spug-push-ssl-monitor.png" class="img_ABpA">
<img loading="lazy" src="https://cdn.spug.cc/push/guide/spug-push-ssl-monitor-alert.png" class="img_ABpA">
<img loading="lazy" src="https://cdn.spug.cc/push/guide/certificate.jpg" class="img_ABpA"></p><p>好了，证书监控以后交给我们。从此，你就可以忘掉这件事了 😄</p><hr><p>更多资讯、视频、欢迎关注公众号“<strong>Spug社区</strong>”</p><p><img loading="lazy" src="https://cdn.spug.cc/img/spug-club.jpg" alt="Spug社区" class="img_ABpA"></p>]]></content:encoded>
            <category>https工具</category>
            <category>证书监控</category>
            <category>https证书</category>
            <category>https监控</category>
        </item>
        <item>
            <title><![CDATA[Spug运维维权成功]]></title>
            <link>https://spug.cc/blog/spug-protect-right</link>
            <guid>https://spug.cc/blog/spug-protect-right</guid>
            <pubDate>Sun, 02 Apr 2023 22:56:29 GMT</pubDate>
            <description><![CDATA[事情起因]]></description>
            <content:encoded><![CDATA[<h3 class="anchor anchorWithStickyNavbar_J8e2" id="事情起因">事情起因<a href="#事情起因" class="hash-link" aria-label="事情起因的直接链接" title="事情起因的直接链接">​</a></h3><p>2021年1月，Spug用户向我们反应，老男孩教育于2020年底推出了新的课程《运维自动化专题课程》，其中涉及的软件项目Hippo，从功能介绍到界面布局，看上去都和Spug项目几乎一模一样。老男孩教育在宣传课程资料中，有好几处甚至连Spug文字水印都没去掉。在对外宣传的内容上，直接拿我们的开源项目换个名字，就变成了老男孩自己的项目了！！甚至有不知情的用户以为Spug项目是抄袭Hippo项目的，我们发现这种行为后，积极联系对方，但是对方根本不理我们，随后我们发文章声明：<a href="https://mp.weixin.qq.com/s/OWHTRjslLOsHknxV44B-_g" target="_blank" rel="noopener noreferrer">《致老男孩教育的维权声明 - Spug运维》</a>，在文章中指出了老男孩自动化运维课程和Spug项目的相似之处，并声明会对这种侵权行为维权。</p><h3 class="anchor anchorWithStickyNavbar_J8e2" id="对方回应">对方回应<a href="#对方回应" class="hash-link" aria-label="对方回应的直接链接" title="对方回应的直接链接">​</a></h3><p>我们的声明发表后，对方发文<a href="https://mp.weixin.qq.com/s/w57WweNtBtaXrRk3LKgDtg" target="_blank" rel="noopener noreferrer">《对Spug运维维权问题回应说明》</a>，在文章中，老男孩指责Spug对老男孩教育公开进行名誉诋毁，并侵犯老男孩名誉权，并表示会采取法律措施维护权益，还在文章中说明“老男孩教育Python自动化hippo项目，是来自老男孩由老男孩教育Python教研团队和企业一线运维人员共同开发实现整套代码”</p><p>“至于宣传文件有spug截图是hippo项目还未开发完，编辑人员也没有注意直接将spug项目界面截图截进去了。”</p><h3 class="anchor anchorWithStickyNavbar_J8e2" id="我方回应">我方回应<a href="#我方回应" class="hash-link" aria-label="我方回应的直接链接" title="我方回应的直接链接">​</a></h3><p>针对老男孩的回应，我方感觉老男孩在颠倒黑白，满口谎言，我方律师先后主动联系老男孩八次，对方始终在推脱不解决问题，针对Hippo项目我方也贴出了更多证据，证明Hippo的功能介绍、功能截图和部分代码与Spug开源项目相似或相同。随后我方发表回应文章<a href="https://mp.weixin.qq.com/s/tWabPCa4RAAi_F5U3jxdYg" target="_blank" rel="noopener noreferrer">《老男孩教育抄袭之后使出了八大"绝招"，撒谎水平爆炸！真相在这里！》</a></p><h3 class="anchor anchorWithStickyNavbar_J8e2" id="最终的结果">最终的结果：<a href="#最终的结果" class="hash-link" aria-label="最终的结果：的直接链接" title="最终的结果：的直接链接">​</a></h3><p>经过我方律师一年多的努力，本来2022年3月17日要在上海知识产权法院开庭审理此案，但是由于上海的疫情，导致上海法院停摆，后来上海知识产权法院组织线上开庭审理调解了此案，法院令老男孩教育发文澄清，消除对Spug的影响，并赔偿。最终老男孩发文<a href="https://mp.weixin.qq.com/s/widzrBw9_e_PH3gA_2dhrA" target="_blank" rel="noopener noreferrer">《关于 2021 自动化运维平台项目课程的澄清声明》</a>承认老男孩自动化运维项目Hippo，借鉴了Spug开源运维平台项目的部分代码和功能介绍，承认在宣传资料中使用了Spug开源运维平台的功能截图。</p><h3 class="anchor anchorWithStickyNavbar_J8e2" id="想说的话">想说的话<a href="#想说的话" class="hash-link" aria-label="想说的话的直接链接" title="想说的话的直接链接">​</a></h3><p>开源项目虽然开源，但不代表可以被任意践踏，任意商业化，开源项目都有开源协议，使用开源代码是需要遵循相关的软件许可协议，开源不等于是没有版权，开源不等于慈善。</p><p>国内很多开源项目都是个人或者小团队开发者，在遇到开源项目被商业公司利用，一定要找个律师维护自己权益，发现侵权后，可以把一切事务交给律师，律师会帮你分析不同方案的利弊，平衡风险和收益，并
收集证据、固定证据、起诉、诉讼等，开庭现场也可以由律师全权代理，项目作者要做的就是配合律师，然后坐等结果，这里我可以推荐一下帮我们维权的【上海博拓律师事务所】程序员出身的蒋圣阳律师。</p><h3 class="anchor anchorWithStickyNavbar_J8e2" id="关于spug">关于Spug<a href="#关于spug" class="hash-link" aria-label="关于Spug的直接链接" title="关于Spug的直接链接">​</a></h3><blockquote><p>Spug是面向中小型企业设计的无 Agent的自动化运维平台，整合了主机管理、主机批量执行、主机在线终端、文件在线上传下载、应用发布、任务计划、配置中心、监控、报警等一系列功能。开源链接：github.com/openspug/spug</p></blockquote><blockquote><p>最近我们又发布了「Spug推送助手」帮助快速实现电话、短信、邮件、飞书、钉钉、微信、企业微信等多通道消息快速推送。用户只需要调用一个简单的URL，就可以完成多通道的消息推送。链接：push.spug.cc</p></blockquote><hr><p>更多资讯、视频、欢迎关注公众号“<strong>Spug社区</strong>”</p><p><img loading="lazy" src="https://cdn.spug.cc/img/spug-club.jpg" alt="Spug社区" class="img_ABpA"></p>]]></content:encoded>
            <category>维权声明</category>
            <category>spug维权</category>
            <category>开源项目维权</category>
        </item>
        <item>
            <title><![CDATA[Zabbix4.x电话短信机器人报警]]></title>
            <link>https://spug.cc/blog/zabbix4-phone-alarm</link>
            <guid>https://spug.cc/blog/zabbix4-phone-alarm</guid>
            <pubDate>Sun, 02 Apr 2023 22:56:29 GMT</pubDate>
            <description><![CDATA[Zabbix是现在企业用的比较多的开源监控系统，Zabbix电话短信报警更是运维不可缺少的报警渠道。]]></description>
            <content:encoded><![CDATA[<blockquote><p> Zabbix是现在企业用的比较多的开源监控系统，Zabbix电话短信报警更是运维不可缺少的报警渠道。</p></blockquote><blockquote><p>前面一篇介绍了Zabbix5.4版本如何通过Spug推送助手发送电话短信报警，但用户反馈Zabbix4.x版本有很大不同，这篇文章就基于Zabbix4.x版本介绍一下如何实现Zabbix电话短信和各种机器人报警，配置完发现，这篇使用文档在Zabbix5配置步骤同样适用！😊</p></blockquote><h3 class="anchor anchorWithStickyNavbar_J8e2" id="打开推送助手官网选择zabbix模板">打开推送助手官网，选择Zabbix模板<a href="#打开推送助手官网选择zabbix模板" class="hash-link" aria-label="打开推送助手官网，选择Zabbix模板的直接链接" title="打开推送助手官网，选择Zabbix模板的直接链接">​</a></h3><blockquote><p> 推送助手官网push.spug.cc / 模板市场 /  Zabbix模板 / 使用模版 / 配置模板对象
<img loading="lazy" src="https://cdn.spug.cc/push/usage/zabbix/zabbix-use1.png" class="img_ABpA">
<img loading="lazy" src="https://cdn.spug.cc/push/usage/zabbix/zabbix-config-target.png" class="img_ABpA"></p></blockquote><h3 class="anchor anchorWithStickyNavbar_J8e2" id="拷贝保存模板编码">拷贝保存模板编码<a href="#拷贝保存模板编码" class="hash-link" aria-label="拷贝保存模板编码的直接链接" title="拷贝保存模板编码的直接链接">​</a></h3><blockquote><p>配置完成推送对象后，拷贝模板ID
<img loading="lazy" src="https://cdn.spug.cc/push/usage/zabbix/zabbix-copy-template-id.png" class="img_ABpA"></p></blockquote><h3 class="anchor anchorWithStickyNavbar_J8e2" id="zabbix添加报警媒介">Zabbix添加报警媒介<a href="#zabbix添加报警媒介" class="hash-link" aria-label="Zabbix添加报警媒介的直接链接" title="Zabbix添加报警媒介的直接链接">​</a></h3><blockquote><ul><li>Zabbix / Administration /  Media Types / create media type
<img loading="lazy" src="https://cdn.spug.cc/push/usage/zabbix/zabbix4-script.png" class="img_ABpA"></li></ul></blockquote><div class="language-shell codeBlockContainer_azwa theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_kMmd"><pre tabindex="0" class="prism-code language-shell codeBlock_eq8c thin-scrollbar"><code class="codeBlockLines_M058"><span class="token-line" style="color:#393A34"><span class="token plain">  Name：推送助手报警</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  Type：Script</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  Script name：spug_push_alert.sh</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  Script parameters1：abPampgaabc   //粘贴上面拷贝的推助手模版编码</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  Script parameters2：</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">ALERT.MESSAGE</span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre><div class="buttonGroup_VjRJ"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_nkyW" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_nr7X"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_P_G1"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h3 class="anchor anchorWithStickyNavbar_J8e2" id="添加zabbix报警报警脚本">添加zabbix报警报警脚本<a href="#添加zabbix报警报警脚本" class="hash-link" aria-label="添加zabbix报警报警脚本的直接链接" title="添加zabbix报警报警脚本的直接链接">​</a></h3><blockquote><p>登录zabbix-server服务器，添加zabbix执行的报警媒介脚本</p></blockquote><div class="language-shell codeBlockContainer_azwa theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_kMmd"><pre tabindex="0" class="prism-code language-shell codeBlock_eq8c thin-scrollbar"><code class="codeBlockLines_M058"><span class="token-line" style="color:#393A34"><span class="token plain">$ </span><span class="token function" style="color:#d73a49">vim</span><span class="token plain"> /usr/lib/zabbix/alertscripts/spug_push_alert.sh</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">#!/bin/bash</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">/usr/bin/curl -X POST -d </span><span class="token string" style="color:#e3116c">"</span><span class="token string variable" style="color:#36acaa">$2</span><span class="token string" style="color:#e3116c">"</span><span class="token plain"> https://push.spug.cc/send/</span><span class="token variable" style="color:#36acaa">$1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># 添加脚本执行权限</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">$ </span><span class="token function" style="color:#d73a49">chmod</span><span class="token plain"> +x  /usr/lib/zabbix/alertscripts/spug_push.sh</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span></code></pre><div class="buttonGroup_VjRJ"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_nkyW" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_nr7X"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_P_G1"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h3 class="anchor anchorWithStickyNavbar_J8e2" id="添加zabbix报警用户">添加Zabbix报警用户<a href="#添加zabbix报警用户" class="hash-link" aria-label="添加Zabbix报警用户的直接链接" title="添加Zabbix报警用户的直接链接">​</a></h3><blockquote><p>Zabbix / Administration / Users / create user / Media选择上面创建的<!-- -->[推送助手报警]<!-- --> / <strong>用户权限需要给超级管理员权限</strong>
<img loading="lazy" src="https://cdn.spug.cc/push/usage/zabbix/zabbix4-user1.png" class="img_ABpA">
<img loading="lazy" src="https://cdn.spug.cc/push/usage/zabbix/zabbix4-user2.png" class="img_ABpA"></p></blockquote><h3 class="anchor anchorWithStickyNavbar_J8e2" id="添加zabbix触发器">添加Zabbix触发器<a href="#添加zabbix触发器" class="hash-link" aria-label="添加Zabbix触发器的直接链接" title="添加Zabbix触发器的直接链接">​</a></h3><blockquote><p>Zabbix / Configuration / Action / create action
<img loading="lazy" src="https://cdn.spug.cc/push/usage/zabbix/zabbix4-action1.png" class="img_ABpA"></p><ul><li>Action / Operations / 复制添加下面的Operations-Default message默认消息内容 </li><li>Opeartions / New / operation detail / Send to User / 选择<strong>推送助手电话短信报警用户</strong> / Add 保存
<img loading="lazy" src="https://cdn.spug.cc/push/usage/zabbix/zabbix4-action2.png" class="img_ABpA"><img loading="lazy" src="https://cdn.spug.cc/push/usage/zabbix/zabibx4-action6.png" class="img_ABpA"></li></ul><div class="language-shell codeBlockContainer_azwa theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_kMmd"><pre tabindex="0" class="prism-code language-shell codeBlock_eq8c thin-scrollbar"><code class="codeBlockLines_M058"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Operations - Default message：</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token assign-left variable" style="color:#36acaa">status</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">TRIGGER.STATUS</span><span class="token punctuation" style="color:#393A34">}</span><span class="token operator" style="color:#393A34">&amp;</span><span class="token assign-left variable" style="color:#36acaa">name</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">EVENT.NAME</span><span class="token punctuation" style="color:#393A34">}</span><span class="token operator" style="color:#393A34">&amp;</span><span class="token assign-left variable" style="color:#36acaa">severity</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">EVENT.SEVERITY</span><span class="token punctuation" style="color:#393A34">}</span><span class="token operator" style="color:#393A34">&amp;</span><span class="token assign-left variable" style="color:#36acaa">date</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">EVENT.DATE</span><span class="token punctuation" style="color:#393A34">}</span><span class="token operator" style="color:#393A34">&amp;</span><span class="token assign-left variable" style="color:#36acaa">time</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">EVENT.TIME</span><span class="token punctuation" style="color:#393A34">}</span><span class="token operator" style="color:#393A34">&amp;</span><span class="token assign-left variable" style="color:#36acaa">age</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">EVENT.AGE</span><span class="token punctuation" style="color:#393A34">}</span><span class="token operator" style="color:#393A34">&amp;</span><span class="token assign-left variable" style="color:#36acaa">ip</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">HOST.IP</span><span class="token punctuation" style="color:#393A34">}</span><span class="token operator" style="color:#393A34">&amp;</span><span class="token assign-left variable" style="color:#36acaa">hostname</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">HOST.NAME</span><span class="token punctuation" style="color:#393A34">}</span><span class="token operator" style="color:#393A34">&amp;</span><span class="token assign-left variable" style="color:#36acaa">key</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">TRIGGER.KEY1</span><span class="token punctuation" style="color:#393A34">}</span><span class="token operator" style="color:#393A34">&amp;</span><span class="token assign-left variable" style="color:#36acaa">value</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">ITEM.LASTVALUE</span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre><div class="buttonGroup_VjRJ"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_nkyW" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_nr7X"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_P_G1"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></blockquote><blockquote><ul><li>Action / Recovery options / default message / 复制添加下面的Recovery options - Default message 默认消息内容</li><li>Opeartions / New / operation detail / Send to User / 选择<strong>推送助手电话短信报警用户</strong> / Add 保存
<img loading="lazy" src="https://cdn.spug.cc/push/usage/zabbix/zabbix4-action3.png" class="img_ABpA"><img loading="lazy" src="https://cdn.spug.cc/push/usage/zabbix/zabbix4-action4.png" class="img_ABpA"></li></ul></blockquote><div class="language-shell codeBlockContainer_azwa theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_kMmd"><pre tabindex="0" class="prism-code language-shell codeBlock_eq8c thin-scrollbar"><code class="codeBlockLines_M058"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Recovery options - Default message：</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token assign-left variable" style="color:#36acaa">status</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">TRIGGER.STATUS</span><span class="token punctuation" style="color:#393A34">}</span><span class="token operator" style="color:#393A34">&amp;</span><span class="token assign-left variable" style="color:#36acaa">name</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">EVENT.NAME</span><span class="token punctuation" style="color:#393A34">}</span><span class="token operator" style="color:#393A34">&amp;</span><span class="token assign-left variable" style="color:#36acaa">severity</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">EVENT.SEVERITY</span><span class="token punctuation" style="color:#393A34">}</span><span class="token operator" style="color:#393A34">&amp;</span><span class="token assign-left variable" style="color:#36acaa">date</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">EVENT.DATE</span><span class="token punctuation" style="color:#393A34">}</span><span class="token operator" style="color:#393A34">&amp;</span><span class="token assign-left variable" style="color:#36acaa">time</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">EVENT.TIME</span><span class="token punctuation" style="color:#393A34">}</span><span class="token operator" style="color:#393A34">&amp;</span><span class="token assign-left variable" style="color:#36acaa">age</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">EVENT.AGE</span><span class="token punctuation" style="color:#393A34">}</span><span class="token operator" style="color:#393A34">&amp;</span><span class="token assign-left variable" style="color:#36acaa">ip</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">HOST.IP</span><span class="token punctuation" style="color:#393A34">}</span><span class="token operator" style="color:#393A34">&amp;</span><span class="token assign-left variable" style="color:#36acaa">hostname</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">HOST.NAME</span><span class="token punctuation" style="color:#393A34">}</span><span class="token operator" style="color:#393A34">&amp;</span><span class="token assign-left variable" style="color:#36acaa">key</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">TRIGGER.KEY1</span><span class="token punctuation" style="color:#393A34">}</span><span class="token operator" style="color:#393A34">&amp;</span><span class="token assign-left variable" style="color:#36acaa">value</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">ITEM.LASTVALUE</span><span class="token punctuation" style="color:#393A34">}</span><span class="token operator" style="color:#393A34">&amp;</span><span class="token assign-left variable" style="color:#36acaa">recovery_date</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">EVENT.RECOVERY.DATE</span><span class="token punctuation" style="color:#393A34">}</span><span class="token operator" style="color:#393A34">&amp;</span><span class="token assign-left variable" style="color:#36acaa">recovery_time</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">EVENT.RECOVERY.TIME</span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre><div class="buttonGroup_VjRJ"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_nkyW" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_nr7X"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_P_G1"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h3 class="anchor anchorWithStickyNavbar_J8e2" id="验证电话短信机器人报警">验证电话、短信、机器人报警<a href="#验证电话短信机器人报警" class="hash-link" aria-label="验证电话、短信、机器人报警的直接链接" title="验证电话、短信、机器人报警的直接链接">​</a></h3><blockquote><ul><li>可以使用<code>stress</code>压测命令手动触发一下报警，测试一下报警发送。
<img loading="lazy" src="https://cdn.spug.cc/push/usage/zabbix/zabbix-template-view.png" class="img_ABpA"></li></ul></blockquote><h3 class="anchor anchorWithStickyNavbar_J8e2" id="查看日志">查看日志<a href="#查看日志" class="hash-link" aria-label="查看日志的直接链接" title="查看日志的直接链接">​</a></h3><blockquote><p> 推送助手平台 / 推送日志 也可以看到发送的历史消息。
<img loading="lazy" src="https://cdn.spug.cc/push/usage/zabbix/spug-push-log.png" class="img_ABpA"></p></blockquote><h3 class="anchor anchorWithStickyNavbar_J8e2" id="关于spug推送助手">关于Spug推送助手:<a href="#关于spug推送助手" class="hash-link" aria-label="关于Spug推送助手:的直接链接" title="关于Spug推送助手:的直接链接">​</a></h3><blockquote><p>推送助手是一个集成了电话、短信、邮件、飞书、钉钉、微信、企业微信等多通道的消息推送平台。
用户只需要调用一个简单的URL，就可以完成多通道的消息推送。链接：<a href="https://push.spug.cc" target="_blank" rel="noopener noreferrer">push.spug.cc</a></p></blockquote><hr><p>更多资讯、视频、欢迎关注公众号： <strong>Spug社区</strong></p><p><img loading="lazy" src="https://cdn.spug.cc/img/spug-club.jpg" alt="Spug社区" class="img_ABpA"></p>]]></content:encoded>
            <category>电话报警</category>
            <category>zabbix4电话报警</category>
            <category>zabbix4短信报警</category>
            <category>zabbix4机器人报警</category>
        </item>
        <item>
            <title><![CDATA[Zabbix实现电话短信机器人报警]]></title>
            <link>https://spug.cc/blog/zabbix5-phone-alarm</link>
            <guid>https://spug.cc/blog/zabbix5-phone-alarm</guid>
            <pubDate>Sun, 02 Apr 2023 22:56:29 GMT</pubDate>
            <description><![CDATA[Zabbix是现在企业用的比较多的开源监控系统，Zabbix电话短信报警更是运维不可缺少的报警渠道，假如半夜正在睡觉服务器异常了，这时候电话报警就非常必要。]]></description>
            <content:encoded><![CDATA[<blockquote><p> Zabbix是现在企业用的比较多的开源监控系统，Zabbix电话短信报警更是运维不可缺少的报警渠道，假如半夜正在睡觉服务器异常了，这时候电话报警就非常必要。</p></blockquote><blockquote><p>Spug推送助手针对常见的报警系统，内置好了很多报警模版，可以让用户简单快捷的配置常见的报警通知，下面以Zabbix为例，看一下如何快速配置电话、短信、邮件、钉钉、飞书、企业微信等报警通知。</p></blockquote><h3 class="anchor anchorWithStickyNavbar_J8e2" id="打开推送助手官网选择zabbix模板">打开推送助手官网，选择Zabbix模板<a href="#打开推送助手官网选择zabbix模板" class="hash-link" aria-label="打开推送助手官网，选择Zabbix模板的直接链接" title="打开推送助手官网，选择Zabbix模板的直接链接">​</a></h3><blockquote><p> 推送助手官网push.spug.cc / 模板市场 /  Zabbix模板 / 使用模版 / 配置模板对象
<img loading="lazy" src="https://cdn.spug.cc/push/usage/zabbix/zabbix-use1.png" class="img_ABpA">
<img loading="lazy" src="https://cdn.spug.cc/push/usage/zabbix/zabbix-config-target.png" class="img_ABpA"></p></blockquote><h3 class="anchor anchorWithStickyNavbar_J8e2" id="拷贝保存模板编码">拷贝保存模板编码<a href="#拷贝保存模板编码" class="hash-link" aria-label="拷贝保存模板编码的直接链接" title="拷贝保存模板编码的直接链接">​</a></h3><blockquote><p>配置完成推送对象后，拷贝模板ID
<img loading="lazy" src="https://cdn.spug.cc/push/usage/zabbix/zabbix-copy-template-id.png" class="img_ABpA"></p></blockquote><h3 class="anchor anchorWithStickyNavbar_J8e2" id="zabbix添加报警媒介">Zabbix添加报警媒介<a href="#zabbix添加报警媒介" class="hash-link" aria-label="Zabbix添加报警媒介的直接链接" title="Zabbix添加报警媒介的直接链接">​</a></h3><blockquote><ul><li>Zabbix / 报警媒介类型 / 添加
<img loading="lazy" src="https://cdn.spug.cc/push/usage/zabbix/spug-push-zabbix-alert.png" class="img_ABpA"></li></ul></blockquote><div class="language-shell codeBlockContainer_azwa theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_kMmd"><pre tabindex="0" class="prism-code language-shell codeBlock_eq8c thin-scrollbar"><code class="codeBlockLines_M058"><span class="token-line" style="color:#393A34"><span class="token plain">  名称：推送助手报警</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  类型：脚本</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  脚本名称：spug_push_alert.sh</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  脚本参数1：abPampgaabc   //粘贴上面拷贝的推助手模版编码</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  脚本参数2：</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">ALERT.MESSAGE</span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre><div class="buttonGroup_VjRJ"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_nkyW" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_nr7X"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_P_G1"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><blockquote><ul><li>配置 Message templates，添加报警发送内容</li><li>将下面的消息内容拷贝到你的zabbix templates消息里面，主题可以自己随便定义</li></ul></blockquote><p><img loading="lazy" src="https://cdn.spug.cc/push/usage/zabbix/spug-push-zabbix-template-error.png" class="img_ABpA"></p><ul><li>Message type： 问题</li></ul><div class="language-shell codeBlockContainer_azwa theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_kMmd"><pre tabindex="0" class="prism-code language-shell codeBlock_eq8c thin-scrollbar"><code class="codeBlockLines_M058"><span class="token-line" style="color:#393A34"><span class="token assign-left variable" style="color:#36acaa">status</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">TRIGGER.STATUS</span><span class="token punctuation" style="color:#393A34">}</span><span class="token operator" style="color:#393A34">&amp;</span><span class="token assign-left variable" style="color:#36acaa">name</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">EVENT.NAME</span><span class="token punctuation" style="color:#393A34">}</span><span class="token operator" style="color:#393A34">&amp;</span><span class="token assign-left variable" style="color:#36acaa">severity</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">EVENT.SEVERITY</span><span class="token punctuation" style="color:#393A34">}</span><span class="token operator" style="color:#393A34">&amp;</span><span class="token assign-left variable" style="color:#36acaa">date</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">EVENT.DATE</span><span class="token punctuation" style="color:#393A34">}</span><span class="token operator" style="color:#393A34">&amp;</span><span class="token assign-left variable" style="color:#36acaa">time</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">EVENT.TIME</span><span class="token punctuation" style="color:#393A34">}</span><span class="token operator" style="color:#393A34">&amp;</span><span class="token assign-left variable" style="color:#36acaa">age</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">EVENT.AGE</span><span class="token punctuation" style="color:#393A34">}</span><span class="token operator" style="color:#393A34">&amp;</span><span class="token assign-left variable" style="color:#36acaa">ip</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">HOST.IP</span><span class="token punctuation" style="color:#393A34">}</span><span class="token operator" style="color:#393A34">&amp;</span><span class="token assign-left variable" style="color:#36acaa">hostname</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">HOST.NAME</span><span class="token punctuation" style="color:#393A34">}</span><span class="token operator" style="color:#393A34">&amp;</span><span class="token assign-left variable" style="color:#36acaa">key</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">TRIGGER.KEY1</span><span class="token punctuation" style="color:#393A34">}</span><span class="token operator" style="color:#393A34">&amp;</span><span class="token assign-left variable" style="color:#36acaa">value</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">ITEM.LASTVALUE</span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre><div class="buttonGroup_VjRJ"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_nkyW" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_nr7X"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_P_G1"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><blockquote><ul><li>添加报警恢复内容</li><li>将下面的消息内容拷贝到你的zabbix templates消息里面，主题可以自己随便定义
<img loading="lazy" src="https://cdn.spug.cc/push/usage/zabbix/spug-push-template-ok.png" class="img_ABpA"></li></ul></blockquote><ul><li>Message type：Problem recovery</li></ul><div class="language-shell codeBlockContainer_azwa theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_kMmd"><pre tabindex="0" class="prism-code language-shell codeBlock_eq8c thin-scrollbar"><code class="codeBlockLines_M058"><span class="token-line" style="color:#393A34"><span class="token assign-left variable" style="color:#36acaa">status</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">TRIGGER.STATUS</span><span class="token punctuation" style="color:#393A34">}</span><span class="token operator" style="color:#393A34">&amp;</span><span class="token assign-left variable" style="color:#36acaa">name</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">EVENT.NAME</span><span class="token punctuation" style="color:#393A34">}</span><span class="token operator" style="color:#393A34">&amp;</span><span class="token assign-left variable" style="color:#36acaa">severity</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">EVENT.SEVERITY</span><span class="token punctuation" style="color:#393A34">}</span><span class="token operator" style="color:#393A34">&amp;</span><span class="token assign-left variable" style="color:#36acaa">date</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">EVENT.DATE</span><span class="token punctuation" style="color:#393A34">}</span><span class="token operator" style="color:#393A34">&amp;</span><span class="token assign-left variable" style="color:#36acaa">time</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">EVENT.TIME</span><span class="token punctuation" style="color:#393A34">}</span><span class="token operator" style="color:#393A34">&amp;</span><span class="token assign-left variable" style="color:#36acaa">age</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">EVENT.AGE</span><span class="token punctuation" style="color:#393A34">}</span><span class="token operator" style="color:#393A34">&amp;</span><span class="token assign-left variable" style="color:#36acaa">ip</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">HOST.IP</span><span class="token punctuation" style="color:#393A34">}</span><span class="token operator" style="color:#393A34">&amp;</span><span class="token assign-left variable" style="color:#36acaa">hostname</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">HOST.NAME</span><span class="token punctuation" style="color:#393A34">}</span><span class="token operator" style="color:#393A34">&amp;</span><span class="token assign-left variable" style="color:#36acaa">key</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">TRIGGER.KEY1</span><span class="token punctuation" style="color:#393A34">}</span><span class="token operator" style="color:#393A34">&amp;</span><span class="token assign-left variable" style="color:#36acaa">value</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">ITEM.LASTVALUE</span><span class="token punctuation" style="color:#393A34">}</span><span class="token operator" style="color:#393A34">&amp;</span><span class="token assign-left variable" style="color:#36acaa">recovery_date</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">EVENT.RECOVERY.DATE</span><span class="token punctuation" style="color:#393A34">}</span><span class="token operator" style="color:#393A34">&amp;</span><span class="token assign-left variable" style="color:#36acaa">recovery_time</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">EVENT.RECOVERY.TIME</span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre><div class="buttonGroup_VjRJ"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_nkyW" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_nr7X"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_P_G1"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p><img loading="lazy" src="https://cdn.spug.cc/push/usage/zabbix/spug-push-zabbix-template.png" alt="点击更新保存媒介" class="img_ABpA"></p><h3 class="anchor anchorWithStickyNavbar_J8e2" id="添加zabbix报警报警脚本">添加zabbix报警报警脚本<a href="#添加zabbix报警报警脚本" class="hash-link" aria-label="添加zabbix报警报警脚本的直接链接" title="添加zabbix报警报警脚本的直接链接">​</a></h3><blockquote><p>登录zabbix-server服务器，添加zabbix执行的报警媒介脚本</p></blockquote><div class="language-shell codeBlockContainer_azwa theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_kMmd"><pre tabindex="0" class="prism-code language-shell codeBlock_eq8c thin-scrollbar"><code class="codeBlockLines_M058"><span class="token-line" style="color:#393A34"><span class="token plain">$ </span><span class="token function" style="color:#d73a49">vim</span><span class="token plain"> /usr/lib/zabbix/alertscripts/spug_push.sh</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">#!/bin/bash</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">/usr/bin/curl -X POST -d </span><span class="token string" style="color:#e3116c">"</span><span class="token string variable" style="color:#36acaa">$2</span><span class="token string" style="color:#e3116c">"</span><span class="token plain"> https://push.spug.cc/send/</span><span class="token variable" style="color:#36acaa">$1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># 添加脚本执行权限</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">$ </span><span class="token function" style="color:#d73a49">chmod</span><span class="token plain"> +x  /usr/lib/zabbix/alertscripts/spug_push.sh</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span></code></pre><div class="buttonGroup_VjRJ"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_nkyW" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_nr7X"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_P_G1"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h3 class="anchor anchorWithStickyNavbar_J8e2" id="添加zabbix报警用户">添加Zabbix报警用户<a href="#添加zabbix报警用户" class="hash-link" aria-label="添加Zabbix报警用户的直接链接" title="添加Zabbix报警用户的直接链接">​</a></h3><blockquote><p>Zabbix / 管理 / 用户 / 关联推送助手报警媒介 / <strong>用户权限需要给超级管理员权限</strong>
<img loading="lazy" src="https://cdn.spug.cc/push/usage/zabbix/zabbix-user-add.png" class="img_ABpA">
<img loading="lazy" src="https://cdn.spug.cc/push/usage/zabbix/zabbix-user-obj.png" class="img_ABpA">
<img loading="lazy" src="https://cdn.spug.cc/push/usage/zabbix/zabbix-user-alert.png" class="img_ABpA"></p></blockquote><h3 class="anchor anchorWithStickyNavbar_J8e2" id="添加zabbix触发器">添加Zabbix触发器<a href="#添加zabbix触发器" class="hash-link" aria-label="添加Zabbix触发器的直接链接" title="添加Zabbix触发器的直接链接">​</a></h3><blockquote><p>Zabbix / 配置 / 动作 / Trigger Action / 创建动作 / 配置报警发送用户和恢复信息发送用户
<img loading="lazy" src="https://cdn.spug.cc/push/usage/zabbix/zabbix-action-add.png" class="img_ABpA">
<img loading="lazy" src="https://cdn.spug.cc/push/usage/zabbix/zabbix-action-send-user.png" class="img_ABpA">
<img loading="lazy" src="https://cdn.spug.cc/push/usage/zabbix/zabbix-action-send-recover-user.png" class="img_ABpA">
<img loading="lazy" src="https://cdn.spug.cc/push/usage/zabbix/zabbix-action-done.png" class="img_ABpA"></p></blockquote><h3 class="anchor anchorWithStickyNavbar_J8e2" id="验证电话短信机器人报警">验证电话、短信、机器人报警<a href="#验证电话短信机器人报警" class="hash-link" aria-label="验证电话、短信、机器人报警的直接链接" title="验证电话、短信、机器人报警的直接链接">​</a></h3><blockquote><ul><li>可以手动触发一下报警，测试一下报警发送。
<img loading="lazy" src="https://cdn.spug.cc/push/usage/zabbix/zabbix-template-view.png" class="img_ABpA"></li></ul></blockquote><blockquote><ul><li>推送助手平台 / 推送日志 也可以看到发送的历史消息。
<img loading="lazy" src="https://cdn.spug.cc/push/usage/zabbix/spug-push-log.png" class="img_ABpA"></li></ul></blockquote><h3 class="anchor anchorWithStickyNavbar_J8e2" id="关于spug推送助手">关于Spug推送助手:<a href="#关于spug推送助手" class="hash-link" aria-label="关于Spug推送助手:的直接链接" title="关于Spug推送助手:的直接链接">​</a></h3><blockquote><p>推送助手是一个集成了电话、短信、邮件、飞书、钉钉、微信、企业微信等多通道的消息推送平台。
用户只需要调用一个简单的URL，就可以完成多通道的消息推送。链接：<a href="https://push.spug.cc" target="_blank" rel="noopener noreferrer">push.spug.cc</a></p></blockquote><hr><p>更多资讯、视频、欢迎关注公众号： <strong>Spug社区</strong></p><p><img loading="lazy" src="https://cdn.spug.cc/img/spug-club.jpg" alt="Spug社区" class="img_ABpA"></p>]]></content:encoded>
            <category>电话报警</category>
            <category>zabbix电话报警</category>
            <category>zabbix短信报警</category>
            <category>zabbix机器人报警</category>
        </item>
        <item>
            <title><![CDATA[脚本3分钟实现电话报警]]></title>
            <link>https://spug.cc/blog/bash-alert</link>
            <guid>https://spug.cc/blog/bash-alert</guid>
            <pubDate>Thu, 30 Mar 2023 12:48:57 GMT</pubDate>
            <description><![CDATA[脚本3分钟配置好电话、短信、飞书、钉钉、微信报警]]></description>
            <content:encoded><![CDATA[<p>运维在日常工作中，会写很多脚本，但是脚本想支持电话短信报警却比较麻烦，要想让脚本支持电话、短信报警，一般要在电话短信运营商平台提交资料审核才可以，有些运营商平台还需要提交企业资质才可以，这就给运维带来了很多门槛，那么现在使用Spug推送助手不需要任何资质，微信扫码登录就可以实现脚本发短信打电话。</p><h3 class="anchor anchorWithStickyNavbar_J8e2" id="1配置电话短信模板">1、配置电话短信模板<a href="#1配置电话短信模板" class="hash-link" aria-label="1、配置电话短信模板的直接链接" title="1、配置电话短信模板的直接链接">​</a></h3><blockquote><p>打开推送助手(push.spug.cc) / 消息模版 / 新建 / 选择电话短信 / 配置模板 / 配置通知手机号</p></blockquote><p><img loading="lazy" src="https://cdn.spug.cc/push/wechat/2212/push-add1.png" class="img_ABpA">
<img loading="lazy" src="https://cdn.spug.cc/push/wechat/2212/push-add2.png" class="img_ABpA">
<img loading="lazy" src="https://cdn.spug.cc/push/wechat/2212/push-add3.png" class="img_ABpA">
<img loading="lazy" src="https://cdn.spug.cc/push/wechat/2212/push-add4.png" class="img_ABpA"></p><h3 class="anchor anchorWithStickyNavbar_J8e2" id="2配置完模板复制模板-url就可以用脚本打电话发短信">2、配置完模板，复制模板 URL，就可以用脚本打电话发短信<a href="#2配置完模板复制模板-url就可以用脚本打电话发短信" class="hash-link" aria-label="2、配置完模板，复制模板 URL，就可以用脚本打电话发短信的直接链接" title="2、配置完模板，复制模板 URL，就可以用脚本打电话发短信的直接链接">​</a></h3><p><img loading="lazy" src="https://cdn.spug.cc/push/wechat/2212/push-add4.png" class="img_ABpA"></p><h3 class="anchor anchorWithStickyNavbar_J8e2" id="3先测试一下是否能正常打电话">3、先测试一下是否能正常打电话<a href="#3先测试一下是否能正常打电话" class="hash-link" aria-label="3、先测试一下是否能正常打电话的直接链接" title="3、先测试一下是否能正常打电话的直接链接">​</a></h3><div class="codeBlockContainer_azwa theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_kMmd"><pre tabindex="0" class="prism-code language-text codeBlock_eq8c thin-scrollbar"><code class="codeBlockLines_M058"><span class="token-line" style="color:#393A34"><span class="token plain"># 命令执行curl命令测试打电话发短信，key1 和key2 是模板里面接受的二个变量</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[root@manage]# curl "https://push.spug.cc/send/byPj9N3xxxYQ?key1=测试报警&amp;key2=服务器IPxxxx"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">{"code": 200, "msg": "请求成功"}</span><br></span></code></pre><div class="buttonGroup_VjRJ"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_nkyW" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_nr7X"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_P_G1"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p><img loading="lazy" src="https://cdn.spug.cc/push/wechat/2212/push-test2.png" class="img_ABpA">
<img loading="lazy" src="https://cdn.spug.cc/push/wechat/2212/push-test3.png" class="img_ABpA"></p><h3 class="anchor anchorWithStickyNavbar_J8e2" id="4编写脚本监控mysql和主从同步发生异常推送电话短信报警">4、编写脚本监控Mysql和主从同步，发生异常推送电话短信报警<a href="#4编写脚本监控mysql和主从同步发生异常推送电话短信报警" class="hash-link" aria-label="4、编写脚本监控Mysql和主从同步，发生异常推送电话短信报警的直接链接" title="4、编写脚本监控Mysql和主从同步，发生异常推送电话短信报警的直接链接">​</a></h3><div class="codeBlockContainer_azwa theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_kMmd"><pre tabindex="0" class="prism-code language-text codeBlock_eq8c thin-scrollbar"><code class="codeBlockLines_M058"><span class="token-line" style="color:#393A34"><span class="token plain">[root@manage]# vim mysql_alert.sh</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">#!/bin/bash</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">mysql_user="repl"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">mysql_pass="repl@password"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">mysql_status=`netstat -nl | awk 'NR&gt;2{if ($4 ~ /.*:3306/) {print "Yes";exit 0}}'`</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">if [ "$mysql_status" == "Yes" ];then</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        slave_status=`mysql -u${mysql_user} -p${mysql_pass} -e"show slave status\G" | grep "Running" | awk '{if ($2 != "Yes") {print "No";exit 1}}'`</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        if [ "$slave_status" == "No" ];then</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                echo "slave is not working!"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                # 主从同步异常推送电话短信报警</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                curl "https://push.spug.cc/send/byPj9N3xxxYQ?key1=Mysql主从同步&amp;key2=服务器IP:192.168.100.1"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        else</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                echo "slave is working."</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        fi</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">else</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        [ ! -f "/tmp/mysql_down" ] &amp;&amp; echo "Mysql Server is down!" | mail -s "Warn!MySQL server is down!" ${email_addr}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        # mysql进程异常电话短信报警</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        curl "https://push.spug.cc/send/byPj9N3xxxYQ?key1=Mysql进程&amp;key2=192.168.100.1"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">fi</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span></code></pre><div class="buttonGroup_VjRJ"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_nkyW" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_nr7X"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_P_G1"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h3 class="anchor anchorWithStickyNavbar_J8e2" id="5验证电话短信报警">5、验证电话短信报警<a href="#5验证电话短信报警" class="hash-link" aria-label="5、验证电话短信报警的直接链接" title="5、验证电话短信报警的直接链接">​</a></h3><p><img loading="lazy" src="https://cdn.spug.cc/push/wechat/2212/push-test4.png" class="img_ABpA"></p><h3 class="anchor anchorWithStickyNavbar_J8e2" id="6支持更多渠道报警发送">6、支持更多渠道报警发送<a href="#6支持更多渠道报警发送" class="hash-link" aria-label="6、支持更多渠道报警发送的直接链接" title="6、支持更多渠道报警发送的直接链接">​</a></h3><p>如果想让脚本支持邮件、钉钉、飞书、企业微信报警，只需要在推送助手平台上编辑模板，把邮件、钉钉、飞书、企业微信打开配置一下就可以实现不改动脚本的情况下实现。</p><p><img loading="lazy" src="https://cdn.spug.cc/push/wechat/2212/push-config1.png" class="img_ABpA">
<img loading="lazy" src="https://cdn.spug.cc/push/wechat/2212/push-config2.png" class="img_ABpA">
<img loading="lazy" src="https://cdn.spug.cc/push/wechat/2212/push-config3.png" class="img_ABpA"></p><h4 class="anchor anchorWithStickyNavbar_J8e2" id="飞书钉钉企业微信邮件报警模板内容">飞书、钉钉、企业微信、邮件报警模板内容：<a href="#飞书钉钉企业微信邮件报警模板内容" class="hash-link" aria-label="飞书、钉钉、企业微信、邮件报警模板内容：的直接链接" title="飞书、钉钉、企业微信、邮件报警模板内容：的直接链接">​</a></h4><div class="codeBlockContainer_azwa theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_kMmd"><pre tabindex="0" class="prism-code language-text codeBlock_eq8c thin-scrollbar"><code class="codeBlockLines_M058"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">## &lt;font color='#f90202'&gt; ${key1} 发生异常 &lt;/font&gt; ##</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">**报警项目：** ${key1} </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">**报警主机：** ${key2} </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span></code></pre><div class="buttonGroup_VjRJ"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_nkyW" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_nr7X"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_P_G1"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_J8e2" id="飞书群收到的报警">飞书群收到的报警<a href="#飞书群收到的报警" class="hash-link" aria-label="飞书群收到的报警的直接链接" title="飞书群收到的报警的直接链接">​</a></h4><p><img loading="lazy" src="https://cdn.spug.cc/push/wechat/2212/push-msg1.png" class="img_ABpA"></p><h4 class="anchor anchorWithStickyNavbar_J8e2" id="钉钉群收到的报警">钉钉群收到的报警<a href="#钉钉群收到的报警" class="hash-link" aria-label="钉钉群收到的报警的直接链接" title="钉钉群收到的报警的直接链接">​</a></h4><p><img loading="lazy" src="https://cdn.spug.cc/push/wechat/2212/push-msg2.png" class="img_ABpA"></p><hr><h3 class="anchor anchorWithStickyNavbar_J8e2" id="关于推送助手">关于推送助手<a href="#关于推送助手" class="hash-link" aria-label="关于推送助手的直接链接" title="关于推送助手的直接链接">​</a></h3><blockquote><p>上海时巴克科技有限公司旗下的推送产品，公司旗下现有产品「Spug开源运维平台」「Spug推送助手」「监控助手」「SSL证书监控」，公司专注为中小企业服务，推送助手帮助用户简单快速实现电话、短信、邮件、飞书、钉钉、微信、企业微信等多通道消息推送。 官网链接：push.spug.cc</p></blockquote><hr><p>更多资讯、视频、欢迎关注公众号“<strong>Spug社区</strong>”</p><p><img loading="lazy" src="https://cdn.spug.cc/img/spug-club.jpg" alt="Spug社区" class="img_ABpA"></p>]]></content:encoded>
            <category>电话报警</category>
            <category>脚本打电话</category>
        </item>
        <item>
            <title><![CDATA[夜莺监控一键接入电话短信报警]]></title>
            <link>https://spug.cc/blog/nightingale-push</link>
            <guid>https://spug.cc/blog/nightingale-push</guid>
            <pubDate>Thu, 30 Mar 2023 12:48:57 GMT</pubDate>
            <description><![CDATA[夜莺监控]]></description>
            <content:encoded><![CDATA[<h3 class="anchor anchorWithStickyNavbar_J8e2" id="夜莺监控">夜莺监控<a href="#夜莺监控" class="hash-link" aria-label="夜莺监控的直接链接" title="夜莺监控的直接链接">​</a></h3><p>Nightingale | 夜莺监控，一款先进的开源云原生监控分析系统，采用 All-In-One 的设计，集数据采集、可视化、监控告警、数据分析于一体，与云原生生态紧密集成，提供开箱即用的企业级监控分析和告警能力。于 2022 年 5 月 11 日，捐赠予中国计算机学会开源发展委员会(CCF ODC)，为 CCF ODC 成立后接受捐赠的首个开源项目</p><p>官方地址：<a href="https://n9e.github.io/" target="_blank" rel="noopener noreferrer">https://n9e.github.io/</a></p><h3 class="anchor anchorWithStickyNavbar_J8e2" id="夜莺配置电话短信报警">夜莺配置电话短信报警<a href="#夜莺配置电话短信报警" class="hash-link" aria-label="夜莺配置电话短信报警的直接链接" title="夜莺配置电话短信报警的直接链接">​</a></h3><p>夜莺监控社区版是使用人数最多的版本，但社区版本的夜莺监控不支持电话短信报警，对于运维来说电话报警是很重要的报警渠道，最近就有很多用户跟我们建议，让Spug推送助手来支持一下夜莺监控电话短信报警，下面就以夜莺监控社区版本如何支持电话短信报警来描述一下配置过程</p><h3 class="anchor anchorWithStickyNavbar_J8e2" id="使用夜莺监控模版">使用夜莺监控模版<a href="#使用夜莺监控模版" class="hash-link" aria-label="使用夜莺监控模版的直接链接" title="使用夜莺监控模版的直接链接">​</a></h3><ul><li>打开推送助手官网 / 模版市场 / 夜莺监控 / 使用模版 </li></ul><p><img loading="lazy" src="https://cdn.spug.cc/push/usage/nightingale/push-spug-yeying.jpg" class="img_ABpA"></p><ul><li>配置要推送报警的电话/短信报警手机号
<img loading="lazy" src="https://cdn.spug.cc/push/usage/nightingale/push-yeying1.png" class="img_ABpA"></li></ul><ul><li><p>配置完成推送对象后，拷贝模板URL</p><p><img loading="lazy" src="https://cdn.spug.cc/push/usage/nightingale/push-yeying2.png" class="img_ABpA"></p></li></ul><h3 class="anchor anchorWithStickyNavbar_J8e2" id="夜莺通知配置">夜莺通知配置<a href="#夜莺通知配置" class="hash-link" aria-label="夜莺通知配置的直接链接" title="夜莺通知配置的直接链接">​</a></h3><ul><li><p>编辑告警规则的通知配置，回调地址栏填写上一步拷贝的URL</p><p><img loading="lazy" src="https://cdn.spug.cc/push/usage/nightingale/nightingale.png" class="img_ABpA"></p></li></ul><h3 class="anchor anchorWithStickyNavbar_J8e2" id="验证电话短信机器人报警">验证电话、短信、机器人报警<a href="#验证电话短信机器人报警" class="hash-link" aria-label="验证电话、短信、机器人报警的直接链接" title="验证电话、短信、机器人报警的直接链接">​</a></h3><ul><li><p>可以手动触发一下报警，测试一下报警发送。</p></li><li><p>推送助手平台 / 推送日志 也可以看到发送的历史消息。</p><p><img loading="lazy" src="https://cdn.spug.cc/push/usage/zabbix/spug-push-log.png" class="img_ABpA"></p></li></ul><h3 class="anchor anchorWithStickyNavbar_J8e2" id="其他监控系统支持">其他监控系统支持<a href="#其他监控系统支持" class="hash-link" aria-label="其他监控系统支持的直接链接" title="其他监控系统支持的直接链接">​</a></h3><p>如果你希望推送助手支持其他监控系统，可以在这里反馈：<a href="https://support.qq.com/product/406949" target="_blank" rel="noopener noreferrer">https://support.qq.com/product/406949</a></p><hr><p>更多资讯、视频、欢迎关注公众号“<strong>Spug社区</strong>”</p><p><img loading="lazy" src="https://cdn.spug.cc/img/spug-club.jpg" alt="Spug社区" class="img_ABpA"></p>]]></content:encoded>
            <category>夜莺监控电话报警</category>
            <category>夜莺监控短信报警</category>
        </item>
        <item>
            <title><![CDATA[Spug推送助手一分钟实现电话报警]]></title>
            <link>https://spug.cc/blog/spug-push-introduction</link>
            <guid>https://spug.cc/blog/spug-push-introduction</guid>
            <pubDate>Tue, 28 Jun 2022 00:07:34 GMT</pubDate>
            <description><![CDATA[推送助手是什么？]]></description>
            <content:encoded><![CDATA[<h3 class="anchor anchorWithStickyNavbar_J8e2" id="推送助手是什么">推送助手是什么？<a href="#推送助手是什么" class="hash-link" aria-label="推送助手是什么？的直接链接" title="推送助手是什么？的直接链接">​</a></h3><p>推送助手是一个集成了电话、短信、邮件、飞书、钉钉、微信、企业微信等多通道的消息推送平台。</p><p>用户只需要调用一个简单的URL，就可以完成多通道的消息推送。</p><h3 class="anchor anchorWithStickyNavbar_J8e2" id="推送助手场景">推送助手场景：<a href="#推送助手场景" class="hash-link" aria-label="推送助手场景：的直接链接" title="推送助手场景：的直接链接">​</a></h3><p>推送助手可以用来做登录短信验证、报警消息短信电话通知、重置密码邮件接收、飞书机器人、钉钉机器人、微信机器人等消息推送，可以满足不同渠道消息推送。</p><h3 class="anchor anchorWithStickyNavbar_J8e2" id="为什么选推送助手">为什么选推送助手？<a href="#为什么选推送助手" class="hash-link" aria-label="为什么选推送助手？的直接链接" title="为什么选推送助手？的直接链接">​</a></h3><ul><li>使用超级简单：只需要调用简单的url就可以实现不同渠道的消息推送</li><li>快速接入：不需要对接多种平台接口，一分钟实现短信、电话、邮件等推送能力，节省时间成本</li><li>高效稳定：系统支持高并发、高可靠性，快速推送目标渠道</li></ul><h3 class="anchor anchorWithStickyNavbar_J8e2" id="如何使用">如何使用？<a href="#如何使用" class="hash-link" aria-label="如何使用？的直接链接" title="如何使用？的直接链接">​</a></h3><ul><li>1、微信扫一扫注册用户 </li><li>2、选择消息通道，创建消息模版 </li><li>3、复制 URL，发送消息</li></ul><h3 class="anchor anchorWithStickyNavbar_J8e2" id="短信发送">短信发送<a href="#短信发送" class="hash-link" aria-label="短信发送的直接链接" title="短信发送的直接链接">​</a></h3><p><img loading="lazy" src="https://cdn.spug.cc/blog/push-release/push-login.png" alt="注册用户" class="img_ABpA">
<img loading="lazy" src="https://cdn.spug.cc/blog/push-release/push-add.png" alt="创建短信模版" class="img_ABpA">
<img loading="lazy" src="https://cdn.spug.cc/blog/push-release/push-copy-url.png" alt="拷贝URL" class="img_ABpA">
<img loading="lazy" src="https://cdn.spug.cc/blog/push-release/push-curl.png" alt="发送短信" class="img_ABpA">
<img loading="lazy" src="https://cdn.spug.cc/blog/push-release/push-sms.png" alt="收到短信" class="img_ABpA"></p><h3 class="anchor anchorWithStickyNavbar_J8e2" id="群组是什么">群组是什么？<a href="#群组是什么" class="hash-link" aria-label="群组是什么？的直接链接" title="群组是什么？的直接链接">​</a></h3><p>当你想把一条消息，同时推送给多个人时就可以通过创建群组功能，在执行URL时添加group参数就可以</p><p><img loading="lazy" src="https://cdn.spug.cc/blog/push-release/push-group.png" alt="创建群组" class="img_ABpA">
<img loading="lazy" src="https://cdn.spug.cc/blog/push-release/push-group-curl.png" alt="群发消息" class="img_ABpA"></p><h3 class="anchor anchorWithStickyNavbar_J8e2" id="关于推送助手">关于推送助手<a href="#关于推送助手" class="hash-link" aria-label="关于推送助手的直接链接" title="关于推送助手的直接链接">​</a></h3><blockquote><p>上海时巴克科技有限公司旗下的推送产品，公司旗下现有产品「Spug开源运维平台」「Spug推送助手」，公司专注为中小企业服务，推送助手帮助用户快速实现电话、短信、邮件、飞书、钉钉、微信、企业微信等多通道消息快速推送。
官网链接：push.spug.cc</p></blockquote><hr><p>更多资讯、视频、欢迎关注公众号“<strong>Spug社区</strong>”</p><p><img loading="lazy" src="https://cdn.spug.cc/img/spug-club.jpg" alt="Spug社区" class="img_ABpA"></p>]]></content:encoded>
            <category>推送助手</category>
            <category>短信推送</category>
            <category>电话推送</category>
            <category>邮件推送</category>
            <category>飞书推送</category>
            <category>钉钉推送</category>
            <category>微信推送</category>
            <category>企业微信推送</category>
        </item>
        <item>
            <title><![CDATA[Spug推送助手发布]]></title>
            <link>https://spug.cc/blog/spug-push-release</link>
            <guid>https://spug.cc/blog/spug-push-release</guid>
            <pubDate>Tue, 28 Jun 2022 00:07:34 GMT</pubDate>
            <description><![CDATA[推送助手是什么？]]></description>
            <content:encoded><![CDATA[<h3 class="anchor anchorWithStickyNavbar_J8e2" id="推送助手是什么">推送助手是什么？<a href="#推送助手是什么" class="hash-link" aria-label="推送助手是什么？的直接链接" title="推送助手是什么？的直接链接">​</a></h3><p>推送助手是一个集成了电话、短信、邮件、飞书、钉钉、微信、企业微信等多通道的消息推送平台。</p><p>用户只需要调用一个简单的URL，就可以完成多通道的消息推送。</p><h3 class="anchor anchorWithStickyNavbar_J8e2" id="推送助手场景">推送助手场景：<a href="#推送助手场景" class="hash-link" aria-label="推送助手场景：的直接链接" title="推送助手场景：的直接链接">​</a></h3><p>推送助手可以用来做登录短信验证、报警消息短信电话通知、重置密码邮件接收、飞书机器人、钉钉机器人、微信机器人等消息推送，可以满足不同渠道消息推送。</p><h3 class="anchor anchorWithStickyNavbar_J8e2" id="为什么选推送助手">为什么选推送助手？<a href="#为什么选推送助手" class="hash-link" aria-label="为什么选推送助手？的直接链接" title="为什么选推送助手？的直接链接">​</a></h3><ul><li>使用超级简单：只需要调用简单的url就可以实现不同渠道的消息推送</li><li>快速接入：不需要对接多种平台接口，一分钟实现短信、电话、邮件等推送能力，节省时间成本</li><li>高效稳定：系统支持高并发、高可靠性，快速推送目标渠道</li></ul><h3 class="anchor anchorWithStickyNavbar_J8e2" id="如何使用">如何使用？<a href="#如何使用" class="hash-link" aria-label="如何使用？的直接链接" title="如何使用？的直接链接">​</a></h3><ul><li>1、微信扫一扫注册用户 </li><li>2、选择消息通道，创建消息模版 </li><li>3、复制 URL，发送消息</li></ul><h3 class="anchor anchorWithStickyNavbar_J8e2" id="短信发送">短信发送<a href="#短信发送" class="hash-link" aria-label="短信发送的直接链接" title="短信发送的直接链接">​</a></h3><p><img loading="lazy" src="https://cdn.spug.cc/blog/push-release/push-login.png" alt="注册用户" class="img_ABpA">
<img loading="lazy" src="https://cdn.spug.cc/blog/push-release/push-add.png" alt="创建短信模版" class="img_ABpA">
<img loading="lazy" src="https://cdn.spug.cc/blog/push-release/push-copy-url.png" alt="拷贝URL" class="img_ABpA">
<img loading="lazy" src="https://cdn.spug.cc/blog/push-release/push-curl.png" alt="发送短信" class="img_ABpA">
<img loading="lazy" src="https://cdn.spug.cc/blog/push-release/push-sms.png" alt="收到短信" class="img_ABpA"></p><h3 class="anchor anchorWithStickyNavbar_J8e2" id="群组是什么">群组是什么？<a href="#群组是什么" class="hash-link" aria-label="群组是什么？的直接链接" title="群组是什么？的直接链接">​</a></h3><p>当你想把一条消息，同时推送给多个人时就可以通过创建群组功能，在执行URL时添加group参数就可以</p><p><img loading="lazy" src="https://cdn.spug.cc/blog/push-release/push-group.png" alt="创建群组" class="img_ABpA">
<img loading="lazy" src="https://cdn.spug.cc/blog/push-release/push-group-curl.png" alt="群发消息" class="img_ABpA"></p><h3 class="anchor anchorWithStickyNavbar_J8e2" id="关于推送助手">关于推送助手<a href="#关于推送助手" class="hash-link" aria-label="关于推送助手的直接链接" title="关于推送助手的直接链接">​</a></h3><blockquote><p>上海时巴克科技有限公司旗下的推送产品，公司旗下现有产品「Spug开源运维平台」「Spug推送助手」，公司专注为中小企业服务，推送助手帮助用户快速实现电话、短信、邮件、飞书、钉钉、微信、企业微信等多通道消息快速推送。
官网链接：push.spug.cc</p></blockquote><hr><p>更多资讯、视频、欢迎关注公众号“<strong>Spug社区</strong>”</p><p><img loading="lazy" src="https://cdn.spug.cc/img/spug-club.jpg" alt="Spug社区" class="img_ABpA"></p>]]></content:encoded>
            <category>消息推送</category>
            <category>短信报警</category>
            <category>电话报警</category>
            <category>钉钉推送</category>
            <category>飞书推送</category>
            <category>微信推送</category>
        </item>
        <item>
            <title><![CDATA[3.1.0更新内容]]></title>
            <link>https://spug.cc/blog/update/3.1.0</link>
            <guid>https://spug.cc/blog/update/3.1.0</guid>
            <pubDate>Tue, 19 Apr 2022 08:47:47 GMT</pubDate>
            <description><![CDATA[Web 终端]]></description>
            <content:encoded><![CDATA[<h3 class="anchor anchorWithStickyNavbar_J8e2" id="web-终端">Web 终端<a href="#web-终端" class="hash-link" aria-label="Web 终端的直接链接" title="Web 终端的直接链接">​</a></h3><p>本次更新对 Web 终端做了很多的改进和增强。</p><h4 class="anchor anchorWithStickyNavbar_J8e2" id="文件管理模式">文件管理模式<a href="#文件管理模式" class="hash-link" aria-label="文件管理模式的直接链接" title="文件管理模式的直接链接">​</a></h4><p>当某些时候只想让一些用户能够查看服务器上文件但不需要操作命令行时，可以只给这些用户分配 <code>文件管理</code> 权限。</p><p><img loading="lazy" src="https://cdn.leiem.cn/blog/blog/2022/04/image-20220419160200191.png" alt="image-20220419160200191" class="img_ABpA"></p><p>这时用户访问 <code>Web 终端</code> 时看到如下效果</p><p><img loading="lazy" src="https://cdn.leiem.cn/blog/blog/2022/04/image-20220419160312272.png" alt="image-20220419160312272" class="img_ABpA"></p><h4 class="anchor anchorWithStickyNavbar_J8e2" id="标签栏菜单">标签栏菜单<a href="#标签栏菜单" class="hash-link" aria-label="标签栏菜单的直接链接" title="标签栏菜单的直接链接">​</a></h4><p>在主机标签栏新增了右键菜单及双击标签快速复制的功能。</p><p><img loading="lazy" src="https://cdn.leiem.cn/blog/blog/2022/04/image-20220419160722334.png" alt="image-20220419160722334" class="img_ABpA"></p><h4 class="anchor anchorWithStickyNavbar_J8e2" id="窗口宽度自由调整">窗口宽度自由调整<a href="#窗口宽度自由调整" class="hash-link" aria-label="窗口宽度自由调整的直接链接" title="窗口宽度自由调整的直接链接">​</a></h4><p>再也不怕主机名称过长显示不完整了</p><p><img loading="lazy" src="https://cdn.leiem.cn/blog/blog/2022/04/1650356388120.gif" alt="1650356388120" class="img_ABpA"></p><h3 class="anchor anchorWithStickyNavbar_J8e2" id="批量执行模版参数化">批量执行模版参数化<a href="#批量执行模版参数化" class="hash-link" aria-label="批量执行模版参数化的直接链接" title="批量执行模版参数化的直接链接">​</a></h3><p>现在的模版支持配置参数了，提供在执行时的交互能力，目前仅支持3种创建的参数类型</p><p><img loading="lazy" src="https://cdn.leiem.cn/blog/blog/2022/04/image-20220419163520281.png" alt="image-20220419163520281" class="img_ABpA"></p><p>当执行模版时会弹出交互的参数输入框</p><p><img loading="lazy" src="https://cdn.leiem.cn/blog/blog/2022/04/image-20220419162842796.png" alt="image-20220419162842796" class="img_ABpA"></p><h3 class="anchor anchorWithStickyNavbar_J8e2" id="自定义发布配置调整动作顺序">自定义发布配置调整动作顺序<a href="#自定义发布配置调整动作顺序" class="hash-link" aria-label="自定义发布配置调整动作顺序的直接链接" title="自定义发布配置调整动作顺序的直接链接">​</a></h3><p>现在自定义发布的动作顺序可以自由调整，不需要删了再加了</p><p><img loading="lazy" src="https://cdn.leiem.cn/blog/blog/2022/04/image-20220419163111158.png" alt="image-20220419163111158" class="img_ABpA"></p><h3 class="anchor anchorWithStickyNavbar_J8e2" id="补偿发布功能">补偿发布功能<a href="#补偿发布功能" class="hash-link" aria-label="补偿发布功能的直接链接" title="补偿发布功能的直接链接">​</a></h3><p>在之前每次发布都会完整执行所有关联主机的发布，现在可以在发布异常后，仅发布失败的主机。</p><p><img loading="lazy" src="https://cdn.leiem.cn/blog/blog/2022/04/image-20220419163342008.png" alt="image-20220419163342008" class="img_ABpA"></p><h3 class="anchor anchorWithStickyNavbar_J8e2" id="其他优化更新">其他优化更新<a href="#其他优化更新" class="hash-link" aria-label="其他优化更新的直接链接" title="其他优化更新的直接链接">​</a></h3><ul><li>工作台的便捷导航模块新增了几个默认图标，省得找logo了</li><li>主机excel导入增加密码字段并优化导入体验，再也不用一个个点着验证了</li><li>Webhook自动发布支持Coding</li><li>优化发布申请列表页展示效果（展示字段很多，可以通过表格右上角的设置来控制显示隐藏字段）</li><li>优化发布配置的克隆功能</li><li>优化角色关联账户显示问题，感谢 @Lucius-chen 的贡献</li><li>发布配置里的Git仓库配置难到一些同学，新增了对私有仓库的辅助配置功能</li><li>新建主机现在默认选中当前分组</li><li>自定义发布新建发布申请已支持文件拖拽上传</li></ul><h3 class="anchor anchorWithStickyNavbar_J8e2" id="注意事项">注意事项<a href="#注意事项" class="hash-link" aria-label="注意事项的直接链接" title="注意事项的直接链接">​</a></h3><ul><li>自 3.1.0 开始不再使用系统自身（~/.ssh/目录下）的密钥，如果有主机依赖这些密钥则可能需要重新验证。</li></ul><div class="theme-admonition theme-admonition-tip alert alert--success admonition_l04S"><div class="admonitionHeading_giW_"><span class="admonitionIcon_JA_F"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>提示</div><div class="admonitionContent_YxFr"><p>升级方法：<a href="/docs/update-version">点击查看</a></p></div></div>]]></content:encoded>
            <category>change-log</category>
        </item>
        <item>
            <title><![CDATA[Webhook自动发布]]></title>
            <link>https://spug.cc/blog/webhook-deploy</link>
            <guid>https://spug.cc/blog/webhook-deploy</guid>
            <pubDate>Tue, 19 Apr 2022 08:47:15 GMT</pubDate>
            <description><![CDATA[通过视频讲解如何通过 Spug Webhook 结合 Git 仓库实现自动发布更新。]]></description>
            <content:encoded><![CDATA[<p>通过视频讲解如何通过 Spug Webhook 结合 Git 仓库实现自动发布更新。</p><iframe src="https://player.bilibili.com/player.html?aid=683372525&amp;bvid=BV1qS4y1A7Ws&amp;cid=578995470&amp;page=1&amp;danmaku=0&amp;as_wide=1&amp;high_quality=1" allowfullscreen="" width="100%" height="500" scrolling="no"></iframe>]]></content:encoded>
            <category>Tutorials</category>
        </item>
        <item>
            <title><![CDATA[Spug主机管理]]></title>
            <link>https://spug.cc/blog/host-manage</link>
            <guid>https://spug.cc/blog/host-manage</guid>
            <pubDate>Mon, 07 Mar 2022 07:47:51 GMT</pubDate>
            <description><![CDATA[Spug主机管理 包含：主机信息同步、主机硬件配置信息自动同步、主机在线终端管理、文件在线上传下载删除等功能。]]></description>
            <content:encoded><![CDATA[<div class="theme-admonition theme-admonition-tip alert alert--success admonition_l04S"><div class="admonitionHeading_giW_"><span class="admonitionIcon_JA_F"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>提示</div><div class="admonitionContent_YxFr"><p><strong>Spug主机管理</strong> 包含：主机信息同步、主机硬件配置信息自动同步、主机在线终端管理、文件在线上传下载删除等功能。
视频链接：<a href="https://www.bilibili.com/video/BV1Fb4y1B7fR/" target="_blank" rel="noopener noreferrer">https://www.bilibili.com/video/BV1Fb4y1B7fR/</a></p></div></div><h3 class="anchor anchorWithStickyNavbar_J8e2" id="主机分组">主机分组<a href="#主机分组" class="hash-link" aria-label="主机分组的直接链接" title="主机分组的直接链接">​</a></h3><p>在主机管理 / 主机分组 可以鼠标右键创建、重命名、删除分组</p><p><img loading="lazy" src="https://cdn.spug.cc/blog/host-manage/host-list.png" class="img_ABpA"></p><h3 class="anchor anchorWithStickyNavbar_J8e2" id="新建主机">新建主机<a href="#新建主机" class="hash-link" aria-label="新建主机的直接链接" title="新建主机的直接链接">​</a></h3><p>新主机可以通过多种方式添加：</p><ul><li>1、通过页面表单新建</li><li>2、通过Excel表格导入</li><li>3、也可以通过输入阿里云、腾讯云Access密钥Key同步到spug系统里面</li></ul><p>spug平台不会在数据库保存目标主机的账号密码，用户第一次输入账号密码后，后续spug会使用自动生成的密钥对进行主机连接</p><p><img loading="lazy" src="https://cdn.spug.cc/blog/host-manage/host-add.png" class="img_ABpA"></p><p>默认Spug会自动生成一个新密钥对，然后使用生成的密钥去链接目标主机，你也可以在【 系统管理 / 系统设置 / 密钥设置 】将自己管理机（例如公司的跳板机服务器）的密钥上传到Spug系统里面，这样就可以直接通过上传的密钥去添加管理主机</p><p><img loading="lazy" src="https://cdn.spug.cc/blog/host-manage/system-key.png" class="img_ABpA"></p><h3 class="anchor anchorWithStickyNavbar_J8e2" id="主机扩展信息">主机扩展信息<a href="#主机扩展信息" class="hash-link" aria-label="主机扩展信息的直接链接" title="主机扩展信息的直接链接">​</a></h3><p>添加完主机spug会自动获取主机配置，点击主机名称，可以打开主机扩展信息（内存、cpu、硬盘、IP信息）也可以对扩展信息进行编辑</p><p><img loading="lazy" src="https://cdn.spug.cc/blog/host-manage/host-view.png" class="img_ABpA"></p><p><img loading="lazy" src="https://cdn.spug.cc/blog/host-manage/host-ext.png" class="img_ABpA"></p><h3 class="anchor anchorWithStickyNavbar_J8e2" id="web在线终端">WEB在线终端<a href="#web在线终端" class="hash-link" aria-label="WEB在线终端的直接链接" title="WEB在线终端的直接链接">​</a></h3><p>主机管理 / Web终端 / 双击要链接的主机后，就可以在线Console管理主机，也可以多次双击主机打开多个窗口</p><p><img loading="lazy" src="https://cdn.spug.cc/blog/host-manage/host-web.png" class="img_ABpA"></p><p><img loading="lazy" src="https://cdn.spug.cc/blog/host-manage/host-ssh.png" class="img_ABpA"></p><h3 class="anchor anchorWithStickyNavbar_J8e2" id="在线文件管理">在线文件管理<a href="#在线文件管理" class="hash-link" aria-label="在线文件管理的直接链接" title="在线文件管理的直接链接">​</a></h3><p>打开主机Web终端后，可以在线对主机文件进行在线管理，可以在线上传、下载、删除文件</p><p><img loading="lazy" src="https://cdn.spug.cc/blog/host-manage/host-file.png" class="img_ABpA"></p><p><img loading="lazy" src="https://cdn.spug.cc/blog/host-manage/host-file2.png" class="img_ABpA"></p><hr><p>更多资讯、视频、欢迎关注公众号“<strong>Spug社区</strong>”</p><p><img loading="lazy" src="https://cdn.spug.cc/img/spug-club.jpg" alt="Spug社区" class="img_ABpA"></p>]]></content:encoded>
            <category>主机管理</category>
        </item>
        <item>
            <title><![CDATA[Java项目配置]]></title>
            <link>https://spug.cc/blog/example-java</link>
            <guid>https://spug.cc/blog/example-java</guid>
            <pubDate>Mon, 07 Mar 2022 07:09:46 GMT</pubDate>
            <description><![CDATA[概览]]></description>
            <content:encoded><![CDATA[<h2 class="anchor anchorWithStickyNavbar_J8e2" id="概览">概览<a href="#概览" class="hash-link" aria-label="概览的直接链接" title="概览的直接链接">​</a></h2><p>以 <code>若依管理系统</code> <a href="https://gitee.com/y_project/RuoYi" target="_blank" rel="noopener noreferrer">https://gitee.com/y_project/RuoYi</a> 作为例子，最终大概是这样子的。</p><div class="theme-admonition theme-admonition-caution alert alert--warning admonition_l04S"><div class="admonitionHeading_giW_"><span class="admonitionIcon_JA_F"><svg viewBox="0 0 16 16"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"></path></svg></span>注意</div><div class="admonitionContent_YxFr"><p>以下基于 spug v2.3.4 版本，如果低于 v2.3.4 可以参考 <a href="/docs/update-version">版本升级文档</a> 进行升级，例子仅作为演示，一般情况下你都需要结合自己的项目情况调整配置。</p></div></div><p><img loading="lazy" src="https://cdn.spug.cc/v2/example-java-1.png" alt="about" class="img_ABpA"></p><h2 class="anchor anchorWithStickyNavbar_J8e2" id="安装-jdk--maven">安装 jdk / maven<a href="#安装-jdk--maven" class="hash-link" aria-label="安装 jdk / maven的直接链接" title="安装 jdk / maven的直接链接">​</a></h2><p>如果已安装可跳过该步骤，这里以安装 <code>jdk-8u251</code> 和 <code>maven-3.6.3</code> 为例，如果你使用 Docker 部署的 <code>Spug</code>，可参考以下步骤进行安装</p><p>因 Oracle JDK 下载需要登录账户请自行<a href="https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html" target="_blank" rel="noopener noreferrer">下载</a>，这里直接使用下载完成的 <code>jdk-8u251-linux-x64.tar.gz</code> 文件。</p><div class="language-bash codeBlockContainer_azwa theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_kMmd"><pre tabindex="0" class="prism-code language-bash codeBlock_eq8c thin-scrollbar"><code class="codeBlockLines_M058"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># 自行至 https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html 下载jdk</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># 把已下载的压缩包拷贝进容器</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">docker</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">cp</span><span class="token plain"> jdk-8u251-linux-x64.tar.gz spug:/</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">docker</span><span class="token plain"> </span><span class="token builtin class-name">exec</span><span class="token plain"> -it spug </span><span class="token function" style="color:#d73a49">bash</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">tar</span><span class="token plain"> xf jdk-8u251-linux-x64.tar.gz -C /opt</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># 安装maven</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">curl</span><span class="token plain"> -o apache-maven-3.6.3-bin.tar.gz http://apache.mirrors.pair.com/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">tar</span><span class="token plain"> xf apache-maven-3.6.3-bin.tar.gz -C /opt/</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># 全局设置环境变量</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token builtin class-name">echo</span><span class="token plain"> -e </span><span class="token string" style="color:#e3116c">'export JAVA_HOME=/opt/jdk1.8.0_251\nexport PATH=$PATH:$JAVA_HOME/bin:/opt/apache-maven-3.6.3/bin'</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> /data/spug/env</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># [可选]配置阿里云镜像加速下载，在159-164行（&lt;mirrors\&gt;标签内）添加以下内容</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">vi</span><span class="token plain"> /opt/apache-maven-3.6.3/conf/settings.xml</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token number" style="color:#36acaa">159</span><span class="token plain">     </span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain">mirror</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token number" style="color:#36acaa">160</span><span class="token plain">       </span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain">id</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain">aliyunmaven</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain">/id</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token number" style="color:#36acaa">161</span><span class="token plain">       </span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain">mirrorOf</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain">*</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain">/mirrorOf</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token number" style="color:#36acaa">162</span><span class="token plain">       </span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain">name</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain">阿里云公共仓库</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain">/name</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token number" style="color:#36acaa">163</span><span class="token plain">       </span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain">url</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain">https://maven.aliyun.com/repository/public</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain">/url</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token number" style="color:#36acaa">164</span><span class="token plain">     </span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain">/mirror</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># 退出并重启容器</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token builtin class-name">exit</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">docker</span><span class="token plain"> restart spug</span><br></span></code></pre><div class="buttonGroup_VjRJ"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_nkyW" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_nr7X"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_P_G1"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h2 class="anchor anchorWithStickyNavbar_J8e2" id="文件过滤">文件过滤<a href="#文件过滤" class="hash-link" aria-label="文件过滤的直接链接" title="文件过滤的直接链接">​</a></h2><p>只需要发布编译过的 jar 包，所以这里选择了 <code>包含</code> 规则。</p><div class="language-bash codeBlockContainer_azwa theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_kMmd"><pre tabindex="0" class="prism-code language-bash codeBlock_eq8c thin-scrollbar"><code class="codeBlockLines_M058"><span class="token-line" style="color:#393A34"><span class="token plain">ruoyi-admin.jar</span><br></span></code></pre><div class="buttonGroup_VjRJ"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_nkyW" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_nr7X"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_P_G1"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h2 class="anchor anchorWithStickyNavbar_J8e2" id="自定义变量">自定义变量<a href="#自定义变量" class="hash-link" aria-label="自定义变量的直接链接" title="自定义变量的直接链接">​</a></h2><p>该例子中并不需要特殊的 <a href="/docs/deploy-config#global-env">全局变量</a>，如果你需要的话可以在这里定义，然后在下边的钩子中类似 <code>$SPUG_DEPLOY_ID</code> 那样去引用。</p><h2 class="anchor anchorWithStickyNavbar_J8e2" id="代码检出前">代码检出前<a href="#代码检出前" class="hash-link" aria-label="代码检出前的直接链接" title="代码检出前的直接链接">​</a></h2><p>该例子中也不需要执行。</p><h2 class="anchor anchorWithStickyNavbar_J8e2" id="代码检出后">代码检出后<a href="#代码检出后" class="hash-link" aria-label="代码检出后的直接链接" title="代码检出后的直接链接">​</a></h2><p>在这里进行项目的依赖包安装和编译工作，该钩子中当前目录即为按发布申请中选择 <code>Git 分支/版本</code> 检出后的代码目录。</p><div class="language-bash codeBlockContainer_azwa theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_kMmd"><pre tabindex="0" class="prism-code language-bash codeBlock_eq8c thin-scrollbar"><code class="codeBlockLines_M058"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># 执行maven编译</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">mvn clean package -Dmaven.test.skip</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">true</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">cp</span><span class="token plain"> ruoyi-admin/target/ruoyi-admin.jar </span><span class="token builtin class-name">.</span><br></span></code></pre><div class="buttonGroup_VjRJ"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_nkyW" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_nr7X"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_P_G1"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>这里拷贝 <code>ruoyi-admin.jar</code> 至项目根目录，因为咱们文件过滤规则指定的就是相对于项目根目录。</p><h2 class="anchor anchorWithStickyNavbar_J8e2" id="应用发布前">应用发布前<a href="#应用发布前" class="hash-link" aria-label="应用发布前的直接链接" title="应用发布前的直接链接">​</a></h2><p>发布前停止现有的服务。</p><div class="language-bash codeBlockContainer_azwa theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_kMmd"><pre tabindex="0" class="prism-code language-bash codeBlock_eq8c thin-scrollbar"><code class="codeBlockLines_M058"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># 停止服务</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token assign-left variable" style="color:#36acaa">PID</span><span class="token operator" style="color:#393A34">=</span><span class="token variable" style="color:#36acaa">$(</span><span class="token variable function" style="color:#d73a49">ps</span><span class="token variable" style="color:#36acaa"> -ef </span><span class="token variable operator" style="color:#393A34">|</span><span class="token variable" style="color:#36acaa"> </span><span class="token variable function" style="color:#d73a49">grep</span><span class="token variable" style="color:#36acaa"> ruoyi-admin </span><span class="token variable operator" style="color:#393A34">|</span><span class="token variable" style="color:#36acaa"> </span><span class="token variable function" style="color:#d73a49">grep</span><span class="token variable" style="color:#36acaa"> -v </span><span class="token variable function" style="color:#d73a49">grep</span><span class="token variable" style="color:#36acaa"> </span><span class="token variable operator" style="color:#393A34">|</span><span class="token variable" style="color:#36acaa"> </span><span class="token variable function" style="color:#d73a49">awk</span><span class="token variable" style="color:#36acaa"> </span><span class="token variable string" style="color:#e3116c">'{print $2}'</span><span class="token variable" style="color:#36acaa">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">if</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">!</span><span class="token plain"> -z </span><span class="token variable" style="color:#36acaa">$PID</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">then</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">   </span><span class="token function" style="color:#d73a49">kill</span><span class="token plain"> -9 </span><span class="token variable" style="color:#36acaa">$PID</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">fi</span><br></span></code></pre><div class="buttonGroup_VjRJ"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_nkyW" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_nr7X"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_P_G1"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h2 class="anchor anchorWithStickyNavbar_J8e2" id="应用发布后">应用发布后<a href="#应用发布后" class="hash-link" aria-label="应用发布后的直接链接" title="应用发布后的直接链接">​</a></h2><p>在这里启动服务。</p><div class="language-bash codeBlockContainer_azwa theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_kMmd"><pre tabindex="0" class="prism-code language-bash codeBlock_eq8c thin-scrollbar"><code class="codeBlockLines_M058"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># 添加jdk至PATH变量</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token assign-left variable environment constant" style="color:#36acaa">PATH</span><span class="token operator" style="color:#393A34">=</span><span class="token environment constant" style="color:#36acaa">$PATH</span><span class="token plain">:/usr/local/jdk1.8.0_231/bin</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">nohup</span><span class="token plain"> java -jar ruoyi-admin.jar </span><span class="token operator" style="color:#393A34">&amp;&gt;</span><span class="token plain"> run.log </span><span class="token operator" style="color:#393A34">&amp;</span><br></span></code></pre><div class="buttonGroup_VjRJ"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_nkyW" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_nr7X"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_P_G1"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><hr><p>更多资讯、视频、欢迎关注公众号“<strong>Spug社区</strong>”</p><p><img loading="lazy" src="https://cdn.spug.cc/img/spug-club.jpg" alt="Spug社区" class="img_ABpA"></p>]]></content:encoded>
            <category>Tutorials</category>
        </item>
        <item>
            <title><![CDATA[Node项目配置]]></title>
            <link>https://spug.cc/blog/example-node</link>
            <guid>https://spug.cc/blog/example-node</guid>
            <pubDate>Fri, 12 Jun 2020 05:08:34 GMT</pubDate>
            <description><![CDATA[概览]]></description>
            <content:encoded><![CDATA[<h2 class="anchor anchorWithStickyNavbar_J8e2" id="概览">概览<a href="#概览" class="hash-link" aria-label="概览的直接链接" title="概览的直接链接">​</a></h2><p>以 <code>Spug</code> 的前端 <code>spug_web</code> 作为例子来说下前端项目的配置，最终大概是这样子的。</p><div class="theme-admonition theme-admonition-caution alert alert--warning admonition_l04S"><div class="admonitionHeading_giW_"><span class="admonitionIcon_JA_F"><svg viewBox="0 0 16 16"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"></path></svg></span>注意</div><div class="admonitionContent_YxFr"><p>以下基于 spug v2.3.4 版本，如果低于 v2.3.4 可以参考 <a href="/docs/update-version/">版本升级文档</a> 进行升级，例子仅作为演示，一般情况下你都需要结合自己的项目情况调整配置。</p></div></div><p><img loading="lazy" src="https://cdn.spug.cc/v2/example-node-1.png" alt="about" class="img_ABpA"></p><h2 class="anchor anchorWithStickyNavbar_J8e2" id="安装-nodenpm">安装 node(npm)<a href="#安装-nodenpm" class="hash-link" aria-label="安装 node(npm)的直接链接" title="安装 node(npm)的直接链接">​</a></h2><p>如果已安装可跳过该步骤，这里以目前的最新版 <code>v12.18.1</code> 为例，如果你使用 Docker 部署的 <code>Spug</code>，可参考以下步骤进行安装。</p><div class="language-bash codeBlockContainer_azwa theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_kMmd"><pre tabindex="0" class="prism-code language-bash codeBlock_eq8c thin-scrollbar"><code class="codeBlockLines_M058"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># 进入容器</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">docker</span><span class="token plain"> </span><span class="token builtin class-name">exec</span><span class="token plain"> -it spug </span><span class="token function" style="color:#d73a49">bash</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">curl</span><span class="token plain"> -o node-v12.18.1-linux-x64.tar.xz https://nodejs.org/dist/v12.18.1/node-v12.18.1-linux-x64.tar.xz</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">tar</span><span class="token plain"> xf node-v12.18.1-linux-x64.tar.xz -C /opt</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># 全局设置环境变量</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token builtin class-name">echo</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'export PATH=$PATH:/opt/node-v12.18.1-linux-x64/bin'</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> /data/spug/env</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># 安装yarn，推荐使用yarn 或 pnpm来代替npm</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token builtin class-name">source</span><span class="token plain"> /root/.bashrc</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">npm</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">install</span><span class="token plain"> -g </span><span class="token function" style="color:#d73a49">yarn</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># 退出并重启容器</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token builtin class-name">exit</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">docker</span><span class="token plain"> restart spug</span><br></span></code></pre><div class="buttonGroup_VjRJ"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_nkyW" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_nr7X"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_P_G1"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h2 class="anchor anchorWithStickyNavbar_J8e2" id="文件过滤">文件过滤<a href="#文件过滤" class="hash-link" aria-label="文件过滤的直接链接" title="文件过滤的直接链接">​</a></h2><p>前端项目发布的时候只需要编译后的内容就可以，这里选择了 <code>包含</code> 条件，内容为 <code>spug_web/build</code>，这样最终发布到目标主机上的代码仅包含
<code>spug_web/build</code>，并不会把 <code>spug_api</code> 及 <code>spug_web</code> 中的前端源代码发布出去。</p><h2 class="anchor anchorWithStickyNavbar_J8e2" id="自定义变量">自定义变量<a href="#自定义变量" class="hash-link" aria-label="自定义变量的直接链接" title="自定义变量的直接链接">​</a></h2><p>该例子中并不需要特殊的全局变量，如果你需要的话可以在这里定义，然后在下边的钩子中类似 <code>$SPUG_DEPLOY_ID</code> 那样去引用。</p><h2 class="anchor anchorWithStickyNavbar_J8e2" id="代码检出前">代码检出前<a href="#代码检出前" class="hash-link" aria-label="代码检出前的直接链接" title="代码检出前的直接链接">​</a></h2><p>作为前端项目免不了要处理项目依赖包的问题，依赖安装一般在 <code>package.json</code> 所在的目录（在本示例中即<code>spug_web</code>）中执行 <code>npm install</code>
或 <code>yarn</code> 来安装。这里使用了 <a href="/docs/deploy-config#global-env">全局环境变量</a> 中的
<code>SPUG_REPOS_DIR</code> 和 <code>SPUG_DEPLOY_ID</code> 来切换到源码目录创建公共的 <code>node_modules</code> 目录，以后每次发布时都通过软链接的形式使用它来避免每次
发布都需要全量安装依赖包。</p><div class="language-bash codeBlockContainer_azwa theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_kMmd"><pre tabindex="0" class="prism-code language-bash codeBlock_eq8c thin-scrollbar"><code class="codeBlockLines_M058"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># 创建公共node_modules目录</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">mkdir</span><span class="token plain"> -p </span><span class="token variable" style="color:#36acaa">$SPUG_REPOS_DIR</span><span class="token plain">/</span><span class="token variable" style="color:#36acaa">$SPUG_DEPLOY_ID</span><span class="token plain">/node_modules</span><br></span></code></pre><div class="buttonGroup_VjRJ"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_nkyW" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_nr7X"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_P_G1"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h2 class="anchor anchorWithStickyNavbar_J8e2" id="代码检出后">代码检出后<a href="#代码检出后" class="hash-link" aria-label="代码检出后的直接链接" title="代码检出后的直接链接">​</a></h2><p>在这里进行项目的依赖包安装和编译工作，该钩子中当前目录即为按发布申请中选择 <code>Git 分支/版本</code> 检出后的代码目录，我们需要先把上一步创建的公共 <code>node_modules</code>
目录链接到当前目录（这样可以避免每次都完整的执行<code>npm install</code>来重复安装依赖包），然后执行 <code>yarn build</code> 来进行项目编译。</p><div class="language-bash codeBlockContainer_azwa theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_kMmd"><pre tabindex="0" class="prism-code language-bash codeBlock_eq8c thin-scrollbar"><code class="codeBlockLines_M058"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># 创建软链接，指向公共的node_modules,避免每次发布重复安装依赖包</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token builtin class-name">cd</span><span class="token plain"> spug_web</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">ln</span><span class="token plain"> -s </span><span class="token variable" style="color:#36acaa">$SPUG_REPOS_DIR</span><span class="token plain">/</span><span class="token variable" style="color:#36acaa">$SPUG_DEPLOY_ID</span><span class="token plain">/node_modules </span><span class="token builtin class-name">.</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># 执行依赖安装</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">yarn</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># 执行 编译</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">yarn</span><span class="token plain"> build</span><br></span></code></pre><div class="buttonGroup_VjRJ"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_nkyW" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_nr7X"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_P_G1"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>编译后也就生成了我们在 <strong>文件过滤</strong> 中设置的 <code>spug_web/build</code> 目录。</p><h2 class="anchor anchorWithStickyNavbar_J8e2" id="应用发布前">应用发布前<a href="#应用发布前" class="hash-link" aria-label="应用发布前的直接链接" title="应用发布前的直接链接">​</a></h2><p>由于我们设置的文件过滤规则 <code>spug_web/build</code>，所以传输到目标主机上文件结构也是 <code>spug_web/build/xx</code>，我们需要调整下目录结构，
让 <code>spug_web/build</code> 目录下内容放到项目的根目录中。</p><div class="language-bash codeBlockContainer_azwa theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_kMmd"><pre tabindex="0" class="prism-code language-bash codeBlock_eq8c thin-scrollbar"><code class="codeBlockLines_M058"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># 调整目录结构，把编译结果放在项目根目录</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">mv</span><span class="token plain"> spug_web/build/* </span><span class="token builtin class-name">.</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">rm</span><span class="token plain"> -rf spug_web</span><br></span></code></pre><div class="buttonGroup_VjRJ"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_nkyW" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_nr7X"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_P_G1"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h2 class="anchor anchorWithStickyNavbar_J8e2" id="应用发布后">应用发布后<a href="#应用发布后" class="hash-link" aria-label="应用发布后的直接链接" title="应用发布后的直接链接">​</a></h2><p>前端项目编译后就是纯静态的 <code>html</code>、<code>js</code> 和一些静态文件，这里一般就不需要额外的处理了。</p><hr><p>更多资讯、视频、欢迎关注公众号“<strong>Spug社区</strong>”</p><p><img loading="lazy" src="https://cdn.spug.cc/img/spug-club.jpg" alt="Spug社区" class="img_ABpA"></p>]]></content:encoded>
            <category>Tutorials</category>
        </item>
    </channel>
</rss>