gladilov.org.ru gladilov.org.ua

51 заметка с тегом

маленькие хитрости

Хаки и трюки, подсмотренные на просторах Интернета или «выстраданные» мною самим.



Проброс событий в ClickHouse с использованием Vector

От устройства снаружи ИС на фронтальные балансировщики приходят сообщения в локейшн

/<device_location>/status

Файл журнала

/var/log/<device_access_log_file_path>.status.access.log

разбирается с помощью vector, пересылающий события на внутренний балансировщик. Между фронтальными и внутренними балансировщиками есть сетевая связность по порту TCP

<port>

Конфиг vector на фронтальных балансировщиках: Показать

sources:
  device-status:
    type: "file"
    max_line_bytes: 1638400
    include:
      - /var/log/<device_access_log_file_path>.status.access.log

transforms:
  device-status_filter:
    type: "filter"
    inputs:
      - device-status
    condition:
      .message != ""

  device-status_transform:
    type: "remap"
    inputs:
      - device-status_filter
    source: |
      .message = parse_jsonI(.message)
      .message.traffic_source = .host
      . = .message

sinks:
  sink_clickhouse:
    type: "clickhouse"
    inputs:
      - device-status_transform
    endpoint: "http://<inner_BGP_IP>:<port>"
    format: "json_as_string"
    healthcheck:
        enabled: false
    auth:
      strategy: "basic"
      user: "<clickhouse_DB_user>"
      password: "<clickhouse_DB_password>"
    database: "<clickhouse_DB>"
    table: "<clickhouse_table>"

Конфиг внутреннего балансировщика, пробрасывающего события в clickhouse: Показать

stream {
include /etc/<path_to_balancer_config>/log-format-s.conf;

upstream clickhouse8123 {
    server <clickhouse_BGP_IP>:8123;
    server <clickhouse_node1_IP>:8123 backup;
    server <clickhouse_node2_IP>:8123 backup;
}

server {
    listen <port>;
    proxy_pass clickhouse8123;
    access_log /var/log/<access_log_file_path> main_json_mini_s;
    error_log /var/log/<error_log_file_path>;
}
}

Команды clickhouse для создания БД, таблиц и представлений: Показать

# Создание БД
CREATE DATABASE vector ON CLUSTER <cluster_name>;

DROP TABLE IF EXISTS vector.device_status_logs ON CLUSTER <cluster_name>;
# Создание таблицы
CREATE TABLE vector.device_status_logs ON CLUSTER <cluster_name> (
        'message' String
)
ENGINE = ReplicatedReplacingMergeTree('/сlickhouse/{cluster}/tables/validator_status_logs','{replica}')
ORDER BY tuple();

DROP VIEW IF EXISTS vector.device_status_logs_view ON CLUSTER <cluster_name>;
# Создание представления
CREATE MATERIALIZED VIEW vector.device_status_logs_view ON CLUSTER <cluster_name> (
        'time_stamp' DateTime,
        'req' String,
        'req_body' String
)
ENGINE = ReplicatedReplacingMergeTree('/clickhouse/{cluster}/tables/device_status_logs_view','{replica}')
ORDER BY time_stamp
SETTINGS index_granularity = 8192
AS SELECT
        parseDateTimeBestEffortOrNull(JSONExtractString(message, 'timestamp')) AS time_stamp,
        simpleJSONExtractRaw(message, 'req') AS req,
        simpleJSONExtractRaw(message, 'req_body') AS req_body
FROM (
        SELECT message
        FROM vector.device_status_logs
);

1 июля   маленькие хитрости   сисадминство   софт

Игры с keepalived

В продолжение поста о системном демоне Keepalived, позволяющем организовать отказоустойчивость сервиса и балансировку нагрузки. Возник вопрос — как узнать, какая нода в каком состоянии запущена? Для этого я создал две ВМ, к примеру:
d1 IP=172.16.32.31/24
d2 IP=172.16.32.32/24

Конфигурация d1: Показать

