Показаны сообщения с ярлыком how-to. Показать все сообщения
Показаны сообщения с ярлыком how-to. Показать все сообщения

27 апр. 2018 г.

SSH Agent auto add keys

Когда количество ssh-ключей начинает расти, жонглировать ими становится печально. Случайно на реддите нашелся замечательный лайфхак, как удобно работать с множеством ключей, не заморачиваясь ручным добавлением их в ssh-agent:
Host *
UseKeychain yes
AddKeysToAgent yes
IdentityFile ~/.ssh/id_rsa
IdentityFile ~/.ssh/id_25519
Один раз перечисляем все нужные ключи в начале ~/.ssh/config, и все. 

22 дек. 2016 г.

Time Machine server on Linux

Появилась задача: резервировать данные рабочего MacbookPro. У Mac OS существует штатный инструмент для создания резервных копий - Time Machine, который для своей работы требует или внешний диск, подключаемый непосредственно к компьютеру, или устройство от Apple - Time Capsule. Есть и третий вариант, файловый ресурс на linux-сервере, доступный по протоколу AFP.
В случае внешнего HDD его придется отдать под задачу резервного копирования полностью: он будет отформатирован в соответствующем виде. Time Capsule стоит некоторых денег. Для реализации linux-версии нужно какое-то количество времени.
Итак, для доступа к сетевым файловым ресурсам у Apple есть свой протокол - Apple Filling Protocol (AFP), свободная реализация которого называется Netatalk. В текущем стабильном (и предыдущем стабильном) релизе Debian его нет, поэтому придется взять исходники с сайта и собрать. Если предполагается частая (или многочисленная) установка, то впоследствии можно сделать deb-пакет самостоятельно, например, с помощью checkinstall.
Сам процесс установки и настройки довольно прост:
- получаем и распаковываем архив с исходниками
root@mytmserver # wget -O netatalk-3.1.10.tar.bz2 -c "http://prdownloads.sourceforge.net/netatalk/netatalk-3.1.10.tar.bz2?download"
root@mytmserver # tar -xjvf ./netatalk-3.1.10.tar.bz2
root@mytmserver # cd netatalk-3.1.10/
- доустанавливаем необходимые пакеты (средства сборки и заголовки)
root@mytmserver # apt update && apt install build-essential libgcrypt11-dev libdb-dev libacl1-dev
- конфигурируем и собираем (список параметров сборки можно посмотреть с помощью ./configure --help)
root@mytmserver # ./configure --prefix=/usr --sysconfdir=/etc/ --with-init-style=debian-systemd --with-cnid-dbd-backend --with-acls --enable-debug
root@mytmserver # make && make install
- запускаем и ставим в автозагрузку демона
root@mytmserver # systemctl start netatalk.service
root@mytmserver # systemctl status netatalk.service
root@mytmserver # systemctl enable netatalk.service 
- перезапускаем avahi (для автообнаружения макосью)
root@mytmserver # systemctl restart avahi-daemon.service 
В логах видим примерно следующее:
root@mytmserver # journalctl -u netatalk.service
дек 22 07:56:29 mytmserver systemd[1]: Starting Netatalk AFP fileserver for Macintosh clients...
дек 22 07:56:29 mytmserver systemd[1]: Started Netatalk AFP fileserver for Macintosh clients.
дек 22 07:56:30 mytmserver netatalk[1281]: Netatalk AFP server starting
дек 22 07:56:30 mytmserver netatalk[1281]: Registered with Zeroconf
дек 22 07:56:31 mytmserver afpd[1321]: Netatalk AFP/TCP listening on 192.168.1.100:548
дек 22 07:56:31 mytmserver cnid_metad[1322]: CNID Server listening on localhost:4700
Служба работает и готова принимать соединения.
Базовая настройка для целей резервного копирования:
 - добавить общие папки внутри домашних директорий существующих в системе пользователей:
/etc/afp.conf:
 [Homes]
 basedir regex = /home
- или создать отдельную папку, ограничив к ней доступ нужным пользователям
/etc/afp.conf:
[myTMserver Folder]
 path = /data/raid1-media/timemachine
 time machine = yes
 valid users = delayer
