У вас есть два линукс изделия (другие тоже будут работать, но вам надо гуглить зачем) между которыми вы ходите уметь общение.
Самый простой вариант это по ip, но только один раз. Завтра изделие получит другой ip и это никак не победить.
Самый простой вариант это добавить в /etc/hosts файл алиас:
192.168.0.48 destination
А во всех скриптах использовать алиас, например:
$ scp kitty.gif user@destination:
Но ip всё равно меняется. Но менять уже в одном месте. Но менять всё же надо.
Самый просто вариант это починить это установить локальный DNS сервер на сервере и сделать его главным в сети и проксировать все запросы через него нет такого.
А ведь было бы здорово не менять это вручную да?
В 2025 году 25 лет назад придумали Multicast DNS (mDNS) который через бродкаст запросы делает динамический распределённый локальный DNS о котором не надо беспокоиться и который просто работает. Но только в одной сети. И только один хост на изделие.
В линуксе оно когда конвертирует слова-имена в цифры оно делает через сервис Name Service Switch. У этого сервиса есть /etc/nsswitch.conf где ему указано где как искать:
> cat /etc/nsswitch.conf # Name Service Switch configuration file. # See nsswitch.conf(5) for details. passwd: files systemd group: files [SUCCESS=merge] systemd shadow: files systemd gshadow: files systemd publickey: files hosts: mymachines resolve [!UNAVAIL=return] files myhostname dns networks: files
Для хостов оно говорит сначала искать в (mymachines) в локальных контейнерах.
Потом оно ищет в (systemd-resolved) dns который заменил собой nss-dns. Если DNS возвращает недоступно, то конец, не искать.
Потом смотрит в /etc/hosts, на локальный хостнейм и потом уже в легаси DNS.
Занимательный факт: мы можем добавить ещё сервис в этот лист. Что если мы добавим Multicast DNS (mDNS)?
Совершенно абсолютно очевидно что на каждом изделии мы будем делать и серверную, и клиенсткую части. Поэтому всё что ниже нужно сделать везде чтобы была гармония.
https://wiki.archlinux.org/title/Avahi
Устанавливаем пакет libnss-mdns в котором будет avahi (мы добавим в NSS hosts как сервис):
# pacman -Sy nss-mdns # emerge -av sys-auth/nss-mdns # sudo apt-get install libnss-mdns avahi-daemon avahi-utils
Дальше добавим /etc/nsswitch.conf строку mdns_minimal [NOTFOUND=return]:
# hosts: mymachines resolve [!UNAVAIL=return] files myhostname dns hosts: mymachines mdns_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] files myhostname dns # hosts: mymachines mdns_minimal resolve [!UNAVAIL=return] files myhostname dns
[NOTFOUND=return] говорит не искать дальше домены *.local, это сломает (вероятно) локальные записи в /etc/hosts поэтому можно удалить чтобы работало как раньше, но лучше.
Ещё можно перехватывать на только *.local домены, но нам это не нужно. Для этого мы будем использовать /etc/hosts
Устанавливаем наш локальный домен в файле /etc/avahi/avahi-daemon.conf и перезапускаем и проверяем:
$ cat /etc/avahi/avahi-daemon.conf | grep host-name host-name=source $ systemctl enable avahi-daemon.service # add to autorun $ systemctl restart avahi-daemon.service # run $ avahi-browse --all --verbose --resolve --terminate $ avahi-resolve-host-name source.local source.local 192.168.100.101 $ ping source.local PING source.local 56 data bytes 64 bytes from source.local : icmp_seq=1 ttl=64 time=0.031 ms 64 bytes from source.local : icmp_seq=2 ttl=64 time=0.067 ms 64 bytes from source.local : icmp_seq=3 ttl=64 time=0.056 ms ^C
Проблема в том что у нас может быть 1 хост на одно изделие. Если вы хотите поднимать несколько разных локальных доменов например:
git.local server.local
То это можно легко сделать через /etc/avahi/hosts, но там тоже надо хардкодить ip.
Самый простой способ это починить это при поднятии сети запускать несколько раз а никак живите с одним доменом всё лучше чем ничего.avahi-publish & на каждый домен каждый раз вычисляя динамически локальный ip
$ cp /usr/share/doc/avahi/sftp-ssh.service /etc/avahi/services/ $ cp /usr/share/doc/avahi/ssh.service /etc/avahi/services/ $ systemctl restart avahi-daemon.service
Быстренько повторяем всё что сверху на втором изделии, потом ищем их друг у друга проверяем что всё работает. Настраиваем ssh подключение по ip между двумя изделиями. Потом в ssh просто меняем ip на локальный домен:
$ ssh my_user@destination.local -i ~/.ssh/my_key
Когда всё работает мы добавляем ~/.ssh/config эти волшебные слова:
Host destination
HostName destination.local
IdentityFile ~/.ssh/my_key
User my_user
Магическим образом был создан короткий алиас для ssh в котором всё настроено:
$ ssh destination
Ну вот и всё, теперь мы можем легко обмениваться файлами и удалённо запускать команды:
$ cd /tmp/ $ date > temp_file $ echo "source" >> temp_file $ scp temp_file destination: $ ssh destination 'echo destination >> ~/temp_file' $ ssh destination 'cat ~/temp_file'
Уру-ру-ру, мы можем посылать файлы и удалённо выполнять команды. А главное теперь есть домены не привязанные к ip!
Главный для меня минус в том что нельзя просто сделать несколько доменов на много сервисов на одном изделии, но с этим можно жить!
Зато таким же образом можно сделать и NFS, и rsync, и git!!!
А ещё mDNS используется в IoT и прочих home assistant сетей!
#linux #multicastdns #mdns #dns #howto #man
2025.09.28 01:53
Больше всего в фильмах про успешное будущее мне непонятно отсутствие камер.
Вот человечество каким-то образом смогло не умереть и добралось до небес других планет. На Земле всё замечательно и сплошной киберпанк, но внезапно в каком-нибудь переулке внезапно нет камер. Или в техническом тоннеле космического корабля нет камер и ИИ не знает где что происходит.
Как это вообще возможно? Уже сейчас плохой модуль камеры стоит меньше доллара. Ну да, его нужно ещё как-то обрабатывать и хранить, но если посмотреть что сейчас могут делать SoC (system on the chip) и что они могли делать 20 лет назад, то мне совершенно очевидно что через 100 лет камеры будут автоматически интегрированы в краску, не то что в системы видеонаблюдения.
В успешном будущем всё происходящее будет постоянно записываться из ста тысяч точек, сохраняться и анализироваться. Уже сейчас нельзя пройти по городу не попавшись на 20 камер в каждую секунду. Уже наконец-то придумали очки с дисплеями в которых есть камера и которые наконец-то работают. Батарейка слабенькая и работать только начали, но что будет через 100 лет даже странно представить.
Просто писателям лень писать захватывающие сценарии когда всё записывается только потому что их писательские мозги ничего не могут придумать и им приходится делать человечество в будущем примитивным просто чтобы они могли написать хоть что-то.
2025.09.22 12:30
В какой-то мне показалось что худшим поступком моей жизни было взять этот прекрасный d40