global_defs {
   notification_email { root@localhost }
   router_id PD
    vrrp_garp_master_refresh 30
    vrrp_garp_master_refresh_repeat 2
}
vrrp_instance TEST {
    state MASTER
!    state BACKUP
    interface <интерфейс>
    virtual_router_id 101
    priority 103
!    priority 102
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass <пароль>
    }
    virtual_ipaddress { 172.16.32.30/24 dev <интерфейс> label <интерфейс>:vrrp }
    notify /opt/notify.sh
}

Конфигурация d2: Показать

global_defs {
   notification_email { root@localhost }
   router_id PD
    vrrp_garp_master_refresh 30
    vrrp_garp_master_refresh_repeat 2
}
vrrp_instance TEST {
!    state MASTER
    state BACKUP
    interface <интерфейс>
    virtual_router_id 101
!    priority 103
    priority 102
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass <пароль>
    }
    virtual_ipaddress { 172.16.32.30/24 dev <интерфейс> label <интерфейс>:vrrp }
    notify /opt/notify.sh
}

Для контроля текущей конфигурации (состояния) демона keepalived используется скрипт /opt/notify.sh: Показать

#!/bin/bash
echo $1 $2 is in $3 state > /var/run/keepalive.$1.$2.state

Ещё полезный скрипт-однострочник:: Показать

conf=/etc/keepalived/keepalived.conf && vip=$(expr "$(cat $conf)" : '.*\bvirtual_ipaddress\s*{\s*\(.*\)/*}') && vip=`expr "$vip" : '\([^ ]*\)' | sed 's/\./\\\\./g'` && if ip addr | grep -q "$vip"; then echo Primary; else echo Secondary; fi

2022   досуг   маленькие хитрости   сеть   сисадминство   софт

Напильник для Эгеи, часть 4

      Четвёртая часть о «доводке напильником» Эгеи.

      Август 2022 года:
Позавчера (02.08.2022) вынужден был переместить сайт (и блог) на домашний сервер. После переезда в тегах блога стали отображаться сообщения об ошибках: Показать

Лёгкий гугляж завёл меня на страницу Александра Токарева Эгея и красные банеры /core.php, line 2, но предлагаемый способ лечения (понизить версию PHP) оказался для меня неприемлемым. Решено было бороться радикальными методами — править код.

В файле system/core.php ищу переменную, вызвавшую сообщение об ошибке (k). Для этого в редакторе mc ищу символ k как слово целиком (whole word). Комментирую второе вхождение работы с этой переменной. После обновления страницы ошибка исчезла.

P. S. Эмпирический список пакетов, необходимых к установке для работы  блога,  RSS-ридера и  облака:
php-mbstring php-mysql php-gd php-curl php-cli libapache2-mod-php php-xml php-zip php-intl

P. P. S. Версия Эгеи — релиз 2.7, версия 3249.

2022   HTML   досуг   маленькие хитрости   сисадминство   софт

Защита опций загрузчика GRUB паролём

Метод заключается в редактировании опций загрузчика GRUB, чтобы установить пароль на их изменение при загрузке системы. Настройка делается в текстовых конфигурационных файлах GRUB, и при физическом доступе к компьютеру с возможностью загрузки с LIVE-дистрибутива можно обойти и эту защиту. При физическом доступе всегда остаётся вариант вынуть жёсткий диск и просмотреть его содержимое в другой ОСи. То есть настоящую защиту данных обеспечивает только их шифрование или шифрование всего диска, защита в виде пароля на загрузку не является надёжной!
Показать

Настройка пароля на загрузку системы и на редактирование опций загрузки

От имени пользователя root генерируется хеш пароля:

sudo grub-mkpasswd-pbkdf2

Будет показана примерно такая строка:

Хэш PBKDF2 вашего пароля: grub.pbkdf2.sha512.10000.6B2B740048C68DCEAD7B288ED37FCC577F1FFDBFE9955A3B9CA5CC47FEF524D07A75E97D17DB4F2E53AF836FBA08DF88CA8EEB7ABF87ABDE0A327A742F8DC745.476B122C205094968098043AF0DF40B4C009AA18F454A8D38E047BA7E50C5DA809F9E3C7FEAA927EF3C0F43CE0EB46072E7303F42559170A09C96DCD37A341D7

