bash.im ithappens.me zadolba.li

Факапы

11452

Не возгордись, человече

Давненько уже пробавляюсь фрилансом: тут тебе и админинг, и программирование в самых непредсказуемых сочетаниях. Сегодня утром стал копировать на удалённый хост образ виртуальной машины. Поскольку файл большой, решил почитать пока IT happens.

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

Кто-то гордится тем, что запустил у себя дома четыре виртуальные машины? Да я со счёту сбился, сколько их у меня, причём в самых разных уголках земного шара!

У кого-то нестабильно работает D-девайс? Да мой пашет уже года три и обслуживает несколько компьютеров и мобильных устройств без малейших нареканий!

Жалкие людишки!.. Но что это? Перестала скроллиться вниз лента IT happens в feedly. Пропало соединение с интернетом. Как? Почему?! А, ну да: супруга делает уборку и выключила в кладовке вместо холодильника удлинитель, ведущий на антресоли к IT-оборудованию. Погасли лампочки «неубиваемой» D-железки, остановились хвалёные виртуальные машины и процессы стоимостью в «миллионы долларов».

Не возгордись, человече.

11447

Не вреден север для меня

Первый мой опыт удалённого апгрейда маршрутизаторов «АСС» (в 1994 году) выглядел так:

— Ну, с богом! (Жму на Enter.)

Через 15 минут:

— Всё…

— Готово? — уточняет заказчик.

— Нет. Пошли за билетами в Апатиты.

Не так уж всё плохо оказалось в Апатитах. И филиал Академии наук был, и люди попались хорошие, а ротвейлер у них — так просто душка. Правда, пивом отравился — видимо, несвежее было.

11421

На костылях к звёздам

Одна из вещей, за которые мне нравится IT, это парадоксы. Я столько раз видел парадоксальнейшие по своей природе вещи и всё ещё не перестаю ими наслаждаться. Чаще всего поражают костыли в дорогих коммерческих решениях, которые смотрятся как сверкающий, высокотехнологичный звездолёт, к которому приставлены прогнившие деревянные балки, примотанные для крепости капроновой нитью. Об одном из таких, виденных пару лет назад, уже можно рассказать — эта линейка продуктов уходит в прошлое.

Итак, крупный вендор сетевого оборудования с хвойным кустарником в названии в процессе слияний и поглощений обзавёлся весьма недурственной операционкой, на которой выпускал несколько линеек файрволов (сейчас эту ОС прикрыли), аппаратных VPN и ещё кое-чего. Мы тогда использовали один из их агрегатов для предоставления VPN-доступа подрядчикам и айтишникам во внутреннюю сеть и завели на девайсе внутреннюю базу аккаунтов.

Народу, который пользовался VPN, было немного, поэтому веселье обнаружилось не сразу, только когда у одного из подрядчиков появилась просьба сбросить пароль, и я полез это делать. Я на работе использовал браузер имени малой панды и среди дополнений держал Unhide Passwords, убирающее звёздочки с паролей при определённых действиях: очень удобно, если за плечом никто не стоит. И вот, ткнув в поле пароля, я не увидел ожидаемой пустоты. С выползающими глазами проверил свою учётку и увидел знакомый набор букв и цифр. Залез в учётку старшего админа и поинтересовался у него:

— А у тебя пароль начинается с [двух букв]?

Пока он подбирал челюсть с пола, уточнил:

— А заканчивается на [ещё две буквы]?

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

Разве после таких вещей можно не влюбиться в это минное поле, так часто предлагающее тебе неожиданные задачи и задающее тебе парадоксальные вопросы, про которые мой знакомый опытный программист говорил: «У любой задачи программирования есть не менее чем два решения, одно из которых — правильное, другое — нет, но они оба работают»?

11406

Я тебя породил — я тебя не убью

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

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

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

Сейчас приделывал ещё один процесс к тем двум, и понадобилось мне вывести окошко с сообщением. И что оказалось: окошко-то выводится, но поскольку процесс-то консольный, то окошко не кликабельное, сидит поверх всех и закрыть-убрать себя не даёт. Получился винлокер.

«Не страшно, — думаю. — Ctrl+Alt+Del я-то не заблокировал». Хотя были мысли и эту комбинацию заблокировать, так как не завершать работу аварийно, когда им что-то непонятно, я так и не научил.

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

Сижу, смотрю на эту пляску помеси Скайнета и Франкенштейна и не знаю, что делать: то ли гордиться, какой я крутой программер, то ли стыдиться. Наверно, сейчас допишу отдельную программу, которая каждую миллисекунду будет убивать все три процесса, так как, думаю, это не последний раз так хороводит. Боюсь только, что эта программа тоже на их сторону перейдёт.

11399

Пятница, двести пятьдесят шестое

Вчера в одном из отделов потёк кондиционер и залил системный блок одного из сотрудников.

