{
    "version": "https:\/\/jsonfeed.org\/version\/1",
    "title": "Блог ни о чём, заметки с тегом: маленькие хитрости",
    "home_page_url": "https:\/\/gladilov.org.ru\/blog\/tags\/tricks\/",
    "feed_url": "https:\/\/gladilov.org.ru\/blog\/tags\/tricks\/json\/",
    "icon": false,
    "author": {
        "name": "Павел Гладилов",
        "url": "https:\/\/gladilov.org.ru\/blog\/",
        "avatar": false
    },
    "items": [
        {
            "id": "2955",
            "url": "https:\/\/gladilov.org.ru\/blog\/all\/forward-events-to-clickhouse-with-vector-and-balancer\/",
            "title": "Проброс событий в ClickHouse с использованием Vector",
            "content_html": "<p>От устройства снаружи ИС на фронтальные балансировщики приходят сообщения в локейшн<font size=\"2\"><\/p>\n<pre class=\"e2-text-code\"><pre class=\"e2-text-code\"><code>\/&lt;device_location&gt;\/status<\/code><\/pre><\/pre>\n<p><\/font>Файл журнала<font size=\"2\"><\/p>\n<pre class=\"e2-text-code\"><pre class=\"e2-text-code\"><code>\/var\/log\/&lt;device_access_log_file_path&gt;.status.access.log<\/code><\/pre><\/pre>\n<p><\/font> разбирается с помощью vector, пересылающий события на внутренний балансировщик. Между фронтальными и внутренними балансировщиками есть сетевая связность по порту TCP<font size=\"2\"><\/p>\n<pre class=\"e2-text-code\"><pre class=\"e2-text-code\"><code>&lt;port&gt;<\/code><\/pre><\/pre>\n<p><\/font>Конфиг vector на фронтальных балансировщиках: <b class=\"spoiler-controller pop-up_camper_clickhouse-vector-balancer-1\">Показать<\/b><section class=\"spoiler pop-up_camper_clickhouse-vector-balancer-1\"><\/p>\n<p><\/p>\n<p><font size=\"2\"><\/p>\n<pre class=\"e2-text-code\"><pre class=\"e2-text-code\"><code>sources:\r\n  device-status:\r\n    type: &quot;file&quot;\r\n    max_line_bytes: 1638400\r\n    include:\r\n      - \/var\/log\/&lt;device_access_log_file_path&gt;.status.access.log\r\n\r\ntransforms:\r\n  device-status_filter:\r\n    type: &quot;filter&quot;\r\n    inputs:\r\n      - device-status\r\n    condition:\r\n      .message != &quot;&quot;\r\n\r\n  device-status_transform:\r\n    type: &quot;remap&quot;\r\n    inputs:\r\n      - device-status_filter\r\n    source: |\r\n      .message = parse_jsonI(.message)\r\n      .message.traffic_source = .host\r\n      . = .message\r\n\r\nsinks:\r\n  sink_clickhouse:\r\n    type: &quot;clickhouse&quot;\r\n    inputs:\r\n      - device-status_transform\r\n    endpoint: &quot;http:\/\/&lt;inner_BGP_IP&gt;:&lt;port&gt;&quot;\r\n    format: &quot;json_as_string&quot;\r\n    healthcheck:\r\n        enabled: false\r\n    auth:\r\n      strategy: &quot;basic&quot;\r\n      user: &quot;&lt;clickhouse_DB_user&gt;&quot;\r\n      password: &quot;&lt;clickhouse_DB_password&gt;&quot;\r\n    database: &quot;&lt;clickhouse_DB&gt;&quot;\r\n    table: &quot;&lt;clickhouse_table&gt;&quot;<\/code><\/pre><\/pre>\n<p><\/font><\/section><\/p>\n<p>Конфиг внутреннего балансировщика, пробрасывающего события в clickhouse: <b class=\"spoiler-controller pop-up_camper_clickhouse-vector-balancer-2\">Показать<\/b><section class=\"spoiler pop-up_camper_clickhouse-vector-balancer-2\"><\/p>\n<p><\/p>\n<p><font size=\"2\"><\/p>\n<pre class=\"e2-text-code\"><pre class=\"e2-text-code\"><code>stream {\r\ninclude \/etc\/&lt;path_to_balancer_config&gt;\/log-format-s.conf;\r\n\r\nupstream clickhouse8123 {\r\n    server &lt;clickhouse_BGP_IP&gt;:8123;\r\n    server &lt;clickhouse_node1_IP&gt;:8123 backup;\r\n    server &lt;clickhouse_node2_IP&gt;:8123 backup;\r\n}\r\n\r\nserver {\r\n    listen &lt;port&gt;;\r\n    proxy_pass clickhouse8123;\r\n    access_log \/var\/log\/&lt;access_log_file_path&gt; main_json_mini_s;\r\n    error_log \/var\/log\/&lt;error_log_file_path&gt;;\r\n}\r\n}<\/code><\/pre><\/pre>\n<p><\/font><\/section><\/p>\n<p>Команды clickhouse для создания БД, таблиц и представлений: <b class=\"spoiler-controller pop-up_camper_clickhouse-vector-balancer-3\">Показать<\/b><section class=\"spoiler pop-up_camper_clickhouse-vector-balancer-3\"><\/p>\n<p><\/p>\n<p><font size=\"2\"><\/p>\n<pre class=\"e2-text-code\"><pre class=\"e2-text-code\"><code># Создание БД\r\nCREATE DATABASE vector ON CLUSTER &lt;cluster_name&gt;;\r\n\r\nDROP TABLE IF EXISTS vector.device_status_logs ON CLUSTER &lt;cluster_name&gt;;\r\n# Создание таблицы\r\nCREATE TABLE vector.device_status_logs ON CLUSTER &lt;cluster_name&gt; (\r\n        'message' String\r\n)\r\nENGINE = ReplicatedReplacingMergeTree('\/сlickhouse\/{cluster}\/tables\/validator_status_logs','{replica}')\r\nORDER BY tuple();\r\n\r\nDROP VIEW IF EXISTS vector.device_status_logs_view ON CLUSTER &lt;cluster_name&gt;;\r\n# Создание представления\r\nCREATE MATERIALIZED VIEW vector.device_status_logs_view ON CLUSTER &lt;cluster_name&gt; (\r\n        'time_stamp' DateTime,\r\n        'req' String,\r\n        'req_body' String\r\n)\r\nENGINE = ReplicatedReplacingMergeTree('\/clickhouse\/{cluster}\/tables\/device_status_logs_view','{replica}')\r\nORDER BY time_stamp\r\nSETTINGS index_granularity = 8192\r\nAS SELECT\r\n        parseDateTimeBestEffortOrNull(JSONExtractString(message, 'timestamp')) AS time_stamp,\r\n        simpleJSONExtractRaw(message, 'req') AS req,\r\n        simpleJSONExtractRaw(message, 'req_body') AS req_body\r\nFROM (\r\n        SELECT message\r\n        FROM vector.device_status_logs\r\n);<\/code><\/pre><\/pre>\n<p><\/font><\/section><\/p>\n",
            "date_published": "2025-07-01T16:23:41+03:00",
            "date_modified": "2025-07-01T16:23:33+03:00",
            "_date_published_rfc2822": "Tue, 01 Jul 2025 16:23:41 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "2955",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "2512",
            "url": "https:\/\/gladilov.org.ru\/blog\/all\/keepalived-lifehacks\/",
            "title": "Игры с keepalived",
            "content_html": "<p><img src=\"\/blog\/pictures\/keepalived\/logo.png\" class=\"main_left_img\" \/>В продолжение <a href=\"\/blog\/all\/setup-ip-failover-on-debian-with-keepalived\/\">поста о системном демоне Keepalived<\/a>, позволяющем организовать отказоустойчивость сервиса и балансировку нагрузки. Возник вопрос — как узнать, какая нода в каком состоянии запущена? Для этого я создал две ВМ, к примеру:<br \/>\nd1 IP=172.16.32.31\/24<br \/>\nd2 IP=172.16.32.32\/24<\/p>\n<p>Конфигурация d1: <b class=\"spoiler-controller pop-up_camper_keepalived_vm1_conf\">Показать<\/b><section class=\"spoiler pop-up_camper_keepalived_vm1_conf\"><\/p>\n<p><\/p>\n<p><font size=\"2\"><\/p>\n<pre class=\"e2-text-code\"><pre class=\"e2-text-code\"><code>global_defs {\r\n   notification_email { root@localhost }\r\n   router_id PD\r\n    vrrp_garp_master_refresh 30\r\n    vrrp_garp_master_refresh_repeat 2\r\n}\r\nvrrp_instance TEST {\r\n    state MASTER\r\n!    state BACKUP\r\n    interface &lt;интерфейс&gt;\r\n    virtual_router_id 101\r\n    priority 103\r\n!    priority 102\r\n    advert_int 1\r\n    authentication {\r\n        auth_type PASS\r\n        auth_pass &lt;пароль&gt;\r\n    }\r\n    virtual_ipaddress { 172.16.32.30\/24 dev &lt;интерфейс&gt; label &lt;интерфейс&gt;:vrrp }\r\n    notify \/opt\/notify.sh\r\n}<\/code><\/pre><\/pre>\n<p><\/font><\/section>Конфигурация d2: <b class=\"spoiler-controller pop-up_camper_keepalived_vm2_conf\">Показать<\/b><section class=\"spoiler pop-up_camper_keepalived_vm2_conf\"><\/p>\n<p><\/p>\n<p><font size=\"2\"><\/p>\n<pre class=\"e2-text-code\"><pre class=\"e2-text-code\"><code>global_defs {\r\n   notification_email { root@localhost }\r\n   router_id PD\r\n    vrrp_garp_master_refresh 30\r\n    vrrp_garp_master_refresh_repeat 2\r\n}\r\nvrrp_instance TEST {\r\n!    state MASTER\r\n    state BACKUP\r\n    interface &lt;интерфейс&gt;\r\n    virtual_router_id 101\r\n!    priority 103\r\n    priority 102\r\n    advert_int 1\r\n    authentication {\r\n        auth_type PASS\r\n        auth_pass &lt;пароль&gt;\r\n    }\r\n    virtual_ipaddress { 172.16.32.30\/24 dev &lt;интерфейс&gt; label &lt;интерфейс&gt;:vrrp }\r\n    notify \/opt\/notify.sh\r\n}<\/code><\/pre><\/pre>\n<p><\/font><\/section><\/p>\n<p>Для контроля текущей конфигурации (состояния) демона keepalived используется скрипт \/opt\/notify.sh: <b class=\"spoiler-controller pop-up_camper_keepalived_sh_script\">Показать<\/b><section class=\"spoiler pop-up_camper_keepalived_sh_script\"><\/p>\n<p><\/p>\n<p><font size=\"2\"><\/p>\n<pre class=\"e2-text-code\"><pre class=\"e2-text-code\"><code>#!\/bin\/bash\r\necho $1 $2 is in $3 state &gt; \/var\/run\/keepalive.$1.$2.state<\/code><\/pre><\/pre>\n<p><\/font><\/section>Ещё полезный скрипт-однострочник:: <b class=\"spoiler-controller pop-up_camper_keepalived_script\">Показать<\/b><section class=\"spoiler pop-up_camper_keepalived_script\"><\/p>\n<p><\/p>\n<p><font size=\"2\"><\/p>\n<pre class=\"e2-text-code\"><pre class=\"e2-text-code\"><code>conf=\/etc\/keepalived\/keepalived.conf &amp;&amp; vip=$(expr &quot;$(cat $conf)&quot; : '.*\\bvirtual_ipaddress\\s*{\\s*\\(.*\\)\/*}') &amp;&amp; vip=`expr &quot;$vip&quot; : '\\([^ ]*\\)' | sed 's\/\\.\/\\\\\\\\.\/g'` &amp;&amp; if ip addr | grep -q &quot;$vip&quot;; then echo Primary; else echo Secondary; fi<\/code><\/pre><\/pre>\n<p><\/font><\/section><\/p>\n",
            "date_published": "2022-12-25T22:00:09+03:00",
            "date_modified": "2025-07-01T17:46:38+03:00",
            "_date_published_rfc2822": "Sun, 25 Dec 2022 22:00:09 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "2512",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "2444",
            "url": "https:\/\/gladilov.org.ru\/blog\/all\/file-for-aegea-vol-4\/",
            "title": "Напильник для Эгеи, часть 4",
            "content_html": "<p><img src=\"\/blog\/pictures\/file-aegea\/aegea-file.jpg\" align=\"left\" \/>      Четвёртая часть о «доводке напильником» Эгеи.<\/p>\n<p>      <strong>Август 2022 года:<\/strong><br \/>\nПозавчера (02.08.2022) вынужден был переместить сайт (и блог) на домашний сервер. После переезда в тегах блога стали отображаться сообщения об ошибках: <b class=\"spoiler-controller pop-up_camper_04_08_22-aegea-error\">Показать<\/b><section class=\"spoiler pop-up_camper_04_08_22-aegea-error\"><\/p>\n<p><\/p>\n<p><a class=\"lightbox2\" data-lightbox=\"04_08_22-aegea\" href=\"\/blog\/pictures\/file-aegea\/error.jpg\"><img src=\"\/blog\/pictures\/file-aegea\/error-preview.jpg\" style=\"vertical-align:middle;\" \/><\/a><\/section><\/p>\n<p>Лёгкий гугляж завёл меня на страницу Александра Токарева <a href=\"https:\/\/alexandertokarev.ru\/all\/aegea-core-php-line-2\/\">Эгея и красные банеры \/core.php, line 2<\/a>, но предлагаемый способ лечения (понизить версию PHP) оказался для меня неприемлемым. Решено было бороться радикальными методами — править код.<\/p>\n<p><a class=\"lightbox2\" data-lightbox=\"04_08_22-aegea\" href=\"\/blog\/pictures\/file-aegea\/mcedit.png\"><img src=\"\/blog\/pictures\/file-aegea\/mcedit-preview.png\" style=\"vertical-align:middle;\" \/><\/a><\/p>\n<p>В файле <b>system\/core.php<\/b> ищу переменную, вызвавшую сообщение об ошибке (<b>k<\/b>). Для этого в редакторе mc ищу символ <b>k<\/b> как слово целиком (whole word). Комментирую второе вхождение работы с этой переменной. После обновления страницы ошибка исчезла.<\/p>\n<p>P. S. Эмпирический список пакетов, необходимых к установке для работы <img src=\"\/img\/sites\/\/blog.png\" style=\"vertical-align:middle;width:20px;height:20px;\" \/> блога, <img src=\"\/img\/sites\/\/reader.png\" style=\"vertical-align:middle;width:20px;height:20px;\" \/> RSS-ридера и <img src=\"\/\/\/cloud.gladilov.org.ru\/core\/img\/favicon.ico\" style=\"vertical-align:middle;width:20px;height:20px;\" \/> облака:<br \/>\n<b>php-mbstring php-mysql php-gd php-curl php-cli libapache2-mod-php php-xml php-zip php-intl<\/b><\/p>\n<p>P. P. S. Версия Эгеи — релиз 2.7, версия 3249.<\/p>\n",
            "date_published": "2022-08-04T00:41:30+03:00",
            "date_modified": "2022-08-04T17:49:00+03:00",
            "_date_published_rfc2822": "Thu, 04 Aug 2022 00:41:30 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "2444",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": []
            }
        },
        {
            "id": "2123",
            "url": "https:\/\/gladilov.org.ru\/blog\/all\/boot-with-password-to-edit-grub\/",
            "title": "Защита опций загрузчика GRUB паролём",
            "content_html": "<p><img src=\"\/blog\/pictures\/grub-password\/grub-password.jpg\" class=\"main_right_img\" \/>Метод заключается в редактировании опций загрузчика GRUB, чтобы установить пароль на их изменение при загрузке системы. Настройка делается в текстовых конфигурационных файлах GRUB, и при физическом доступе к компьютеру с возможностью загрузки с LIVE-дистрибутива можно обойти и эту защиту. При физическом доступе всегда остаётся вариант вынуть жёсткий диск и просмотреть его содержимое в другой ОСи. То есть настоящую защиту данных обеспечивает только их шифрование или шифрование всего диска, защита в виде пароля на загрузку не является надёжной!<br \/>\n<b class=\"spoiler-controller pop-up_camper_29_12_21\">Показать<\/b><section class=\"spoiler pop-up_camper_29_12_21\"><\/p>\n<p><\/p>\n<h2>Настройка пароля на загрузку системы и на редактирование опций загрузки<\/h2>\n<p>От имени пользователя <b>root<\/b> генерируется хеш пароля:<font size=\"2\"><\/p>\n<pre class=\"e2-text-code\"><pre class=\"e2-text-code\"><code>sudo grub-mkpasswd-pbkdf2<\/code><\/pre><\/pre>\n<p><\/font>Будет показана примерно такая строка:<font size=\"2\"><\/p>\n<pre class=\"e2-text-code\"><pre class=\"e2-text-code\"><code>Хэш PBKDF2 вашего пароля: grub.pbkdf2.sha512.10000.6B2B740048C68DCEAD7B288ED37FCC577F1FFDBFE9955A3B9CA5CC47FEF524D07A75E97D17DB4F2E53AF836FBA08DF88CA8EEB7ABF87ABDE0A327A742F8DC745.476B122C205094968098043AF0DF40B4C009AA18F454A8D38E047BA7E50C5DA809F9E3C7FEAA927EF3C0F43CE0EB46072E7303F42559170A09C96DCD37A341D7<\/code><\/pre><\/pre>\n<p><\/font>Пример показан на рисунке 1:<br \/>\n<a class=\"lightbox2\" data-lightbox=\"grub-mkpasswd\" href=\"\/blog\/pictures\/grub-password\/mkpasswd.jpg\"><img src=\"\/blog\/pictures\/grub-password\/mkpasswd-preview.jpg\" style=\"vertical-align:middle;\" \/><\/a><br \/>\n<i>Рисунок 1. Пример генерации хеша пароля загрузки.<\/i><\/p>\n<p>Из выведенных данных скопировать строку «<b>grub.pbkdf2.sha512.10000………….<\/b>» (полностью) и дописать в файл <b>\/etc\/grub.d\/40_custom<\/b>:<font size=\"2\"><\/p>\n<pre class=\"e2-text-code\"><pre class=\"e2-text-code\"><code>set superusers=&quot;&lt;имя&gt;&quot;\r\npassword_pbkdf2 &lt;имя&gt; grub.pbkdf2.sha512.10000.6B2B740048C68DCEAD7...<\/code><\/pre><\/pre>\n<p><\/font>Поскольку файл <b>\/etc\/grub.d\/40_custom<\/b> содержит хеш пароля, то рекомендуется запретить его чтение и изменение всеми пользователями, кроме пользователя <b>root<\/b>:<font size=\"2\"><\/p>\n<pre class=\"e2-text-code\"><pre class=\"e2-text-code\"><code>sudo chmod 711 \/etc\/grub.d\/40_custom<\/code><\/pre><\/pre>\n<p><\/font>Создание нового конфигурационного файла загрузчика:<font size=\"2\"><\/p>\n<pre class=\"e2-text-code\"><pre class=\"e2-text-code\"><code>sudo grub-mkconfig -o \/boot\/grub\/grub.cfg<\/code><\/pre><\/pre>\n<p><\/font>После выполнения процесса перезагрузки ПК при попытке выбрать любой пункт меню будет предложено ввести имя пользователя и пароль. При вводе логина <b>&lt;имя&gt;<\/b> и пароля, используемого в команде <b>grub-mkpasswd-pbkdf2<\/b>, если учётные данные верны, система продолжит загрузку.<\/p>\n<p><i>N. B. Логин <b>&lt;имя&gt;<\/b> в файле <b>\/etc\/grub.d\/40_custom<\/b> можно указать любой, он никак не связан с именами пользователей в системе, главное — не забыть его в дальнейшем. Кроме того, информацию о ​​пользователе и пароле не обязательно требуется вносить в определённый файл. Информация может быть помещена в любой файл  каталога <b>\/etc\/grub.d<\/b>, если этот файл включён в <b>grub.cfg<\/b>. Файл <b>\/etc\/grub.d\/40_custom<\/b> выбран потому, что он не перезаписывается при обновлении пакета GRUB.<\/i><\/p>\n<p>P. S. Для возможности загрузки без пароля какого-либо пункта (или пунктов) меню их необходимо найти в файле <b>\/etc\/grub.d\/10_linux<\/b> и добавить опцию:<font size=\"2\"><\/p>\n<pre class=\"e2-text-code\"><pre class=\"e2-text-code\"><code>--unrestricted<\/code><\/pre><\/pre>\n<p><\/font>Пример показан на рисунке 2:<br \/>\n<a class=\"lightbox2\" data-lightbox=\"grub-unrestricted\" href=\"\/blog\/pictures\/grub-password\/unrestricted.jpg\"><img src=\"\/blog\/pictures\/grub-password\/unrestricted-preview.jpg\" style=\"vertical-align:middle;\" \/><\/a><br \/>\n<i>Рисунок 2. Пример добавления опции класса загрузки в файл <b>\/etc\/grub.d\/10_linux<\/b>.<\/i><\/p>\n<p>В результате загрузка системы будет выполняться как и раньше — пароль в загрузчике GRUB вводить не нужно, при выборе пункта меню GRUB продолжится обычная загрузка. Но при попытке отредактировать опции загрузчика будет предложено ввести имя и пароль. Без их ввода доступ к опциям загрузки не будет дан.<\/p>\n<p>P. P. S. Если в меню загрузчика содержатся параметры для других ОСей, отличных от операционной системы по умолчанию (другие установки Linux, Mac OS, Windows и т. д.), в файле <b>\/etc\/grub.d\/30_os-prober<\/b> вносятся изменения в опции класса загрузки соответствующей ОСи с добавлением строки<font size=\"2\"><\/p>\n<pre class=\"e2-text-code\"><pre class=\"e2-text-code\"><code>--unrestricted<\/code><\/pre><\/pre>\n<p><\/font>Пример показан на рисунке 3:<br \/>\n<a class=\"lightbox2\" data-lightbox=\"grub-os-prober\" href=\"\/blog\/pictures\/grub-password\/os-prober.jpg\"><img src=\"\/blog\/pictures\/grub-password\/os-prober-preview.jpg\" style=\"vertical-align:middle;\" \/><\/a><br \/>\n<i>Рисунок 3. Пример добавления опции класса загрузки в файл <b>\/etc\/grub.d\/30_os-prober<\/b> для всех найденных типов операционных систем.<\/i><\/section><\/p>\n",
            "date_published": "2021-12-30T18:42:59+03:00",
            "date_modified": "2021-12-30T18:44:29+03:00",
            "_date_published_rfc2822": "Thu, 30 Dec 2021 18:42:59 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "2123",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "1723",
            "url": "https:\/\/gladilov.org.ru\/blog\/all\/virtualbox-and-cryptopro-bsod-solution\/",
            "title": "Решение проблемы BSOD у VirtualBox вместе с КриптоПРО",
            "content_html": "<p><img src=\"\/blog\/pictures\/vb-csp\/vb-csp.jpg\" class=\"main_right_img\" \/>В винде VirtualBox при запуске виртуального хоста и  установленном в системе КриптоПРО выпадает в «синий экран смерти». При чём отказаться от использования КриптоПРО я не могу, пришлось запускать VirtualBox’овые виртаулки в фоновом режиме с интерфейсом. Но это не всегда удобно, можно случайно забыться и получить BSOD.<\/p>\n<p>Тема давно обсуждается, решения есть везде, но приведу у себя в блоге, чтобы было под рукой. В реестре нужно добавить исключения для VirtialBox в секции CryptoPRO и (обязательно) перезагрузить компьютер, так как КриптоПРО при загрузке ОСи делает свою инициализацию, которая включает чтение записей в реестре. Ветка реестра такая: <b class=\"spoiler-controller pop-up_camper_13_04_21\">Показать<\/b><section class=\"spoiler pop-up_camper_13_04_21\"><\/p>\n<p><\/p>\n<p><font size=\"2\"><\/p>\n<pre class=\"e2-text-code\"><pre class=\"e2-text-code\"><code>[HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\CProExclude]<\/code><\/pre><\/pre>\n<p><\/font><\/font>Добавляемые записи:<font size=\"2\"><\/p>\n<pre class=\"e2-text-code\"><pre class=\"e2-text-code\"><code>HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\CProExclude\\VBoxHeadless]\r\n&quot;FileName&quot;=&quot;VBoxHeadless.exe&quot;\r\n\r\n[HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\CProExclude\\VBoxNetDHCP]\r\n&quot;FileName&quot;=&quot;VBoxNetDHCP.exe&quot;\r\n\r\n[HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\CProExclude\\VirtualBox]\r\n&quot;FileName&quot;=&quot;VirtualBox.exe&quot;\r\n\r\n[HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\CProExclude\\VBoxBalloonCtrl]\r\n&quot;FileName&quot;=&quot;VBoxBalloonCtrl.exe&quot;\r\n\r\n[HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\CProExclude\\VBoxBugReport]\r\n&quot;FileName&quot;=&quot;VBoxBugReport.exe&quot;\r\n\r\n[HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\CProExclude\\VBoxDTrace]\r\n&quot;FileName&quot;=&quot;VBoxDTrace.exe&quot;\r\n\r\n[HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\CProExclude\\VBoxExtPackHelperApp]\r\n&quot;FileName&quot;=&quot;VBoxExtPackHelperApp.exe&quot;\r\n\r\n[HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\CProExclude\\vbox-img]\r\n&quot;FileName&quot;=&quot;vbox-img.exe&quot;\r\n\r\n[HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\CProExclude\\VBoxManage]\r\n&quot;FileName&quot;=&quot;VBoxManage.exe&quot;\r\n\r\n[HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\CProExclude\\VBoxNetNAT]\r\n&quot;FileName&quot;=&quot;VBoxNetNAT.exe&quot;\r\n\r\n[HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\CProExclude\\VBoxSDL]\r\n&quot;FileName&quot;=&quot;VBoxSDL.exe&quot;\r\n\r\n[HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\CProExclude\\VBoxSDS]\r\n&quot;FileName&quot;=&quot;VBoxSDS.exe&quot;\r\n\r\n[HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\CProExclude\\VBoxSVC]\r\n&quot;FileName&quot;=&quot;VBoxSVC.exe&quot;\r\n\r\n[HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\CProExclude\\VBoxTestOGL]\r\n&quot;FileName&quot;=&quot;VBoxTestOGL.exe&quot;\r\n\r\n[HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\CProExclude\\VBoxWebSrv]\r\n&quot;FileName&quot;=&quot;VBoxWebSrv.exe&quot;\r\n\r\n[HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\CProExclude\\VirtualBoxVM]\r\n&quot;FileName&quot;=&quot;VirtualBoxVM.exe&quot;<\/code><\/pre><\/pre>\n<p><\/font><\/font>REG-файл,для добавления в реестр вышеуказанных строк: <a href=\"\/blog\/pictures\/vb-csp\/vb-csp.reg\">vb-csp.reg<\/a>.<\/p>\n<p><font size=\"2\"><a href=\"https:\/\/marvins.ru\/administrirovanie\/kriptopro-i-virtualbox.html\">Отсюда<\/a><\/font><\/section><\/p>\n",
            "date_published": "2021-04-13T10:44:09+03:00",
            "date_modified": "2021-04-13T10:43:32+03:00",
            "_date_published_rfc2822": "Tue, 13 Apr 2021 10:44:09 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "1723",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "177",
            "url": "https:\/\/gladilov.org.ru\/blog\/all\/setup-gui-on-bsd-os\/",
            "title": "Установка GUI на BSD",
            "content_html": "<p><img src=\"\/blog\/pictures\/os\/bsd-xfce.png\" class=\"main_right_img\" \/>Часто для моих «изысканий» нужно установить графическую подсистему и рабочую среду на BSD-подобную ОСь. Обычно выбираю окружение Xfce как лёгкое, доступное и универсальное. Минутка рекламы:<\/p>\n<blockquote>\n<blockquote>\n<p>Xfce — для тех, кому нужен простой, эффективно работающий рабочий стол, который легко использовать и настраивать!<\/p>\n<\/blockquote>\n<\/blockquote>\n<p>Установку произвожу так: <b class=\"spoiler-controller pop-up_camper_17_06_20-2\">Показать<\/b><section class=\"spoiler pop-up_camper_17_06_20-2\"><\/p>\n<p><\/p>\n<p>На <img style=\"vertical-align:middle!important;\" src=\"\/img\/install\/os\/freebsd.png\" \/> FreeBSD 11.4:<\/p>\n<pre class=\"e2-text-code\"><code class=\"bash\"><font size=\"2\"># pkg update\r\n# pkg install xorg xfce<\/font><\/code>\n<\/pre>\n<p>На <img style=\"vertical-align:middle!important;\" src=\"\/img\/install\/os\/netbsd.png\" \/> NetBSD 7.1:<\/p>\n<pre class=\"e2-text-code\"><code class=\"bash\"><font size=\"2\"># export PKG_PATH=ftp:\/\/ftp.netbsd.org\/pub\/pkgsrc\/packages\/NetBSD\/`uname -m`\/`uname -r`\/All\r\n# pkg_add -v pkgin\r\n# pkgin update\r\n# pkgin install xfce<\/font><\/code>\n<\/pre>\n<p><hr width=\"100%\"><center>Задача <font color=\"green\">решена<\/font><br \/><img src=\"\/blog\/pictures\/learning\/learn-mini.jpg\" \/><\/center><br \/>\nВ конце «причёсываю» систему:<\/p>\n<pre class=\"e2-text-code\"><code class=\"bash\"><font size=\"2\"># pkgin install sudo bash mc\r\n# useradd -m -G wheel soul\r\n# passwd soul\r\n# chsh -s `which bash` soul<\/font><\/code>\n<\/pre>\n<p>Для старта иксов запускаю<\/p>\n<pre class=\"e2-text-code\"><code class=\"bash\"><font size=\"2\">startx<\/font><\/code>\n<\/pre>\n<p>или прописываю в <b>~\/.xinitrc<\/b>:<\/p>\n<pre class=\"e2-text-code\"><code class=\"bash\"><font size=\"2\">startxfce4<\/font><\/code>\n<\/pre>\n<p><\/section><font size=\"2\">P. S. Заметка из <strike>кровавых подвалов<\/strike> 2018 года, решил чуть дополнить и опубликовать из черновиков.<\/font><\/p>\n<p><font size=\"2\">Нужные ссылки:<br \/>\n<a href=\"https:\/\/www.freebsd.org\/doc\/handbook\/x11-wm.html\">https:\/\/www.freebsd.org\/doc\/handbook\/x11-wm.html<\/a><br \/>\n<a href=\"https:\/\/www.freebsd.org\/doc\/ru_RU.KOI8-R\/books\/handbook\/x11-wm.html\">https:\/\/www.freebsd.org\/doc\/ru_RU.KOI8-R\/books\/handbook\/x11-wm.html<\/a><\/font><\/p>\n",
            "date_published": "2020-06-17T17:00:52+03:00",
            "date_modified": "2020-06-17T21:36:15+03:00",
            "_date_published_rfc2822": "Wed, 17 Jun 2020 17:00:52 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "177",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": []
            }
        },
        {
            "id": "1334",
            "url": "https:\/\/gladilov.org.ru\/blog\/all\/check-partition-on-disk-image\/",
            "title": "Проверка раздела в образе диска",
            "content_html": "<p>Часто сталкиваюсь с ситуацией, когда при попытке запуска в <img src=\"\/img\/osdetect\/tools\/20\/qemu.png\" style=\"vertical-align:middle!important\" \/> QEMU виртуалки с образа диска (в основном IMG) возникает ошибка <b>Kernel panic — not syncing: Attempted to kill init!<\/b>: <b class=\"spoiler-controller pop-up_camper_10_06_20-error\">Показать<\/b><section class=\"spoiler pop-up_camper_10_06_20-error\"><\/p>\n<p><\/p>\n<p>Пример ошибки:<font size=\"2\"><\/p>\n<pre class=\"e2-text-code\"><pre class=\"e2-text-code\"><code>sd 0:0:0:0: [sda] Attached SCSI disk\r\nsmc91x.c: v1.1, sep 22 2004 by Nicolas Pitre &lt;nico@fluxnic.net&gt;\r\neth0: SMC91C11xFD (rev 1) at d089a000 IRQ 25 [nowait]\r\neth0: Ethernet addr: 52:54:00:12:34:56\r\nmousedev: PS\/2 mouse device common for all mice\r\nTCP cubic registered\r\nNET: Registered protocol family 17\r\ninput: AT Raw Set 2 keyboard as \/devices\/fpga:06\/serio0\/input\/input0\r\ninput: ImExPS\/2 Generic Explorer Mouse as \/devices\/fpga:07\/serio1\/input\/input1\r\nEXT2-fs (sda2): error: couldn't mount because of unsupported optional features (244)\r\nEXT4-fs (sda2): couldn't mount as ext3 due to feature incompatibilities\r\nEXT4-fs (sda2): recovery complete\r\nEXT4-fs (sda2): mounted filesystem with ordered data mode. Opts: (null)\r\nVFS: Mounted root (ext4 filesystem) on device 8:2.\r\ndevtmpfs: mounted\r\nFreeing init memory: 120K\r\nKernel panic - not syncing: Attempted to kill init!\r\n[&lt;c0032bec&gt;] (unwind_backtrace+0x0\/0xf0) from [&lt;c03064dc&gt;] (panic+0x58\/0x170)\r\n[&lt;c03064dc&gt;] (panic+0x58\/0x170) from [&lt;c0044054&gt;] (do_exit+0x5d0\/0x68c)\r\n[&lt;c0044054&gt;] (do_exit+0x5d0\/0x68c) from [&lt;c004435c&gt;] (do_group_exit+0x40\/0xb0)\r\n[&lt;c004435c&gt;] (do_group_exit+0x40\/0xb0) from [&lt;c004ed48&gt;] (get_signal_to_deliver+0x1a8\/0x378)\r\n[&lt;c004ed48&gt;] (get_signal_to_deliver+0x1a8\/0x378) from [&lt;c002f124&gt;] (do_signal+0x90\/0x518)\r\n[&lt;c002f124&gt;] (do_signal+0x90\/0x518) from [&lt;c002fa64&gt;] (do_notify_resume+0x48\/0x54)\r\n[&lt;c002fa64&gt;] (do_notify_resume+0x48\/0x54) from [&lt;c002cc38&gt;] (work_pending+0x24\/0x28)<\/code><\/pre><\/pre>\n<p><\/font><img src=\"\/blog\/pictures\/kernel-panic\/kernel-panic.jpg\" \/><\/section><\/p>\n<p><\/p>\n<p>Вероятно, эта ошибка возникает при отсутствии флага проверки файловой системы (возможно, в корне ФС лежит пустой файл с именем \/forcefsck). Борюсь с этим так. Командой <b>fdisk<\/b> получаю сектор начала ФС (допустим — <font color=\"red\"><b>217156<\/b><\/font>), умножаю его на размер сектора (обычно <font color=\"red\"><b>512<\/b><\/font> байт) и получаю смещение (в данном примере — <font color=\"red\"><b>111183872<\/b><\/font> байт). С этим смещением монтирую на спецдевайс \/dev\/loop0 IMG-файл. Провожу проверку с лечением возможных повреждений ФС, затем убираю монтирование спецдевайса.<font size=\"2\"><\/p>\n<pre class=\"e2-text-code\"><pre class=\"e2-text-code\"><code>sudo fdisk -l &lt;имя образа&gt;.img\r\nsudo losetup -o &lt;смещение * 512&gt; \/dev\/loop0 &lt;имя образа&gt;.img\r\nsudo fsck -fv \/dev\/loop0\r\nsudo losetup -d \/dev\/loop0<\/code><\/pre><\/pre>\n<p><\/font><\/p>\n<!--\r\n<b class=\"spoiler-controller pop-up_camper_04_06_20\">Показать<\/b><section class=\"spoiler pop-up_camper_04_06_20\"><p><\/p>\r\n--><!--\r\n<\/section>\r\n\r\nsudo mount -o loop,offset=4194304 2015-11-21-raspbian-jessie.img tmp\r\n--><p><font size=\"2\">Источники:<br \/>\n<a href=\"http:\/\/web.archive.org\/web\/20161224011451\/http:\/\/blog.3mdeb.com\/2015\/12\/30\/emulate-rapberry-pi-2-in-qemu\/\">http:\/\/web.archive.org\/web\/20161224011451\/http:\/\/blog.3mdeb.com\/2015\/12\/30\/emulate-rapberry-pi-2-in-qemu\/<\/a><br \/>\n<a href=\"https:\/\/raspberrypi.stackexchange.com\/questions\/40854\/kernel-panic-not-syncing-vfs-unable-to-mount-root-fs-on-unknown-block179-6\">https:\/\/raspberrypi.stackexchange.com\/questions\/40854\/kernel-panic-not-syncing-vfs-unable-to-mount-root-fs-on-unknown-block179-6<\/a><\/font><\/p>\n",
            "date_published": "2020-06-10T16:45:54+03:00",
            "date_modified": "2020-06-10T16:44:29+03:00",
            "_date_published_rfc2822": "Wed, 10 Jun 2020 16:45:54 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "1334",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "1283",
            "url": "https:\/\/gladilov.org.ru\/blog\/all\/dpkg-ldconfig-not-found-fix\/",
            "title": "Исправление ошибки dpkg о не найденном ldconfig",
            "content_html": "<p><img src=\"\/blog\/pictures\/dpkg-fix\/dpkg-fix.jpg\" class=\"main_right_img\" \/>У меня есть старая железка с <img style=\"vertical-align:middle!important;\" src=\"\/img\/install\/os\/debwrt.png\" \/> DebWrt 2.0 на борту, вот такая:<br \/>\n<font size=\"2\"><a class=\"lightbox2\" data-lightbox=\"13.05.2020-dir320\" href=\"\/img\/dir-320\/320_500.png\"><img src=\"\/img\/dir-320\/favicon.png\" style=\"vertical-align:middle;\" \/> D-Link DIR-320\/A2E<br \/><img src=\"\/img\/dir-320\/320_150.png\" style=\"vertical-align:middle;\" \/><\/a><\/font><br \/>\nПри выполнении команд apt-get получил предупреждения о том, что <b>ldconfig<\/b> и <b>start-stop-daemon<\/b> не найдены по пути поиска или не являются исполняемыми файлами (у меня русская локаль, поэтому системные сообщения выводятся на русском): <b class=\"spoiler-controller pop-up_camper_13_05_20-2\">Показать<\/b><section class=\"spoiler pop-up_camper_13_05_20-2\"><\/p>\n<p><\/p>\n<p><font size=\"2\"><\/p>\n<pre class=\"e2-text-code\"><pre class=\"e2-text-code\"><code># apt-get install debian-keyring\r\nЧтение списков пакетов... Готово\r\nПостроение дерева зависимостей\r\nЧтение информации о состоянии... Готово\r\nСледующие пакеты устанавливались автоматически и больше не требуются:\r\n  wwwconfig-common libjs-mootools javascript-common\r\nДля их удаления используйте 'apt-get autoremove'.\r\nНОВЫЕ пакеты, которые будут установлены:\r\n  debian-keyring\r\nобновлено 0, установлено 1 новых пакетов, для удаления отмечено 0 пакетов, и 4 п                                                                                                                                                              акетов не обновлено.\r\nНеобходимо скачать 31,1 MБ архивов.\r\nПосле данной операции, объём занятого дискового пространства возрастёт на 35,8 M                                                                                                                                                              B.\r\nВНИМАНИЕ: Следующие пакеты невозможно аутентифицировать!\r\n  debian-keyring\r\nУстановить эти пакеты без проверки [y\/N]? y\r\nПолучено:1 http:\/\/archive.debian.org\/debian\/ squeeze\/main debian-keyring all 201                                                                                                                                                              0.12.29 [31,1 MB]\r\nПолучено 31,1 MБ за 41с (745 kБ\/c)\r\ndpkg: предупреждение: «ldconfig» отсутствует в каталогах, перечисленных в PATH,                                                                                                                                                               или не является исполняемым.\r\ndpkg: предупреждение: «start-stop-daemon» отсутствует в каталогах, перечисленных                                                                                                                                                               в PATH, или не является исполняемым.\r\ndpkg: предупреждение: «update-rc.d» отсутствует в каталогах, перечисленных в PAT                                                                                                                                                              H, или не является исполняемым.\r\ndpkg: В каталогах, перечисленных в PATH, отсутствуют или не являются\r\nисполняемыми 3 необходимых программы.\r\nNB: В PATH суперпользователя обычно должны присутствовать \/usr\/local\/sbin,\r\n\/usr\/sbin и \/sbin.\r\nE: Sub-process \/usr\/bin\/dpkg returned an error code (2)\r\n#<\/code><\/pre><\/pre>\n<p><\/font><\/section>Для исправления этого, по совету <a href=\"https:\/\/specialistoff.net\/question\/869\">отсюда<\/a> и <a href=\"https:\/\/unix.stackexchange.com\/questions\/160019\/dpkg-cannot-find-ldconfig-start-stop-daemon-in-the-path-variable\">отсюда<\/a>, я добавил в файл <b>\/root\/.bashrc<\/b> такую строку:<font size=\"2\"><\/p>\n<pre class=\"e2-text-code\"><pre class=\"e2-text-code\"><code>export PATH=\/usr\/local\/sbin:\/usr\/local\/bin:\/usr\/sbin:\/usr\/bin:\/sbin:\/bin<\/code><\/pre><\/pre>\n<p><\/font><hr width=\"100%\"><center>Задача <font color=\"green\">решена<\/font><br \/><img src=\"\/blog\/pictures\/learning\/learn-mini.jpg\" \/><\/center><\/p>\n<p><font size=\"2\">UPD: Для самых слабых умом, которые (как и я) гуглят ошибку, а не читают системные месседжи до конца: достаточно было бы добавить к переменной PATH просто путь \/sbin, так как оба бинарника лежат там. Ну и сообщение в конце вывода какбэ намекает: <font size=\"2\"><\/p>\n<pre class=\"e2-text-code\"><pre class=\"e2-text-code\"><code>NB: В PATH суперпользователя обычно должны присутствовать \/usr\/local\/sbin,\r\n\/usr\/sbin и \/sbin.<\/code><\/pre><\/pre>\n<p><\/font><\/font><\/p>\n",
            "date_published": "2020-05-13T16:40:45+03:00",
            "date_modified": "2020-05-13T16:40:04+03:00",
            "_date_published_rfc2822": "Wed, 13 May 2020 16:40:45 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "1283",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "1271",
            "url": "https:\/\/gladilov.org.ru\/blog\/all\/gimp-context-menu\/",
            "title": "Добавление контекстного меню GIMP’а",
            "content_html": "<p>Поставил GIMP (в <img style=\"vertical-align:middle!important;\" src=\"\/img\/install\/os\/windows.png\" \/> Шindoшs), захотел сделать для файлов изображений контекстное меню «Редактировать в GIMP». Для этого создал <img style=\"vertical-align:middle!important;\" src=\"\/img\/special\/files\/reg.png\" \/> reg-файл с таким содержимым (путь к бинарнику редактора нужно исправить на актуальный):<font size=\"2\"><\/p>\n<pre class=\"e2-text-code\"><pre class=\"e2-text-code\"><code>Windows Registry Editor Version 5.00\r\n[HKEY_CLASSES_ROOT\\SystemFileAssociations\\image\\shell\\EditWithGIMP]\r\n@=&quot;Редактировать в &amp;GIMP&quot;\r\n[HKEY_CLASSES_ROOT\\SystemFileAssociations\\image\\shell\\EditWithGIMP\\command]\r\n@=&quot;\\&quot;C:\\\\Program Files\\\\GIMP 2\\\\bin\\\\gimp-2.10.exe\\&quot; \\&quot;%1\\&quot;&quot;<\/code><\/pre><\/pre>\n<p><\/font>После выполнения reg-файла контекстное меню появляется.<\/p>\n<p><img src=\"\/blog\/pictures\/gimp-edit.jpg\" \/><\/p>\n",
            "date_published": "2020-04-28T14:15:48+03:00",
            "date_modified": "2020-04-28T21:21:13+03:00",
            "_date_published_rfc2822": "Tue, 28 Apr 2020 14:15:48 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "1271",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "1260",
            "url": "https:\/\/gladilov.org.ru\/blog\/all\/remote-windows-command-executing-from-posix-host\/",
            "title": "Запуск виндовых команд из консоли posix-систем",
            "content_html": "<p><img src=\"\/blog\/pictures\/winexe\/1251-preview.png\" class=\"main_right_img\" \/>Недавно возникла необходимость в том, чтобы рулить виндовым сервером в домене удалённо прямо из консоли Linux-сервера. Гугляж выдал варианты типа xfreerdp, ssh-сервера для Windows, rdesktop’а, psexec’а и winexe. Мне захотелось попробовать прикрутить winexe.<\/p>\n<p>Процесс: <b class=\"spoiler-controller pop-up_camper_17_04_20\">Показать<\/b><section class=\"spoiler pop-up_camper_17_04_20\"><\/p>\n<p><\/p>\n<p>Делал в <img style=\"vertical-align:middle!important;\" src=\"\/img\/install\/os\/debian.png\" \/> Debian 10 ’Buster’. Готового пакета нет, поэтому по мануалу скачал с <a href=\"https:\/\/sourceforge.net\/projects\/winexe\/\">Sourceforge<\/a> файл winexe-1.00.tar.gz (в дальнейшем он не пригодился). Понаставил кучу пакетов (сразу скажу, что, возможно, половина тут — лишнее):<font size=\"2\"><\/p>\n<pre class=\"e2-text-code\"><pre class=\"e2-text-code\"><code>sudo aptitude install build-essential autoconf checkinstall python python-all python-dev python-all-dev python-setuptools libdcerpc-dev\r\nsudo aptitude install gcc-mingw-w64 comerr-dev libpopt-dev libbsd-dev zlib1g-dev libc6-dev\r\nsudo aptitude install comerr-dev libpopt-dev libbsd-dev zlib1g-dev libc6-dev python-dev\r\nsudo aptitude install git python2.7 libpango1.0-0 libacl1-dev libldap2-dev libpam-dev libtevent-dev python2.7-dev python3.7 samba-dev libgnutls28-dev libgpgme11-dev libjansson-dev libarchive-dev\r\nsudo aptitude install acl attr bind9utils bison debhelper dnsutils flex gdb krb5-user libaio-dev libblkid-dev libcap-dev libcups2-dev libjson-perl libncurses5-dev libreadline-dev nettle-dev perl-modules python-all-dev python-crypto python-dbg python-dnspython python3-dnspython python-markdown python3-markdown python3-dev xsltproc zlib1g-dev liblmdb-dev lmdb-utils<\/code><\/pre><\/pre>\n<p><\/font>Выполняю<font size=\"2\"><\/p>\n<pre class=\"e2-text-code\"><pre class=\"e2-text-code\"><code>tar xzvf winexe-1.00.tar.gz\r\ncd winexe-1.00\/source4\r\n.\/autogen.sh\r\n\/configure\r\nmake basics bin\/winexe<\/code><\/pre><\/pre>\n<p><\/font>На последней команде получаю ошибку:<br \/>\n<font size=\"2\"><\/p>\n<pre class=\"e2-text-code\"><pre class=\"e2-text-code\"><code>Creating heimdal\/lib\/asn1\/der-protos.h\r\nsyntax error at heimdal\/cf\/make-proto.pl line 15, near &quot;do Getopts(&quot;\r\nExecution of heimdal\/cf\/make-proto.pl aborted due to compilation errors.\r\nmake: *** [data.mk:197: heimdal\/lib\/asn1\/der-protos.h] Ошибка 255<\/code><\/pre><\/pre>\n<p><\/font>Подхожу у кроблеме с другой стороны. Клонирую гитом самбу и всё делаю в ейных исходниках (для этого и установил кучу пакетов):<font size=\"2\"><\/p>\n<pre class=\"e2-text-code\"><pre class=\"e2-text-code\"><code>cd ~\r\ngit clone git:\/\/git.samba.org\/samba.git ~\/samba\r\ncd ~\/samba\r\n.\/configure\r\nmake bin\/winexe<\/code><\/pre><\/pre>\n<p><\/font>В <b>~\/samba\/bin\/default\/examples\/winexe\/<\/b> скомпилился бинарник winexe, использую его по назначению:<font size=\"2\"><\/p>\n<pre class=\"e2-text-code\"><pre class=\"e2-text-code\"><code>winexe -U &lt;домен&gt;\/&lt;логин&gt;%&lt;пароль&gt; \/\/&lt;windows-хост&gt; &quot;команда&quot;<\/code><\/pre><\/pre>\n<p><\/font>Очздорова! <b class=\"spoiler-controller pop-up_camper_17_04_20-winexe-866\">Показать<\/b><section class=\"spoiler pop-up_camper_17_04_20-winexe-866\"><\/p>\n<p><\/p>\n<p><a class=\"lightbox2\" data-lightbox=\"17_04_20-winexe\" href=\"\/blog\/pictures\/winexe\/866.png\"  title=\"Кодовая страница IBM866\"><img src=\"\/blog\/pictures\/winexe\/866-preview.png\" style=\"vertical-align:middle;\" \/><\/a><\/section><\/p>\n<p>P. S. Проблему с кодировкой думаю решить с помощью установки кодовой страницы по умолчанию по <a href=\"https:\/\/superuser.com\/questions\/387569\/how-do-i-permantly-set-the-command-prompt-codepage-in-windows-7\">этому<\/a> мануалу и использования перекодировщика luit из пакета x11-utils. У себя попробовал — работает: <b class=\"spoiler-controller pop-up_camper_17_04_20-winexe-1251\">Показать<\/b><section class=\"spoiler pop-up_camper_17_04_20-winexe-1251\"><\/p>\n<p><\/p>\n<p><a class=\"lightbox2\" data-lightbox=\"17_04_20-winexe\" href=\"\/blog\/pictures\/winexe\/1251.png\" title=\"Кодовая страница CP-1251\"><img src=\"\/blog\/pictures\/winexe\/1251-preview.png\" style=\"vertical-align:middle;\" \/><\/a><\/section><\/p>\n<p><font size=\"2\">Источники:<br \/>\n<a href=\"https:\/\/wiki.samba.org\/index.php\/Package_Dependencies_Required_to_Build_Samba\">https:\/\/wiki.samba.org\/index.php\/Package_Dependencies_Required_to_Build_Samba<\/a><br \/>\n<a href=\"https:\/\/www.aldeid.com\/wiki\/Winexe\">https:\/\/www.aldeid.com\/wiki\/Winexe<\/a><br \/>\n<a href=\"https:\/\/ru.stackoverflow.com\/questions\/339012\/Как-подружить-luit-и-cp866\">https:\/\/ru.stackoverflow.com\/questions\/339012\/Как-подружить-luit-и-cp866<\/a><br \/>\n<a href=\"https:\/\/superuser.com\/questions\/269818\/change-default-code-page-of-windows-console-to-utf-8\">https:\/\/superuser.com\/questions\/269818\/change-default-code-page-of-windows-console-to-utf-8<\/a><br \/>\n<a href=\"https:\/\/superuser.com\/questions\/387569\/how-do-i-permantly-set-the-command-prompt-codepage-in-windows-7\">https:\/\/superuser.com\/questions\/387569\/how-do-i-permantly-set-the-command-prompt-codepage-in-windows-7<\/a><\/font><\/section><\/p>\n",
            "date_published": "2020-04-17T17:33:40+03:00",
            "date_modified": "2020-04-19T22:22:58+03:00",
            "_date_published_rfc2822": "Fri, 17 Apr 2020 17:33:40 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "1260",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css"
                ],
                "og_images": []
            }
        }
    ],
    "_e2_version": 3249,
    "_e2_ua_string": "E2 (v3249; Aegea)"
}