Пример показан на рисунке 1:

Рисунок 1. Пример генерации хеша пароля загрузки.

Из выведенных данных скопировать строку «grub.pbkdf2.sha512.10000………….» (полностью) и дописать в файл /etc/grub.d/40_custom:

set superusers="<имя>"
password_pbkdf2 <имя> grub.pbkdf2.sha512.10000.6B2B740048C68DCEAD7...

Поскольку файл /etc/grub.d/40_custom содержит хеш пароля, то рекомендуется запретить его чтение и изменение всеми пользователями, кроме пользователя root:

sudo chmod 711 /etc/grub.d/40_custom

Создание нового конфигурационного файла загрузчика:

sudo grub-mkconfig -o /boot/grub/grub.cfg

После выполнения процесса перезагрузки ПК при попытке выбрать любой пункт меню будет предложено ввести имя пользователя и пароль. При вводе логина <имя> и пароля, используемого в команде grub-mkpasswd-pbkdf2, если учётные данные верны, система продолжит загрузку.

N. B. Логин <имя> в файле /etc/grub.d/40_custom можно указать любой, он никак не связан с именами пользователей в системе, главное — не забыть его в дальнейшем. Кроме того, информацию о ​​пользователе и пароле не обязательно требуется вносить в определённый файл. Информация может быть помещена в любой файл каталога /etc/grub.d, если этот файл включён в grub.cfg. Файл /etc/grub.d/40_custom выбран потому, что он не перезаписывается при обновлении пакета GRUB.

P. S. Для возможности загрузки без пароля какого-либо пункта (или пунктов) меню их необходимо найти в файле /etc/grub.d/10_linux и добавить опцию:

--unrestricted

Пример показан на рисунке 2:

Рисунок 2. Пример добавления опции класса загрузки в файл /etc/grub.d/10_linux.

В результате загрузка системы будет выполняться как и раньше — пароль в загрузчике GRUB вводить не нужно, при выборе пункта меню GRUB продолжится обычная загрузка. Но при попытке отредактировать опции загрузчика будет предложено ввести имя и пароль. Без их ввода доступ к опциям загрузки не будет дан.

P. P. S. Если в меню загрузчика содержатся параметры для других ОСей, отличных от операционной системы по умолчанию (другие установки Linux, Mac OS, Windows и т. д.), в файле /etc/grub.d/30_os-prober вносятся изменения в опции класса загрузки соответствующей ОСи с добавлением строки

--unrestricted

Пример показан на рисунке 3:

Рисунок 3. Пример добавления опции класса загрузки в файл /etc/grub.d/30_os-prober для всех найденных типов операционных систем.

2021   досуг   маленькие хитрости   ОС   сисадминство   софт

Решение проблемы BSOD у VirtualBox вместе с КриптоПРО

В винде VirtualBox при запуске виртуального хоста и  установленном в системе КриптоПРО выпадает в «синий экран смерти». При чём отказаться от использования КриптоПРО я не могу, пришлось запускать VirtualBox’овые виртаулки в фоновом режиме с интерфейсом. Но это не всегда удобно, можно случайно забыться и получить BSOD.

Тема давно обсуждается, решения есть везде, но приведу у себя в блоге, чтобы было под рукой. В реестре нужно добавить исключения для VirtialBox в секции CryptoPRO и (обязательно) перезагрузить компьютер, так как КриптоПРО при загрузке ОСи делает свою инициализацию, которая включает чтение записей в реестре. Ветка реестра такая: Показать

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude]