И достать из него ИК фильтр ведь это совершенно сломало цвета

А теперь мне ещё больше нравится и совсем не хочется иметь снова нормальный сенсор

Потому что очень нравится сравнивать (очень нравится что иголковые и плосколистовые деревья по-разному отсвечивают в ИК диапазоне)

И вообще примесь ИК очень радует. Да и к тому же всегда можно просто прикрутить ИК фильтр сверху, но не хочется.
(Но немножко хочется полноспектровую беззеркалку чтобы можно было не целиться вслепую (но фильтр на магните почти решает эту проблему))
#photocard #photodump #fullspectrum #ir
2025.09.15 00:20
Если в Финляндии закончить PhD, то дают настоящий меч.
М – Мотивация.
2025.09.05 01:04
А что если изменить имя официально на “микропластик” и подавать в суд на все ресурсы которые будут обвинять меня в загрязнении океана?!?!?!?!
2025.05.29 19:09
Дорогой читатель, а вот если бы завтра искусственная гравитация стала бы нормой. Ну типа мы могли бы в любой комнате сделать отсутствие гравитации или сделать её 3x, то как вы думаете, стали бы люди этим злоупотреблять?
Мне бы, например, хотелось попробовать спать в 2x гравитации — это же никакое тяжёлое одеяло не нужно и такая лёгкость будет на улице! Спят же люди в барокамерах.
2025.05.17 16:50
У меня для вас есть немного очень важного исследования, усаживайтесь в своих космо-креслах поудобнее и представьте что вам этот пост читает электронный голос немного похож на настоящий.
Оказывается, есть такой жанр фантастики как HFY что означает Humans Fuck Yeah: сначала всё было не очень, но пришли люди и всё починили, потому что люди невероятно непредсказуемые, смышлёные, добрые и замечательные существа и вообще нет ничего лучше людей которые всегда готовы прийти на помощь глупым бесполезным альенам с 50к лет космических путешествий.
Особенно потрясающе как люди (нормальные, современные, не вымышленные) этот жанр сейчас на ютубе эксплуатируют. Не то чтобы только этот, в целом всякие более другие истории тоже, но тут прям особенно хорошо.
Вы же знаете что на ютубах сейчас тысячи миллионов видео где показывают текст какого-нибудь поста с реддита/четыречана и его читает электронный голос и это очень увлекательно и невозможно это не смотреть (нет).
С HFY немного интереснее, потому что суть в целом та же, но только сами истории придумывает AI, читает их AI и картинки тоже придумывает AI. 300% сгенерированный контент загружаемый на сетки ютуб-каналов, с абсолютно одинаковыми ограниченными вариантами сюжетов. Некоторые каналы стараются чуть-чуть побольше, некоторые чуть-чуть поменьше. Где-то роботы получше, где-то картинки более лучше соответствуют тексту. На каком-то канале был даже звук неотбалансирован в одном ухе слышно сильно лучше чем в другом. Как? А я не знаю и это потрясающе!
Очень мне также нравятся их простыни сгенерированных кейвордов не совсем понятно зачем добавленных, но это сильно добавляет уникальности контента конечно же:
Tags:
Humanity, Fuck Yeah! HFY Stories, Short story for sleep, fantasy sleep story HFY,HFY Story,HFY Short Story,HFY War,Science Fiction, Sci-Fi Story, Sci-Fi Short Story, Sci-fi HFY, Humans are Space Orcs, Reddit HFY Stories, Reddit Stories, Reddit Humans are Space Orcs, Reddit Sci-Fi Stories, HFY Stories, Short story for sleep, fantasy sleep storyKeywords: hfy, military scifi, space opera, alien invasion, quantum warfare, humanity fuck yeah, space battle, military strategy, war story, humans vs aliens, space warfare, galactic conquest Sci-Fi Universe, SciFi, Science Fiction, SCI-FI STORY, ALIENS, hfy stories, HFY, hfy, the best of hfy, alien story, sci fi, space horror stories, science fiction, Sci-Fi Mystery, Human Peace, Galactic Federation, Interstellar Diplomacy, Peaceful Humans, Terran Union, Epic Sci-Fi, Space Exploration, Alien Civilizations, Avoiding War, High Fantasy Sci-Fi, Stellar Narratives, Galactic Politics, Peace Strategies, Sci-Fi Chronicles, Subscribe Now hfy,humanity fuck yeah,sci fi,science fiction,military sci fi,space opera,alien invasion,space battle,quantum warfare,military strategy,war story,space combat,humans are space orcs,earth vs aliens,humanity wins,advanced technology,galactic warfare,space military,epic space battles,humans are awesome,humans are warriors,deception warfare,military deception,space marines,alien empire,advanced warfare,tactical warfare,space warfare
Потрясающе в этом то что оно вот существует сейчас. Через год это уже будет неактуально: или ютуб это как-то победит, или AI это как-то победит, или ещё что-нибудь произойдет, но пока что в ютуб заливают тысячи сгенерированных контентов в надежде что каждый ролик посмотрят хотя бы тысячу раз и в сумме это принесёт успех создателям. Или вы оформите мембершип чтобы смотреть сгенерированный контент чуть-чуть раньше чем если бы подождали.
Немножко примеров:
Вот подписавшись на этот канал (и оформив платное членство) вы можете получать по 10+ часов одинакового контента в день:

На этот канале вы получаете поток совершенно уникальных историй про “Альеновский профессор поставил задачу Х, все умерли, а хуман изобрел изобретение и все в шоке”

Тут уже несколько циркулирующих сюжетов, сплошное уникальное разнообразие (нет):

И последний канал самый интересных из всех. Тут живые чтецы (не только тут, но тут комманда) и чтобы вы не подумали что это вам читает робот — первые пару минут каждого ролика вам показывают человека который читает этот сгенерированный текст и только потом показывают сгенерированные картинки. Тут хотя бы можно понять почему членство стоит денег, но всё равно потрясающе. Есть даже циклы историй с новыми сериями раз в какое-то время:

Просто потрясающе. Очень рекомендую ознакомиться с этим явлением — оно только появилось и уже совсем скоро исчезнет, превратится в какой-нибудь life-сервис наподобие онлайн-радио или я не знаю у меня не хватает фантазии надо спросить в AI что там будет им виднее что там в будущем они же будущее!
2025.04.11 01:11
Невероятно, но египтяне пользовались картиночками до того как это стало мейнстримом. Даже целый блок в уникоде под это выделили!
И не то чтобы у них это плохо получалось, вот например:
| 𓆏 | 🐸 |
У них даже была картиночка для сегвея!
| 𓌝 |
Начинаю смотреть на современность немного разочарованно.
2025.03.30 15:51
Очень нужно сильно захотелось написать простой маленький консольный бинарничичек. Конечно же не на пхп ведь мы же не монстры, правда?
Немедленно открываем документацию к racket чтобы узнать как это делать:
(command-line optional-name-expr optional-argv-expr
flag-clause ...
finish-clause)
optional-name-expr =
| #:program name-expr
optional-argv-expr =
| #:argv argv-expr
flag-clause = #:multi flag-spec ...
| #:once-each flag-spec ...
| #:once-any flag-spec ...
| #:final flag-spec ...
| #:usage-help string ...
| #:help-labels string ...
| #:ps string ...
flag-spec = (flags id ... help-spec body ...+)
| (flags => handler-expr help-expr)
flags = flag-string
| (flag-string ...+)
help-spec = string
| (string-expr ...+)
finish-clause =
| #:args arg-formals body ...+
| #:handlers handlers-exprs
arg-formals = rest-id
| (arg ...)
| (arg ...+ . rest-id)
arg = id
| [id default-expr]
handlers-exprs = finish-expr arg-strings-expr
| finish-expr arg-strings-expr help-expr
| finish-expr arg-strings-expr help-expr
unknown-expr
Пожалукйста, потратьте минутку и насладитесь этим шедевром форматирования.
Спасибо, больше не надо этого делать. Если вы не поняли как это работает, то вот вам настоящий пример от человека который понял:
(define parser
(command-line
#:usage-help
"Here you can write a general description of your program"
"You can have multiple strings to make multiple lines"
#:once-each
[("-m" "--my-parameter") MY-PARAMETER-NAME
"write a short description of what setting MY-PARAMETER-NAME does"
(my-parameter (string->number MY-PARAMETER-NAME))]
[("-a" "--another-parameter") ANOTHER-PARAM
"a little description of ANOTHER-PARAM"
(another-parameter (string=? "true" ANOTHER-PARAM))]
[("-s" "--string") A-STRING
"what is A-STRING?"
(a-string A-STRING)]
#:args () (void)))
Очень мне нравится как в они в этом racket’е любят использовать магические строки типа #:once-each которые непонятно что делают и никак не автодополняются официальной IDE.
Очень, очень захватывающе. Пожалуй, на этом с racket я закончу.
2025.01.26 14:54
Мэтт написал, что приветствует создание форка, и заблокировал учётные записи, чтобы дать им необходимый толчок для старта и стимулировать переход от слов к делу.
🤌
2025.01.12 14:39