phd_ru: (Default)
Коллеги, кто-нибудь знает, как заставить листалку less реагировать на команды, пока она читает stdin? Она не реагирует, пока не прочитает полный первый экран, и только потом можно прокручивать и искать. И то, если крутануть слишком далеко вниз, less покажет всё, что успел к этому времени прочесть, и снова зависнет — будет читать до конца следующего экрана. В доках и поиске ничего не нашёл.

Upd. Перепробовал много вариантов, найденных в Сети: Ctrl-C, Esc+G, редиреект во временный файл и less +F файл.tmp. Ни один вариант не удовлетворил, вариант Esc+G (обращаю внимание — там G, т.е. Shift-g а не g) наименее неудобный. Главное, помнить, что нельзя наживать F, G или >.

X-Post в ЖЖ.
phd_ru: (Default)
Вопрос к понимающим в программах ifup, ip и в WireGuard. Вот так у меня описан интерфейс:
iface wg0 inet static
        address 192.168.11.4
        netmask 255.255.255.0
        pre-up exec wg-quick up $IFACE
        post-down exec wg-quick down $IFACE

Поднимаю:
$ sudo ifup wg0
[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 192.168.11.4/32 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] resolvconf -a tun.wg0 -m 0 -x
[#] ip -4 route add 192.168.11.5/32 dev wg0
[#] ip -4 route add 192.168.11.3/32 dev wg0
[#] ip -4 route add 192.168.11.1/32 dev wg0
[#] ip -4 route add 192.168.10.1/32 dev wg0
/usr/bin/arping: Device wg0 not available.
ERROR: Duplicate address 192.168.11.4 assigned in the network where wg0 is connected to.

Действительно, интерфейсу присвоено 2 адреса:
$ ip address show dev wg0 
5: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
    link/none 
    inet 192.168.11.4/32 scope global wg0
       valid_lft forever preferred_lft forever
    inet 192.168.11.4/24 brd 192.168.11.255 scope global wg0
       valid_lft forever preferred_lft forever

Мнэ… Зачем, почему, как исправить? Убрать address 192.168.11.4 из /etc/network/interfaces нельзя — ifup ругается на синтаксис файла, параметр address обязателен. Убрать этот адрес из /etc/wireguard/wg0.conf тоже, скорее всего нельзя (хотя я не пробовал).

За исключением ошибки в выводе всё работает, так что это скорее предупреждение, не ошибка. Но хочется и её исправить.

Вместо sudo ifup wg0 я могу сделать
$ sudo wg-quick up wg0
[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 192.168.11.4/32 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] resolvconf -a tun.wg0 -m 0 -x
[#] ip -4 route add 192.168.11.5/32 dev wg0
[#] ip -4 route add 192.168.11.3/32 dev wg0
[#] ip -4 route add 192.168.11.1/32 dev wg0
[#] ip -4 route add 192.168.10.1/32 dev wg0

И тогда всё хорошо:
$ ip address show dev wg0 
6: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
    link/none 
    inet 192.168.11.4/32 scope global wg0
       valid_lft forever preferred_lft forever

Но это какой-то … если не хак, то обходной путь, не решение, мне не нравится.

X-Post в ЖЖ.
phd_ru: (Default)
Коллеги, кто объяснит разницу:

$ bash -c 'echo C:\\Data\\2022-01-01\\'
C:\Data\2022-01-01\

$ dash -c 'echo C:\\Data\\2022-01-01\\'
C:\Data┌2-01-01\


Ну т.е. понятно, что это \202, но как его отучить, и научить понимать \\ ?

На одном рабочем сервере я заметил, что /bin/sh у меня /bin/bash, а я люблю, чтобы был /bin/dash во избежание башизмов. Ну и заменил. Внезапно сломался shell-скрипт.

Upd. Вот так: $ /bin/echo 'C:\\Data\\2022-01-01\\'
C:\\Data\\2022-01-01\\


Upd2. Сломался ещё один скрипт. В dash не работает описание функции function f() {} — слово function пришлось убрать. Чистка башизмов. :-)

X-Post в ЖЖ.

Минус

Nov. 23rd, 2021 04:15 pm
phd_ru: (Default)
Про ошибку rm * .o все коллеги знают?

Ну вот в копилку к будущему переизданию Unix Haters Handbook:

https://stackoverflow.com/q/70081221/7976758

find . name '.DS_Store' -type f -delete

Удалило у пользователя нахрен всё. А ведь всего одно тире пропущено.

PS. Ну и отладиться забыл без -delete.

PS2. И резервных копий, небось, нет.
phd_ru: (Default)
Вопрос к залу: у меня на одном из серверов OpenVPN есть настройка

push "dhcp-option DNS 188.166.106.171"

Я не хочу отправлять внешний адрес, потому что named настроен пускать только с этого адреса + 127.0.0.1 + прочие локальные адреса, и я не хочу открывать доступ отовсюду. Так у меня на всех серверах, но на всех остальных есть фиксированные внутренние адреса, которые я и прописал в конфиги, а на этом нету.

Внимание, вопрос: как послать клиенту динамический внутренний адрес, который возникает в тот момент, когда его выделяет из пула сервер OpenVPN? Пока ничего в голову не приходит. Разве что вообще не делать push, а на клиентской стороне запустить скрипт --route-up, в котором сделать

echo nameserver $ifconfig_remote | resolvconf -a $dev

Upd. Или дать этому сервер искусственный внутренний адрес, только для DNS? Это кажется некрасивым, но наиболее простым.
phd_ru: (Default)
Захотел избавиться от устаревшей настройки ns-cert-type в OpenVPN и заменить её на remote-cert-tls. Заодно научился пользоваться Easy RSA 3.0; с версии 2.0 там очень много изменений, особенно в файле конфигурации vars, его пришлось переписать целиком.

Теперь думаю, что все Issuer/Subject можно было сделать красивее. Потом пересоздам все сертификаты, но сейчас это не срочно, есть задачи поважнее. Нужно обновить сертификаты на почтовых серверах. И нужно переписать сетевые экраны на NetFilter.

Ещё нужно придумать скрипты OpenVPN для проверки клиентских сертификатов.
phd_ru: (Default)
У меня в vim опция whichwrap выставлена на максимум: set whichwrap=b,s,h,l,<,>,[,],~. Много лет всё работало прекрасно, и вдруг сломалось. Стрелки влево/вправо перестали перескакивать на пред/след строки.

Сегодня у меня день посвободнее, взялся поискать причину. Нашёл. vim запущенный под screen ресетит эту опцию в set whichwrap=b,s. Сам vim, нигде ни в /usr/share/vim ни в ~/.vim/ ничего нет.

Пришлось добавить микро-плагин для исправления. :-(

X-Post в ЖЖ.
phd_ru: (Default)
Майские праздники прошли, наш медицинский центр открылся. В отделе генетики пока решено работать посменно — половина отдела одну неделю, половина другую. На этой неделе пришла очередь сына ехать на работу.

Это очень удачно, я на сегодня запланировал апгрейд домашнего сервера, но не хотел мешать удалённой работе сына. А так и не мешал.

Десятка ставится на Debian 9 легко, я уже 2 сервера проапгрейдил. И с третьим не было никаких проблем. Больше всего времени занял fsck — он у меня запускается раз в полгода, и, как в одном неприличном анекдоте, сегодня как раз тот день! 40 минут пришлось ждать. :-D

Я отказался от автоматического запуска screen, откатил .profile к предыдущему состоянию. Вместо этого запускаю screen из менюшек fvwm:

unicode-rxvt -e ssh -4 -t remote_host exec screen -xRR -S default

Обнаружил, что я очень быстро перестроился запускать новые окна в screen, а не новые терминалы. Из этого я делаю вывод, что screen — это правильный способ работы.

Upd. Опаньки — кросс-пост из DW в ЖЖ произошёл мгновенно! Починилось!
phd_ru: (Default)
Я дозрел, наконец, начать запускать screen автоматом на удалённых серверах (пока сам, без сына). Начал отсюда, благо там эта проблема уже разжёвана. И быстро наткнулся, что тамошнее решение мне надо допиливать в самую неожиданную сторону.

Тут же выяснилось, что fix_ssh_auth_sock мне не нужен совсем, у меня этот сокет и так зафиксирован, благо я пользуюсь не ssh-agent, а gpg-agent, и сокет у меня ~/.gnupg/S.gpg-agent.ssh.

Далее, if [ -n "$SSH_CONNECTION" ]; then exec screen -xRR; fi. Проблема оказалась в том, что bash выполняет .profile и в интерактивном, и в неинтерактивном шеллах, а в неинтерактивном screen совсем не нужен. Например, в ssh -t host command, или когда ssh используется как транспорт для git или rsync. Пришлось добавить в .profile проверки на интерактивность. В результате хвост моего .profile стал выглядеть так:

# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return ;;
esac

# Stop if non-interactive shell
[ -z "$PS1" ] && return

if [ -n "$SSH_CONNECTION" -a -z "$STY" -a -t 0 ] &&
   which screen >/dev/null 2>&1
then
   exec screen -xRR -S default
fi

Полностью можно посмотреть в https://phdru.name/Software/dotfiles/ и https://git.phdru.name/dotfiles.git/

Upd. Я вернул прежний .profile, т.е. удалил запуск screen. Вместо этого я делаю запуск screen вместе с терминалом и ssh:

rxvt-unicode -e ssh -t remote_host exec screen -xRR -S default

X-Post: ЖЖ

SERVFAIL

Jun. 8th, 2017 09:48 am
phd_ru: (Default)
Не пойму, в чём проблема:
# host ru.pool.ntp.org
Host ru.pool.ntp.org not found: 2(SERVFAIL)

# /etc/init.d/bind9 reload 
[ ok ] Reloading domain name service...: bind9.

# host ru.pool.ntp.org
ru.pool.ntp.org has address 85.21.78.23
ru.pool.ntp.org has address 46.254.216.9
ru.pool.ntp.org has address 85.21.78.91
ru.pool.ntp.org has address 46.254.216.12

И ведь регулярная проблема. Как бы её вылечить?

AzureBSD

Jun. 9th, 2016 10:52 pm
phd_ru: (Default)
Вот был PC DOS, и M$ DOS. FreeBSD и… опаньки, M$ FreeBSD :-D Адаптированный для Azure.

Найдено на /.
phd_ru: (Linux)
По мотивам обсуждения у Витуса — кто может внятно рассказать, чем bmake отличается/лучше/хуже gmake? Маны я прочёл.

PS. BSDатый make против GNUсного…

Upd. Вот, нашёл кой-какие сравнения:
nmake-vs-gmake

bmake-vs-gmake

Плюс в bmake есть мета-режим: bmake умеет строить зависимости, запуская компилятор и отслеживая с помощью file monitor в ядре, какие файлы компилятор читал. Аналогичную штуку умеет делать fabricate.py либо мониторя atime, либо с помощью, естественно, strace (fabricate.py для Py3).
phd_ru: (Linux)
Двадцать лет тому назад Тео окончательно выперли из NetBSD. Long live OpenBSD!

Найдено в LWN.
phd_ru: (Linux)
Я обычно пользуюсь xterm'ом (точнее, urxvt) со светло-серым фоном. Но по разным причинам я время от времени запускаю терминал с чёрным фоном — и на локальной машине, и для хождения на некоторые удалённые. И на чёрном фоне очень неудобно читать man. Пришлось пойти в ИНет, найти, что и как настроить. И настроить по своему вкусу.
phd_ru: (Python)
Ковыряешь, бывало, землю грязными лапками, и тут сверкнёт прямо в глаз — перл! (В данном конкретном случае, скорее, питон.)

В 1986 Гвидо ван Россум написал библиотеку glob для BSD UNIX.

Найдено в wiki.

U, EFI

Feb. 7th, 2014 05:40 pm
phd_ru: (Linux)
Что такое UEFI и как с ним бороться: https://www.happyassassin.net/2014/01/25/uefi-boot-how-does-that-actually-work-then/

Удивительная подробная статья. Я там не со всем согласен. Особенно с «broad consensus specification … is no one company’s Evil Vehicle Of Evilness.» Ещё какой ивил виикл. Но технические подробности хороши.

И в догонку: http://blog.uncooperative.org/blog/2014/02/06/the-efi-system-partition/

Найдено в Linux Weekly News.

umask 077

Jan. 19th, 2014 06:58 pm
phd_ru: (Linux)
Текст для опытных пользователей Unix, остальным будет непонятно и неинтересно.

Когда я только начинал работать в Unix и создавал свой первый .profile, я задумался о umask и решил, что маска 022 будет слишком открытой, а 077 - слишком ограниченной. Я выбрал компромисс - umask 027 - и много лет с ним жил.

И каждые несколько месяцев задумывался, не пора ли всё-так сделать маску 077 (сделать umask 022 мне с тех пор ни разу в голову не приходило, разве что в скриптах, с помощью которых я публикую информацию).

И вот сегодня я, наконец, окончательно решил, что 027 - компромисс совершенно бессмысленный, и что с самого начала весь выбор был между 022 и 077

Так что я вписал в .profile umask 077 и запустил
chmod -R go= . && chmod -R go+rX public_html

git commit

Nov. 27th, 2013 10:00 am
phd_ru: (Linux)
А тут как раз xkcd подоспел! :-D

April 2025

S M T W T F S
  123 45
6789101112
1314 15 16 1718 19
20212223242526
27282930   

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Apr. 23rd, 2025 12:38 pm
Powered by Dreamwidth Studios