Добавляемые записи:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\VBoxHeadless]
"FileName"="VBoxHeadless.exe"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\VBoxNetDHCP]
"FileName"="VBoxNetDHCP.exe"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\VirtualBox]
"FileName"="VirtualBox.exe"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\VBoxBalloonCtrl]
"FileName"="VBoxBalloonCtrl.exe"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\VBoxBugReport]
"FileName"="VBoxBugReport.exe"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\VBoxDTrace]
"FileName"="VBoxDTrace.exe"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\VBoxExtPackHelperApp]
"FileName"="VBoxExtPackHelperApp.exe"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\vbox-img]
"FileName"="vbox-img.exe"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\VBoxManage]
"FileName"="VBoxManage.exe"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\VBoxNetNAT]
"FileName"="VBoxNetNAT.exe"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\VBoxSDL]
"FileName"="VBoxSDL.exe"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\VBoxSDS]
"FileName"="VBoxSDS.exe"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\VBoxSVC]
"FileName"="VBoxSVC.exe"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\VBoxTestOGL]
"FileName"="VBoxTestOGL.exe"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\VBoxWebSrv]
"FileName"="VBoxWebSrv.exe"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\VirtualBoxVM]
"FileName"="VirtualBoxVM.exe"

REG-файл,для добавления в реестр вышеуказанных строк: vb-csp.reg.

Отсюда

2021   досуг   маленькие хитрости   сисадминство   софт

Установка GUI на BSD

Часто для моих «изысканий» нужно установить графическую подсистему и рабочую среду на BSD-подобную ОСь. Обычно выбираю окружение Xfce как лёгкое, доступное и универсальное. Минутка рекламы:

Xfce — для тех, кому нужен простой, эффективно работающий рабочий стол, который легко использовать и настраивать!

Установку произвожу так: Показать

На  FreeBSD 11.4:

# pkg update
# pkg install xorg xfce

На  NetBSD 7.1:

# export PKG_PATH=ftp://ftp.netbsd.org/pub/pkgsrc/packages/NetBSD/`uname -m`/`uname -r`/All
# pkg_add -v pkgin
# pkgin update
# pkgin install xfce


Задача решена

В конце «причёсываю» систему:

# pkgin install sudo bash mc
# useradd -m -G wheel soul
# passwd soul
# chsh -s `which bash` soul

Для старта иксов запускаю

startx

или прописываю в ~/.xinitrc:

startxfce4

P. S. Заметка из кровавых подвалов 2018 года, решил чуть дополнить и опубликовать из черновиков.

Нужные ссылки:
https://www.freebsd.org/doc/handbook/x11-wm.html
https://www.freebsd.org/doc/ru_RU.KOI8-R/books/handbook/x11-wm.html

2020   BSD   досуг   маленькие хитрости   ОС   сисадминство   софт

Проверка раздела в образе диска

Часто сталкиваюсь с ситуацией, когда при попытке запуска в  QEMU виртуалки с образа диска (в основном IMG) возникает ошибка Kernel panic — not syncing: Attempted to kill init!: Показать

Пример ошибки:

sd 0:0:0:0: [sda] Attached SCSI disk
smc91x.c: v1.1, sep 22 2004 by Nicolas Pitre <nico@fluxnic.net>
eth0: SMC91C11xFD (rev 1) at d089a000 IRQ 25 [nowait]
eth0: Ethernet addr: 52:54:00:12:34:56
mousedev: PS/2 mouse device common for all mice
TCP cubic registered
NET: Registered protocol family 17
input: AT Raw Set 2 keyboard as /devices/fpga:06/serio0/input/input0
input: ImExPS/2 Generic Explorer Mouse as /devices/fpga:07/serio1/input/input1
EXT2-fs (sda2): error: couldn't mount because of unsupported optional features (244)
EXT4-fs (sda2): couldn't mount as ext3 due to feature incompatibilities
EXT4-fs (sda2): recovery complete
EXT4-fs (sda2): mounted filesystem with ordered data mode. Opts: (null)
VFS: Mounted root (ext4 filesystem) on device 8:2.
devtmpfs: mounted
Freeing init memory: 120K
Kernel panic - not syncing: Attempted to kill init!
[<c0032bec>] (unwind_backtrace+0x0/0xf0) from [<c03064dc>] (panic+0x58/0x170)
[<c03064dc>] (panic+0x58/0x170) from [<c0044054>] (do_exit+0x5d0/0x68c)
[<c0044054>] (do_exit+0x5d0/0x68c) from [<c004435c>] (do_group_exit+0x40/0xb0)
[<c004435c>] (do_group_exit+0x40/0xb0) from [<c004ed48>] (get_signal_to_deliver+0x1a8/0x378)
[<c004ed48>] (get_signal_to_deliver+0x1a8/0x378) from [<c002f124>] (do_signal+0x90/0x518)
[<c002f124>] (do_signal+0x90/0x518) from [<c002fa64>] (do_notify_resume+0x48/0x54)
[<c002fa64>] (do_notify_resume+0x48/0x54) from [<c002cc38>] (work_pending+0x24/0x28)