Через пять минут в другом отделе пользователь удачно выпил кофе. Результат был тот же, что и с кондиционером.

Через десять минут вырубилось электричество во всём здании, резервный генератор не запустился вовремя, и потухли все сервера и компьютеры. В последний момент жизни разряжающегося UPS под его душераздирающий визг я заметил, что загнулся один из винтов на сервере. Отправили курьера на склад — курьер застрял в пробке.

Через двадцать минут накрылась система видеонаблюдения.

К полудню всё восстановили, починили, настроили. Сел пить чай и писать сюда.

Эту пятницу, 13-е, я запомню надолго.

11377

Норматив КМС по стрельбе в ногу

Есть такая софтина для управления конфигурациями по имени Puppet. Он умеет стягивать конфиги, скрипты, расписания и многое другое с центрального сервера. В общем, удобно — можно управлять кучей серверов из одной точки.

Так вот, этот Паппет запускается у меня по расписанию, раз в N минут. И всё бы хорошо, но иногда клиентский процесс подвисает, и нужно его ручками прибить и запустить заново. Надоело. За минуту написал скрипт-костыль, который делает ps ax | grep puppet | awk '{print $1}' | xargs kill, то есть ищет запущенные процессы, которые содержат puppet в имени, и их убивает в расчёте на то, что если с предыдущего запуска процесс продолжает выполняться, то он висит. Потом этот же скрипт запускает агентский процесс заново.

Проверяю — работает. Отлично. Через тот же Паппет меняю в кроне запуск самого Паппета на запуск этого костыля, он разъезжается по всем серверам — и…

И понимаю, что скрипт я, естественно, назвал puppet_launcher. Он послушно находит себя в списке процессов, так как содержит слово puppet в имени, и убивается, так и не запустив непосредственно агента.

Дальше — руками по всем серверам…

11374

Гори оно всё

Лет семь назад появился у меня первый компьютер. Умудрился я вывести из строя DVD-привод — системой не виделся, при установке диска последний делал четверть оборота и останавливался. Интернет-провайдеры у нас только начали появляться, и без компактов было грустно.

Решил я драйв восстановить. Разобрал, прочистил, перебрал, собрал. Решил запустить без нижней крышки, перевернув кверху брюхом. За мгновение перед нажатием кнопки запуска компьютера в поле зрения попал криво установленный шлейф, идущий к передней панели привода. Глаз уставился на маленькую детальку возле разъёма питания, которая в следующий миг — пшшшик! — ярко сверкнула и испарилась в клубе дыма. Естественно, комп был обесточен, привод осмотрен, шлейф поправлен. С мыслью о том, что приводу конец, я запустил комп. Движение головки, звук раскручиваемого диска — и винда спросила меня, как проиграть диск.

Привод до сих про действует, правда, уже не в моём компе.

11363

Да будет свет, или После Большого взрыва

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

В общем, источник питания я сделал на макете, отладил, настроил — работало всё просто прекрасно. Делаю плату, монтирую всё на ней, запускаю — не работает. Начинаю тыкать осциллографом по схеме в поисках проблемы. Ткнул — и коротнул что-то. А на плате было порядочно танталовых конденсаторов — чтобы импульсные помехи не гуляли по земле и питанию, ёмкость между ними была распределена равномерно. Десятка два мелких оранжевых кирпичиков.

Так вот, коротнул я что-то — и оглох сразу. Вся куча конденсаторов рванула, закоптив всё вокруг и заполнив комнату характерным запахом. Я поднял глаза — и увидел красный зайчик на стене. Лазер работал.

Секрет фокуса был, конечно же, в ошибке разводки платы.

11359

До аппетитной корочки

Сдохла у меня звуковуха. Эффектно, с треском в ушах и горячим ребутом. Решил на замену купить такую же дешёвую от C-Media (правильно говорят: скупой платит дважды). Новая продержалась две недели и так же красиво умерла. Ну что ж, сплавил по гарантии и пригорюнился: в Doom 3 особо не поиграешь без звука, Ютюб туда же… Пока ждал решения, вспомнил, что платы можно как-то прогревать, и они вновь оживают. Вот только как — без малейшего понятия. Искать инфу было дико лень, и я поступил проще. Духовка на 320 градусов, плату внутрь… Сколько держать? А чёрт его знает!

От чтения Баша меня оторвал щелчок, как от взрыва попкорна. Вспомнил про духовку, открываю — и вижу ровный слой черной пыли, покрывающий её внутренности. Один из кондёров не выдержал температуры и все-таки взорвался. Хана, думаю, убил плату. Но — чем чёрт не шутит? — в последний раз воткнул. Включаю… Диспетчер устройств? Есть. Звук в наушниках? Есть. Запись с микрофона? Есть. А в голове один вопрос: к-как? Или конденсатор был лишний, или… На этом мысль останавливается.