{
    "version": "https:\/\/jsonfeed.org\/version\/1.1",
    "title": "Skurudo Blog(post): заметки с тегом Oxidized",
    "_rss_description": "Oxidized — универсальное программное обеспечение для резервного копирования настроек сетевых устройств",
    "_rss_language": "ru",
    "_itunes_email": "",
    "_itunes_categories_xml": "",
    "_itunes_image": "",
    "_itunes_explicit": "",
    "home_page_url": "https:\/\/skurudo.ru\/tags\/oxidized\/",
    "feed_url": "https:\/\/skurudo.ru\/tags\/oxidized\/json\/",
    "icon": "https:\/\/skurudo.ru\/pictures\/userpic\/userpic@2x.jpg?1691593083",
    "authors": [
        {
            "name": "Pavel Galkin",
            "url": "https:\/\/skurudo.ru\/",
            "avatar": "https:\/\/skurudo.ru\/pictures\/userpic\/userpic@2x.jpg?1691593083"
        }
    ],
    "items": [
        {
            "id": "264",
            "url": "https:\/\/skurudo.ru\/all\/notifications-about-problems-in-oxidized\/",
            "title": "Уведомления о проблемах в Oxidized",
            "content_html": "<p>Разбор не сильно освещенных мест в довольно популярных продуктах несет с собой некоторое количество боли. Разработчики пишут документацию, считая некоторые вещи очевидными, но так бывает довольно не всегда и примеров с конфигурациями частенько бывает не хватает. В случае же с блогерами все тоже довольно грустно. Обзоры похожи один на другой и никто не старается копнуть вглубь и предложить что-то интересное или необычное.<\/p>\n<p>Например есть довольно зрелый продукт для резервного копирования конфигурация — Oxidized. Разработка пришла на смену RANCID и заменила его чуть более чем полностью. В нем исторически есть набор фич, но развитие за годы замедлилось. Работает ведь отлично, зачем ломать? Но есть задачи немного в сторону.<\/p>\n<p>В Oxidized нет возможности из коробки направить уведомлении об успешном или наоборот — не очень успешном процессе резервирования. Для этого можно использовать так называемые хуки. И вроде hook не слишком сложный, но важно помнить, что важен формат — yaml.<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">hooks:\r\n  failed:\r\n    type: exec\r\n    events: [node_fail]\r\n    cmd: &#039;echo &quot;$OX_NODE_NAME,$OX_NODE_IP,$OX_JOB_STATUS&quot; &gt;&gt; \/home\/oxidized\/.config\/oxidized\/ox_node_failed.log&#039;<\/code><\/pre><p>На выходе мы получаем текстовый файл в формате csv и сможем еще уже отправить дальше. Например в телеграм путем не очень хитрых манипуляций:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">#!\/bin\/bash\r\n\r\n# Set the API token and chat ID - обозначаем токен и id чата\r\nAPI_TOKEN=&quot;token&quot;\r\nCHAT_ID=&quot;chat-id&quot;\r\n\r\n# Parse file with error - объявляем путь к файлу\r\nFILE=\/opt\/oxidized\/ox_node_failed.log\r\n\r\n# Checking if file is empty or not - проверяем, пустой ли файл\r\nif [ -s $FILE ]\r\nthen\r\n     echo &quot;File is not empty, do the JOB&quot;\r\n\r\n       # Read file, prepare messade and send to Telegram - читаем файл, готовим сообщение и отправляем\r\n        while IFS=, read -r col1 col2 col3\r\n        do\r\n            MESSAGE=(&quot;&lt;b&gt;ERROR DETECTED&lt;\/b&gt; while backup on device $col1 with IP: $col2 reason: &lt;b&gt;$col3&lt;\/b&gt;. Check &lt;a href=\\&quot;http:\/\/oxidized.url\\&quot;&gt;Oxidized&lt;\/a&gt;!&quot;);\r\n            echo $MESSAGE\r\n\r\n        # Use the curl command to send the message - отправляем сообщение\r\n        curl -s -X POST https:\/\/api.telegram.org\/bot$API_TOKEN\/sendMessage -d parse_mode=&quot;html&quot; -d chat_id=$CHAT_ID -d text=&quot;$MESSAGE&quot;;\r\n\r\n        done &lt; $FILE\r\n      \r\n        # Clean file - очищаем файл, чтобы избежать повторной отправки\r\n        &gt;$FILE\r\n\r\nelse\r\n     echo &quot;File is empty, nothing to do&quot;\r\n     exit;\r\nfi<\/code><\/pre><p>Теперь и на <a href=\"https:\/\/github.com\/skurudo\/usefulbash\/blob\/main\/oxidized-check-file-and-send-notify.sh\">Github<\/a>! ^_^<\/p>\n",
            "date_published": "2024-11-27T09:07:35+03:00",
            "date_modified": "2024-11-27T09:15:50+03:00",
            "tags": [
                "Mikrotik",
                "Oxidized",
                "Telegram",
                "скрипт"
            ],
            "_date_published_rfc2822": "Wed, 27 Nov 2024 09:07:35 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "264",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css"
                ],
                "og_images": []
            }
        }
    ],
    "_e2_version": 4116,
    "_e2_ua_string": "Aegea 11.2 (v4116)"
}