Автодополнение имён хостов из LAN в консоли

Мне по работе часто приходится подключаться к машинам в локальной сети через SSH. Некоторые IP-адреса запоминаются, но всё же чертовки удобно, когда для такой банальной вещи, как имена локальных машин, работает автодополнение.

В принципе, имена хостов часто несложно получить с помощью Avahi (avahi-browse). Странно — думал я, — почему до сих пор никто не догадался сделать это в bash_completion?

Но оказалось, что всё гораздо хитрее. Автодополнение с помощью avahi-browse было реализовано в bash_completion, но начиная с какой-то версии было убрано из-за жалоб пользователей (действительно, когда в локалке слишком много машин, автодополнение начинает тормозить).

Это оказалось довольно легко исправить! В файле /usr/share/bash-completion/bash_completion надо раскомментировать часть функции _known_hosts_real(), отвечающую за Avahi (ищется текстовым редактором). Далее дописываем export COMP_KNOWN_HOSTS_WITH_AVAHI=1 в свой .bashrc и радуемся жизни. (Ах да, не забываем установить avahi-browse, который лежит в пакете avahi-utils в Debian).

Закрытие летнего сезона полётов

Прошедший год получился не то что бы сильно щедрым на полёты. Дождливое лето, много работы, к тому же в Долгопрудном особо негде полетать, всегда надо искать время и возможность куда-нибудь выбраться. Тем не менее, как я уже писал, мой авиамодельный парк слегка расширился, и надо это хозяйство периодически выгуливать.

С новым самолётом пришлось довольно много повозиться, прежде чем он стал уверенно вести себя в воздухе (и об этом я скоро подробно напишу). Случилось это только в начале сентября, так что активная фаза сезона оказалась неожиданно короткой.

Зато продуктивной! Самолёт успел немного полетать недалеко от Переславля-Залесского (к сожалению, та вылазка закончилась смачной «морковкой», после которой ещё неделю самолёт пришлось склеивать из кусочков), а в предпоследние выходные октября летний полётный сезон закрылся полётами над Красноармейском. Более того, в этот раз получилось закрепить на самолёте камеру, так что в этот раз у нас есть видео с борта.

Bixler: продолжаем самолётную тему

В июле я всё-таки созрел для покупки самолёта более солидных характеристик, чем мой первый пенолёт. Поскольку ещё на момент выбора самолёта тогда, три года назад, я засматривался на Bixler, в результате решил купить именно такой агрегат.

В сравнении с моим старым самолётом, у него больший размах крыльев (1500 мм против 1000), более тяговитый мотор из коробки и куча места в фюзеляже. Плюс — огромное сообщество упоротых FPV-шников, которые наделали кучу разного кастома для этого многострадального самолёта. Что с ним только не делали: нагружали аппаратурой до потери планирования, поднимали на 3 км, даже летали над Питером из Москвы. В общем, если у меня появятся какие-то странные идеи, наверняка под это уже будут готовые решения. Плюс, каждый элерон у него управляется своей сервомашинкой, что позволяет реализовать подобие закрылок для более уверенного подъёма при взлёте.

Был вариант ждать аппарат из Китая, но конкретно Bixler-ы уже мало где есть в наличии. В итоге я психанул и купил модельку на Авито. Забегая вперёд, скажу, что предыдущий владелец, на мой взгляд, перестарался с доделыванием этого самолёта. Однако, самолёт у меня в руках, а это значит, что настало время летать!

ПодробнееBixler: продолжаем самолётную тему

Делайте бекапы

Пост из разряда типовых.

«Люди делятся на две группы — на тех, кто не делает бекапы, и на тех, кто теперь делает». И опять это работает не очень долго.

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

Моему SSD в ноуте идёт четвёртый год. По SMART он вроде бы ещё огурчик и ничего с ним не происходило. Однако, пару часов назад рабочая система на ноуте на минуту подвисла, после чего отрапортовала, что что-то пошло не так и корневой раздел перемонтирован в read-only. Я быстро загрузился с live-образа убунты и начал смотреть, что к чему, убедился, что что-то на харде действительно пошло не так, прогнал fsck, починил все косяки. Однако, паранойик во мне решил, что вот уж теперь точно настал момент сделать первый бекап всего. (Всего — это слишком круто. Для начала я решил слить всё жизненно важное — конфиги, документы, проекты и портфолио). mc говорит, что на копирование уйдёт ещё минут 40. Если брать вообще все файлы из хомяка — выйдет задачка часов на 30 при условии копирования на мой домашний сервер.

Сливаю важные данные, после чего пробую вернуться в рабочую систему. Может быть, это разовый косяк по совпадению неудачных факторов. Но новый SSD, кажется, уже пора подбирать.

UPD: Действительно, SSD всё-таки стареет. Параметр SSD_Life_Left сдвинулся на один пункт ближе к печальке. В результате сбоя немного пострадал initramfs-tools, но вроде сейчас всё в норме, конфигурационные файлы восстановил из репозитория.

rssh, или Как разрешить SCP, но запретить SSH

Вполне адекватная ситуация: у вас есть удалённая Linux-машина с доступом по SSH, и вам срочно нужно дать кому-то из знакомых возможность загрузить на эту машину файл. Разумеется, нам абсолютно лениво разворачивать ради этого FTP-сервер. Да и зачем, когда есть SCP?