Вероятно, эта ошибка возникает при отсутствии флага проверки файловой системы (возможно, в корне ФС лежит пустой файл с именем /forcefsck). Борюсь с этим так. Командой fdisk получаю сектор начала ФС (допустим — 217156), умножаю его на размер сектора (обычно 512 байт) и получаю смещение (в данном примере — 111183872 байт). С этим смещением монтирую на спецдевайс /dev/loop0 IMG-файл. Провожу проверку с лечением возможных повреждений ФС, затем убираю монтирование спецдевайса.

sudo fdisk -l <имя образа>.img
sudo losetup -o <смещение * 512> /dev/loop0 <имя образа>.img
sudo fsck -fv /dev/loop0
sudo losetup -d /dev/loop0

Источники:
http://web.archive.org/web/20161224011451/http://blog.3mdeb.com/2015/12/30/emulate-rapberry-pi-2-in-qemu/
https://raspberrypi.stackexchange.com/questions/40854/kernel-panic-not-syncing-vfs-unable-to-mount-root-fs-on-unknown-block179-6

2020   Debian   Linux   досуг   маленькие хитрости   мну   ОС   сисадминство   софт

Исправление ошибки dpkg о не найденном ldconfig

У меня есть старая железка с  DebWrt 2.0 на борту, вот такая:
 D-Link DIR-320/A2E

При выполнении команд apt-get получил предупреждения о том, что ldconfig и start-stop-daemon не найдены по пути поиска или не являются исполняемыми файлами (у меня русская локаль, поэтому системные сообщения выводятся на русском): Показать

# apt-get install debian-keyring
Чтение списков пакетов... Готово
Построение дерева зависимостей
Чтение информации о состоянии... Готово
Следующие пакеты устанавливались автоматически и больше не требуются:
  wwwconfig-common libjs-mootools javascript-common
Для их удаления используйте 'apt-get autoremove'.
НОВЫЕ пакеты, которые будут установлены:
  debian-keyring
обновлено 0, установлено 1 новых пакетов, для удаления отмечено 0 пакетов, и 4 п                                                                                                                                                              акетов не обновлено.
Необходимо скачать 31,1 MБ архивов.
После данной операции, объём занятого дискового пространства возрастёт на 35,8 M                                                                                                                                                              B.
ВНИМАНИЕ: Следующие пакеты невозможно аутентифицировать!
  debian-keyring
Установить эти пакеты без проверки [y/N]? y
Получено:1 http://archive.debian.org/debian/ squeeze/main debian-keyring all 201                                                                                                                                                              0.12.29 [31,1 MB]
Получено 31,1 MБ за 41с (745 kБ/c)
dpkg: предупреждение: «ldconfig» отсутствует в каталогах, перечисленных в PATH,                                                                                                                                                               или не является исполняемым.
dpkg: предупреждение: «start-stop-daemon» отсутствует в каталогах, перечисленных                                                                                                                                                               в PATH, или не является исполняемым.
dpkg: предупреждение: «update-rc.d» отсутствует в каталогах, перечисленных в PAT                                                                                                                                                              H, или не является исполняемым.
dpkg: В каталогах, перечисленных в PATH, отсутствуют или не являются
исполняемыми 3 необходимых программы.
NB: В PATH суперпользователя обычно должны присутствовать /usr/local/sbin,
/usr/sbin и /sbin.
E: Sub-process /usr/bin/dpkg returned an error code (2)
#

Для исправления этого, по совету отсюда и отсюда, я добавил в файл /root/.bashrc такую строку:

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin


Задача решена

UPD: Для самых слабых умом, которые (как и я) гуглят ошибку, а не читают системные месседжи до конца: достаточно было бы добавить к переменной PATH просто путь /sbin, так как оба бинарника лежат там. Ну и сообщение в конце вывода какбэ намекает: 

NB: В PATH суперпользователя обычно должны присутствовать /usr/local/sbin,
/usr/sbin и /sbin.

2020   Debian   досуг   интересное   маленькие хитрости   ОС   роутер   сисадминство   софт

Добавление контекстного меню GIMP’а

Поставил GIMP (в  Шindoшs), захотел сделать для файлов изображений контекстное меню «Редактировать в GIMP». Для этого создал  reg-файл с таким содержимым (путь к бинарнику редактора нужно исправить на актуальный):

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\SystemFileAssociations\image\shell\EditWithGIMP]
@="Редактировать в &GIMP"
[HKEY_CLASSES_ROOT\SystemFileAssociations\image\shell\EditWithGIMP\command]
@="\"C:\\Program Files\\GIMP 2\\bin\\gimp-2.10.exe\" \"%1\""

После выполнения reg-файла контекстное меню появляется.

2020   досуг   маленькие хитрости   сисадминство   скрипт

Запуск виндовых команд из консоли posix-систем

Недавно возникла необходимость в том, чтобы рулить виндовым сервером в домене удалённо прямо из консоли Linux-сервера. Гугляж выдал варианты типа xfreerdp, ssh-сервера для Windows, rdesktop’а, psexec’а и winexe. Мне захотелось попробовать прикрутить winexe.

Процесс: Показать

Делал в  Debian 10 ’Buster’. Готового пакета нет, поэтому по мануалу скачал с Sourceforge файл winexe-1.00.tar.gz (в дальнейшем он не пригодился). Понаставил кучу пакетов (сразу скажу, что, возможно, половина тут — лишнее):

sudo aptitude install build-essential autoconf checkinstall python python-all python-dev python-all-dev python-setuptools libdcerpc-dev
sudo aptitude install gcc-mingw-w64 comerr-dev libpopt-dev libbsd-dev zlib1g-dev libc6-dev
sudo aptitude install comerr-dev libpopt-dev libbsd-dev zlib1g-dev libc6-dev python-dev
sudo 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
sudo 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

Выполняю

tar xzvf winexe-1.00.tar.gz
cd winexe-1.00/source4
./autogen.sh
/configure
make basics bin/winexe

На последней команде получаю ошибку:

Creating heimdal/lib/asn1/der-protos.h
syntax error at heimdal/cf/make-proto.pl line 15, near "do Getopts("
Execution of heimdal/cf/make-proto.pl aborted due to compilation errors.
make: *** [data.mk:197: heimdal/lib/asn1/der-protos.h] Ошибка 255

Подхожу у кроблеме с другой стороны. Клонирую гитом самбу и всё делаю в ейных исходниках (для этого и установил кучу пакетов):

cd ~
git clone git://git.samba.org/samba.git ~/samba
cd ~/samba
./configure
make bin/winexe

В ~/samba/bin/default/examples/winexe/ скомпилился бинарник winexe, использую его по назначению:

winexe -U <домен>/<логин>%<пароль> //<windows-хост> "команда"

Очздорова! Показать

P. S. Проблему с кодировкой думаю решить с помощью установки кодовой страницы по умолчанию по этому мануалу и использования перекодировщика luit из пакета x11-utils. У себя попробовал — работает: Показать

Источники:
https://wiki.samba.org/index.php/Package_Dependencies_Required_to_Build_Samba
https://www.aldeid.com/wiki/Winexe
https://ru.stackoverflow.com/questions/339012/Как-подружить-luit-и-cp866
https://superuser.com/questions/269818/change-default-code-page-of-windows-console-to-utf-8
https://superuser.com/questions/387569/how-do-i-permantly-set-the-command-prompt-codepage-in-windows-7

2020   Linux   маленькие хитрости   работа   сисадминство   софт
Ранее Ctrl + ↓
Наверх