Далее перезапустить службу netatalk.
Со стороны Mac OS нужно включить возможность работы с "нелегальными" Time Machine серверами. Для этого в консоли (iterm2, terminal):
$ defaults write com.apple.systempreferences TMShowUnsupportedNetworkVolumes 1
В Finder проверяем доступ: 
- Command + K 
- Адрес сервера: afp://192.168.1.100
- учетные данные пользователя delayer

Если каталог по сети доступен и аутентификация пройдена, можно идти  в Системные настройки - Time Machine - Выбрать диск... В окне должен быть доступен созданный ресурс. Добавляем, при необходимости снова аутентифицируемся. Далее служба будет создавать копии автоматически.

6 июн. 2016 г.

Windows 10 suppressing Start menu when in domain

В ряде случаев служба Windows Firewall (Брандмауэр Windows, да?) отключается средствами групповых политик, причем отключается именно сама служба, а не доменный профиль. В случае с Windows 10 это приводит к забавной проблеме - после входа в домен и перезагрузки (то есть, после применения групповых политик домена) блокируется доступ к Start Menu и Панели уведомлений. Не готов сказать, почему происходит блокировка именно этих элементов интерфейса, но факт остается фактом. 
Таким образом, workaround (а официального решения проблемы на связанных с Microsoft ресурсами найти не удалось) - вручную выставить для службы MpsSvc тип запуска - Автоматически, и состояние - Запущено. Изменять состояние профилей брандмауэра при этом не требуется, они по-прежнему могут оставаться выключенными.

18 мая 2016 г.

Автоматическая блокировка экрана в Windows c помощью bluetooth

Давно собирался, но вот дошли руки. 
Блокировка рабочего компьютера при отсутствии - необходимое дело, однако забыть это сделать вполне себе просто. Выставление короткого времени выпадания рабочего стола в заставку с последующим запросом пароля - вариант, но в практической жизни доставляющий больше проблем, чем пользы.
Отличная идея - автоматизировать сам триггер блокировки, а именно - осознание компьютером факта отсутствия пользователя. Одним из самых простых способов сделать это - использовать в качестве маячка любое устройство с включенным bluetooth.
Со стороны рабочей станции устанавливается практически любой bluetooth-адаптер (у меня оказался вот этот), со стороны пользователя может быть телефон, браслет, гарнитура и т.д. Первоначально в планах было "маячить" браслетом mi band, однако с "родными" драйверами, идущими в комплекте, адаптер не виделся софтом для блокировки (о нем ниже), а со стандартными драйверами от Майкрософта - браслет не определялся как видимый (есть подозрение, что стандартные драйверы не умеют Bluetooth 4 LE). С телефоном же проблем не возникло, поэтому используем его.
Таким образом, после включения и установки драйвера адаптера следует включить обнаружение на телефоне и провести стандартными средствами сопряжение устройств по bluetooth.
Далее, софт. На сегодняшний день практически единственным доступным (без денег) средством организации мониторинга доступности bluetooth-устройств в зоне видимости с выполнением действий по факту изменения этой доступности является утилита BtProx. Не обновляется с 2012 года, но пока работает без нареканий. Выглядит она так:


Всё просто: в Used Device выбирается устройство из сопряженных ранее, которое будет выступать маячком, Timeout - время задержки перед выполнением действий, Lock command - выполняемая команда (или скрипт) по факту потери связи с Used device, в нашем случае это мантра: rundll32.exe user32.dll,LockWorkStation (по сути - нажатие Win + L), Release command - аналогичное действие по факту появления устройства в зоне видимости. Далее Start - и система должна начать работу.
В случае потери связи с устройством, утилита выдает соответствующее уведомление и через несколько секунд блокирует экран.

22 сент. 2014 г.

bash + pop3s connection

