Меньше, но больше, а главное, быстрее
Oct. 30th, 2023 12:53 pmКоллеги, кто-нибудь знает, как заставить листалку
Upd. Перепробовал много вариантов, найденных в Сети: Ctrl-C, Esc+G, редиреект во временный файл и
X-Post в ЖЖ.
less
реагировать на команды, пока она читает stdin? Она не реагирует, пока не прочитает полный первый экран, и только потом можно прокручивать и искать. И то, если крутануть слишком далеко вниз, less
покажет всё, что успел к этому времени прочесть, и снова зависнет — будет читать до конца следующего экрана. В доках и поиске ничего не нашёл.Upd. Перепробовал много вариантов, найденных в Сети: Ctrl-C, Esc+G, редиреект во временный файл и
less +F файл.tmp
. Ни один вариант не удовлетворил, вариант Esc+G (обращаю внимание — там G, т.е. Shift-g а не g) наименее неудобный. Главное, помнить, что нельзя наживать F, G или >.X-Post в ЖЖ.
Duplicate address assigned to wg0
Aug. 4th, 2022 03:00 amВопрос к понимающим в программах
Поднимаю:
Действительно, интерфейсу присвоено 2 адреса:
Мнэ… Зачем, почему, как исправить? Убрать
За исключением ошибки в выводе всё работает, так что это скорее предупреждение, не ошибка. Но хочется и её исправить.
Вместо
И тогда всё хорошо:
Но это какой-то … если не хак, то обходной путь, не решение, мне не нравится.
X-Post в ЖЖ.
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 в ЖЖ.
bdash (бдыщь!)
May. 1st, 2022 03:25 amКоллеги, кто объяснит разницу:
Ну т.е. понятно, что это
На одном рабочем сервере я заметил, что
Upd. Вот так:
Upd2. Сломался ещё один скрипт. В
X-Post в ЖЖ.
$ 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 в ЖЖ.
Про ошибку
Ну вот в копилку к будущему переизданию Unix Haters Handbook:
https://stackoverflow.com/q/70081221/7976758
Удалило у пользователя нахрен всё. А ведь всего одно тире пропущено.
PS. Ну и отладиться забыл без
PS2. И резервных копий, небось, нет.
rm * .o
все коллеги знают?Ну вот в копилку к будущему переизданию Unix Haters Handbook:
https://stackoverflow.com/q/70081221/7976758
find . name '.DS_Store' -type f -delete
Удалило у пользователя нахрен всё. А ведь всего одно тире пропущено.
PS. Ну и отладиться забыл без
-delete
.PS2. И резервных копий, небось, нет.
OpenVPN: push DNS address
Oct. 25th, 2021 11:38 pmВопрос к залу: у меня на одном из серверов OpenVPN есть настройка
Я не хочу отправлять внешний адрес, потому что
Внимание, вопрос: как послать клиенту динамический внутренний адрес, который возникает в тот момент, когда его выделяет из пула сервер OpenVPN? Пока ничего в голову не приходит. Разве что вообще не делать
Upd. Или дать этому сервер искусственный внутренний адрес, только для DNS? Это кажется некрасивым, но наиболее простым.
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? Это кажется некрасивым, но наиболее простым.
Закрыть OpenVPN
Aug. 20th, 2020 11:50 pmЗахотел избавиться от устаревшей настройки
Теперь думаю, что все Issuer/Subject можно было сделать красивее. Потом пересоздам все сертификаты, но сейчас это не срочно, есть задачи поважнее. Нужно обновить сертификаты на почтовых серверах. И нужно переписать сетевые экраны на NetFilter.
Ещё нужно придумать скрипты OpenVPN для проверки клиентских сертификатов.
ns-cert-type
в OpenVPN и заменить её на remote-cert-tls
. Заодно научился пользоваться Easy RSA 3.0; с версии 2.0 там очень много изменений, особенно в файле конфигурации vars
, его пришлось переписать целиком.Теперь думаю, что все Issuer/Subject можно было сделать красивее. Потом пересоздам все сертификаты, но сейчас это не срочно, есть задачи поважнее. Нужно обновить сертификаты на почтовых серверах. И нужно переписать сетевые экраны на NetFilter.
Ещё нужно придумать скрипты OpenVPN для проверки клиентских сертификатов.
screen+vim: which wrap
Jul. 8th, 2020 05:08 pmУ меня в
Сегодня у меня день посвободнее, взялся поискать причину. Нашёл.
Пришлось добавить микро-плагин для исправления. :-(
X-Post в ЖЖ.
vim
опция whichwrap
выставлена на максимум: set whichwrap=b,s,h,l,<,>,[,],~
. Много лет всё работало прекрасно, и вдруг сломалось. Стрелки влево/вправо перестали перескакивать на пред/след строки.Сегодня у меня день посвободнее, взялся поискать причину. Нашёл.
vim
запущенный под screen
ресетит эту опцию в set whichwrap=b,s
. Сам vim
, нигде ни в /usr/share/vim
ни в ~/.vim/
ничего нет.Пришлось добавить микро-плагин для исправления. :-(
X-Post в ЖЖ.
Майские праздники прошли, наш медицинский центр открылся. В отделе генетики пока решено работать посменно — половина отдела одну неделю, половина другую. На этой неделе пришла очередь сына ехать на работу.
Это очень удачно, я на сегодня запланировал апгрейд домашнего сервера, но не хотел мешать удалённой работе сына. А так и не мешал.
Десятка ставится на Debian 9 легко, я уже 2 сервера проапгрейдил. И с третьим не было никаких проблем. Больше всего времени занял
Я отказался от автоматического запуска
Обнаружил, что я очень быстро перестроился запускать новые окна в
Upd. Опаньки — кросс-пост из DW в ЖЖ произошёл мгновенно! Починилось!
Это очень удачно, я на сегодня запланировал апгрейд домашнего сервера, но не хотел мешать удалённой работе сына. А так и не мешал.
Десятка ставится на 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 в ЖЖ произошёл мгновенно! Починилось!
Я дозрел, наконец, начать запускать
Тут же выяснилось, что
Далее,
Полностью можно посмотреть в https://phdru.name/Software/dotfiles/ и https://git.phdru.name/dotfiles.git/
Upd. Я вернул прежний
X-Post: ЖЖ
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: ЖЖ
Не пойму, в чём проблема:
И ведь регулярная проблема. Как бы её вылечить?
# 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
И ведь регулярная проблема. Как бы её вылечить?
BSDшный make супротив GNUшного
Feb. 28th, 2016 12:20 amПо мотивам обсуждения у Витуса — кто может внятно рассказать, чем bmake отличается/лучше/хуже gmake? Маны я прочёл.
PS. BSDатый make против GNUсного…
Upd. Вот, нашёл кой-какие сравнения:
nmake-vs-gmake
bmake-vs-gmake
Плюс в bmake есть мета-режим: bmake умеет строить зависимости, запуская компилятор и отслеживая с помощью file monitor в ядре, какие файлы компилятор читал. Аналогичную штуку умеет делать fabricate.py либо мониторя atime, либо с помощью, естественно, strace (fabricate.py для Py3).
PS. BSDатый make против GNUсного…
Upd. Вот, нашёл кой-какие сравнения:
nmake-vs-gmake
bmake-vs-gmake
Плюс в bmake есть мета-режим: bmake умеет строить зависимости, запуская компилятор и отслеживая с помощью file monitor в ядре, какие файлы компилятор читал. Аналогичную штуку умеет делать fabricate.py либо мониторя atime, либо с помощью, естественно, strace (fabricate.py для Py3).
Чем дальше в LESS, тем толще TERMCAP
Aug. 4th, 2014 06:40 pmЯ обычно пользуюсь xterm'ом (точнее, urxvt) со светло-серым фоном. Но по разным причинам я время от времени запускаю терминал с чёрным фоном — и на локальной машине, и для хождения на некоторые удалённые. И на чёрном фоне очень неудобно читать man. Пришлось пойти в ИНет, найти, что и как настроить. И настроить по своему вкусу.
seismo!mcvax!guido
Jun. 11th, 2014 02:28 pmКовыряешь, бывало, землю грязными лапками, и тут сверкнёт прямо в глаз — перл! (В данном конкретном случае, скорее, питон.)
В 1986 Гвидо ван Россум написал библиотеку glob для BSD UNIX.
Найдено в wiki.
В 1986 Гвидо ван Россум написал библиотеку glob для BSD UNIX.
Найдено в wiki.
Что такое 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.
Удивительная подробная статья. Я там не со всем согласен. Особенно с «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.
Текст для опытных пользователей Unix, остальным будет непонятно и неинтересно.
Когда я только начинал работать в Unix и создавал свой первый .profile, я задумался о umask и решил, что маска 022 будет слишком открытой, а 077 - слишком ограниченной. Я выбрал компромисс - umask 027 - и много лет с ним жил.
И каждые несколько месяцев задумывался, не пора ли всё-так сделать маску 077 (сделать umask 022 мне с тех пор ни разу в голову не приходило, разве что в скриптах, с помощью которых я публикую информацию).
И вот сегодня я, наконец, окончательно решил, что 027 - компромисс совершенно бессмысленный, и что с самого начала весь выбор был между 022 и 077
Так что я вписал в .profile umask 077 и запустил
Когда я только начинал работать в 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