Вот только незадача: нам не хочется, чтобы этот знакомый имел возможность что-то делать на этой машине. Ну мало ли что. Поэтому для начала мы заводим отдельного пользователя, ставим для него домашней директорией место, куда надо залить файл, ограничиваем доступ этого пользователя к окружающим директориям. Но всё-таки этот пользователь пока имеет доступ к Shell, а нам — опытным паранойикам — это вообще не нравится.

Выход вроде как всплывает: надо заменить пользователю shell по умолчанию (/bin/sh) на что-нибудь другое. Вот только что?

Подробнееrssh, или Как разрешить SCP, но запретить SSH

Мой Linux орёт на меня! (+ решение проблемы)

Да, не самая приятная история, связанная с особенностями Pulseaudio. Но хорошо всё то, что хорошо кончается (или разрешимо для этого).

Проблема

Сижу я за работой, в фоне тихонько играет музыка. В какой-то момент отлаживаемое приложение подвисает, я пытаюсь отключить его соответствующей кнопкой окна. Разумеется, без ответа. Но кеды умные — подождут несколько секунд, а потом выплюнут окошко с вопросом «Приложение не отвечает на SIGTERM, прикончить его SIGKILL?». Окошко выплёвывается с характерным системным звуком.

И вот, кнопка завершения нажата, ждём эффекта. Тут из 40-ваттной акустики, подключенной к ноуту, раздаётся громкое «БР-Р-ЯМЦ», разрушая гармонию и покой одиночества в небольшой квартире, попутно заставив проснуться соседей. Ах да, это системный звук. С непривычки откладвается груда кирпичей, проклинается всё на свете и окошко закрывается.

Но как же так? Я же ставил Master volume в 20%, оно не могло издать такой громкий звук?

Смотрим в трей и видим, что Master volume теперь не 20%, а 100%. Чудеса!

Повторные эксперименты показывают, что Master volume действительно выкручивается в максимум в момент проигрывания системного звука.

ПодробнееМой Linux орёт на меня! (+ решение проблемы)

Toony Mugs, или Как разрисовать кружку и не сгореть от стыда

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

Для этих целей где-то месяц назад в одном крупном гипермаркете за копейки была куплена пара больших кружек «дымчатого стекла» или чего-то в этом роде. В общем, полупрозрачное коричневатое стекло. На тот момент мне показалось, что это довольно удачный вариант для раскрашивания. Однако, хоть весь материал был в наличии, идей всё ещё не было.

Очередным вечером мне вдруг надоело это бездействие. Я взял самую простую маленькую стеклянную чашку из сервиза и на ночь глядя попытался перевести на неё один из пони-артов товарища up1ter (кстати, если ты это читаешь — огромное спасибо за проделанную работу! Когда будет возможность — постараюсь подбодрить донатом :3). К сожалению, получилось так себе, но, думаю, скоро повторю попытку (фотография, тем не менее, лежит внизу).

Реакцией Богдана на эту кружку была вот эта замечательная мордаха:

В общем, глядя на это, я решил, что настал самый подходящий момент.

ПодробнееToony Mugs, или Как разрисовать кружку и не сгореть от стыда

Address Sanitizer, или Что делать, если не работает valgrind

Случилась непростая ситуация. Есть код, написанный на С, который активно используется через CGo в проекте, написанном на Go. В какой-то момент программа начала падать с ошибками от malloc: то segfault, то memory corruption.

Логичная мысль: нужен valgrind с его memcheck, чтобы проверить, кто лезет поперёк батьки в пекло в невалидную память. Однако, попытка скормить валгринду бинарник, полученный от go build, приведёт только к разочарованию — даже на простом Hello World валгринд разразится сотнями ошибок и отправит разработчика на известные координаты.

Это происходит из-за того, что go runtime довольно специфичен и неплохо отличается от такового в С. (Подробности можно спокойно нагуглить по запросу «golang valgrind»).

Так как же нам разобраться, что происходит?

ПодробнееAddress Sanitizer, или Что делать, если не работает valgrind

Winter Wrap Up

Всем доброй пятницы, друзья.

Все, кому не лень, давно трубят о наступлении календарной весны, но для меня именно это утро оказалось самым подходящим временем для того, чтобы перебрать в голове события уходящей зимы. (Тем более, что написать обо всём этом напрашивалось с самого начала, да только достаточно материала не набиралось).

Забавно, но лучший способ вспомнить всё, что происходило за последнее время — залезть в телефон и вытащить оттуда фотографии. Чем я и попробую сейчас заняться.

ПодробнееWinter Wrap Up

Пешком на работу

Такое приятное и давно забытое ощущение, когда можно утром выйти из дома и с приятной музыкой в ушах пройтись пешком до работы. Честное слово, полчаса бодрого шага по морозцу в приятный солнечный день — и уже не нужен кофе для того, чтобы окончательно проснуться. Горячий завтрак, кружка чая с лимоном, немного разминки и свежего воздуха — кажется, это всё, что нужно для того, чтобы почувствовать себя человеком утром в будний день :)


P.S. Однако, не все горожане разделяют мой энтузиазм по этому поводу — после сегодняшнего мороза многие с утра не смогли завести машины.

P.P.S. И я в том числе :) Но ещё вчера в моих планах было в первый раз пройтись утром до работы пешком.

P.P.P.S. А ещё это подарило мне ценный час времени, пока в офисе почти никого нет.