Когда-то давно потребовалось мне автоматизировать сбор почты из ящика на mail.ru через pop3. Решение получилось примерно таким:
function getmail_mailru {
expect -c '
        log_file -noappend /tmp/mail.log
        spawn /bin/nc pop.mail.ru 110
        set timeout 3
        expect "+OK"  {send "USER username\r" ; send_user "user sent\n"}
        expect "+OK"  {send "PASS password\r" ; send_user "pass sent\n"}
        expect "+OK Welcome!"   {send "RETR 1\r"}
        expect -regexp {^.}   {send "DELE 1\r"}
        expect "+OK message 1 deleted"   {send "QUIT\r"}
        expect "*maildrop empty" {send "QUIT\r" ; send_user "empty mailbox\n"}
        '
}
Однако сегодня команда mail.ru прислала сообщение, что
После 22 сентября на POP3 и SMTP-серверах останется только безопасная
авторизация через протокол SSL
Возможно, они и раньше предупреждали, но до моего сведения сия идея дошла только сегодня, когда уже полдня почта не забиралась.
Решение: заменить строчку
spawn /bin/nc pop.mail.ru 110
на
spawn /usr/bin/openssl s_client -connect pop3.mail.ru:995
Таким образом, соединение с сервером снова будет установлено.
Однако тестирование выявило еще одну проблему: при посылке команды RETR 1 соединение с почтовым сервером подвисало с сообщением RENEGOTIATING.
Выяснилось, что такое поведение вызвано тем, что заглавная R воспринимается утилитой s_client как команда переподключения к серверу.
CONNECTED COMMANDS
       If a connection is established with an SSL server then any data received from the server is displayed and any key presses will be sent to the server. When used interactively (which means neither -quiet nor -ign_eof have been given), the session will be renegotiated if the line begins with an R, and if the line begins with a Q or if end of file is reached, the connection will be closed down.
Решение: не использовать верхний регистр, так как для общения с почтовым сервером он не обязателен.
function getmail_mailru {
expect -c '
        log_file -noappend /tmp/mail.log
        spawn /usr/bin/openssl s_client -connect pop3.mail.ru:995
        set timeout 3
        expect "+OK"   {send "user username\r" ; send_user "user sent\n"}
        expect "+OK"    {send "pass password\r" ; send_user "pass sent\n"}
        expect "+OK Welcome!"  {send "retr 1\r"}
        expect -regexp {^.}  {send "dele 1\r"}
        expect "+OK message 1 deleted"  {send "quit\r"}
        expect "*maildrop empty"   {send "quit\r" ; send_user "empty mailbox\n"}
        '
}

18 июн. 2014 г.

1C8 пакетная выгрузка базы

Простецкий bat-скрипт для выгрузки определенной базы 1Сv8:

set DDMMYY=%DATE:~0,2%%DATE:~3,2%%DATE:~6,4%
set DB=C:\path\to\base\
set USER=1c_user
set PASS=1c_user_pass
set LOG=D:\path\to\%DDMMYY%-logfile.logset DUMPFILE=D:\path\to\%DDMMYY-dbbackup.dt

"C:\Program Files\1cv82\common\1cestart.exe" DESIGNER /F "%DB%" /N %USER% /P %PASS% /OUT "%LOG%" /DumpIB "%DUMPFILE%"

1 апр. 2014 г.

Windows 7 x64 + padeg.dll

Давно ничего не было про 1С. К сожалению, снова пришлось с ней столкнуться. Проблема - в Windows 7 x64 не подгружается библиотека padeg.dll, требуемая при выводе практически любой печатной форме в зарплатной конфе организации. Либа старая, винда новая - добро пожаловать в АДЪ. 
Если походить по 1С-ным форумам, то выясняется, что библиотека эта используется для склонения по падежам всего склоняющегося по оным. Ноги ее растут еще из 1Cv77, для 1Сv8.x уже написана отдельная библиотека с неважно каким названием, ибо подменять одно на другое в конфе никто не будет.
Короче, че делать?
Симптом: при вызове печатной формы имеем ошибку вида


Таблетка: необходимую библиотеку padeg.dll (и до кучи еще одну - 1cpadeg.dll, она инсталлятором рядом кладется) положить в C:\Program files (x86)\SafePadeg или куда душа пожелает и зарегистрировать через 
C:\WINDOWS\SysWoW64\regsvr32.exe C:\Program files (x86)\padeg.dll
C:\WINDOWS\SysWoW64\regsvr32.exe C:\Program files (x86)\1cpadeg.dll
После этого перезагрузиться (не понял, зачем, но до перезагрузки не подхватывалась 1С-кой).