ImpERROR's VeloCiRaptor - LiLO

Возвращение

«Ну, что же», — промолвил Лило, изящно подкручивая один из пяти слоёв на кубике рубика, — «значит так оно сейчас выглядит спустя многие годы».

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

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

Через окна аудитории валит свет, пыль мирно плывёт в лучах солнца.

«Там моё небо, за окнами, я им восхищался». Лило сделал паузу.

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

Полистав ключи с аватарами, Лило выбрал тот, что с динозавром и вставил его в замочную скважину проектора. Проектор негромко загудел вентилятором, яркие лучи направились на стену, высвечивая надпись «Возвращение»


  • Current Music
    Futura - NY Party Gazgolder 01.01.2021
ImpERROR's VeloCiRaptor - LiLO

Определение затрат ресурсов в cron

Понадобилось мне как-то узнать потребление ресурсов и длительность по времени каждого задания в планировщике cron.

Стандартного решения я не нашёл. Увеличение уровня журналирования демона не помогло. Я смог выяснять только когда задача завершалась и вычислять время задачи на лету становилось затруднительно.

Для помощи я обратился к утилите time, которая позволяет узнать время работы процесса и некоторые ресурсы, которые процесс потребовал для работы (такие как память, количество ЦПУ, нагрузку на диск и сеть).
Если честно, то характеристики нагрузки на диск и сеть несколько неверны, так как показывают только цифры для родительского процесса, без суммы ресурсов по всем дочерним.

Затем, я начал писать скрипт-обёртку для заданий в кроне и напоролся на ещё одну неприятность. Если вы используете bash (а он как правило по-умолчанию вместо sh на многих debian/redhat основанных дистрибутивах), то встроенная в интерпретатор комманда time имеет мало общего с основной утилитой и вызов придётся делать по полному пути.
У меня это был /usr/bin/time.

Итак, от слов к делу.
mitroko@host:~# cat /bin/cronresources
#!/bin/bash
MD=$(date +%b\ %d\ %H:%M:%S);
/usr/bin/time -f"$MD Process: %C\nTime: %es; Memory: %MK; Exitcode: %x; FS I/O: %I/%O; NET I/O: %r/%s" -a -o /var/log/cron-resources.log $*;

Разрешаем запуск этого скрипта.

Создаём пустой логфайл /var/log/cron-resources.log и выдаём ему 777 в качестве прав. Для тех, кого эти права не устраивают - пользуйтесь sudo. Тогда для каждого пользователя, обозначенного в заданиях cron необходимо будет давать разрешение.

Затем, к каждому заданию в cron дописать cronresources перед исполняемым файлом, указанном в задании.
Например:
*/5 * * * * cronresources php /some/path/devel_script.php --request=MadeMyDay >/some/path/mmd.log 2>&1

Как видно я не нарушаю даже условий перенаправления потоков.
Скрипт складывает в свой журнал STDERR и STDOUT а time пишет свой журнал.

На выходе получается что-то вроде:
mitroko@host:~# tail -n30 /var/log/cron-resources.log
Jul 24 09:47:01 Process: php /some/path/devel_script.php --request=MadeMyDay
Time: 17.10s; Memory: 60752K; Exitcode: 0; FS I/O: 0/8; NET I/O: 0/0


Gena Has You!

Мегафон блокирует youtube.com и модифицирует траффик.

Гэта жэстачайшэ, але...

Компания ОАО "Мегафон" модифицирует траффик вебсервисов, врезая туда свои баннеры.
Делает, она это, однако, не очень профессионально.

Вот, пример.
Купил 4G модем, зашёл на http://youtube.com/, выбрал ролик и получил:
"Время ожидания ответа от сервера 10.77.25.38 истекло."
А, вот, собственно, и прокси - http://10.77.25.38:8190/AocHint.jsp?

Интересно, что сказали бы ребята из гугл, узнав, что их контент модифицируют и блокируют доступ к их сайтам?

Будьте осторожны, вполне вероятно, этим прозрачным прокси, легко узнать ваши пароли, которые вы вбивали вне ssl сессий.


Поднял на скорую руку свой цгишный прокси. Стало возможным смотреть ютюб.

Кстати, phproxy (он же poxy) и его форк phproxyimproved - унылое Г. Тормоза и скрипты с правами 777 (жэсточайшэ).
nph-proxy.cgi мне больше понравился. Оч быстрый и простой.

Жэстачайшэ.
ImpERROR's VeloCiRaptor - LiLO

BigBrother after WPS

С начала этого года была опубликована утилита для перебора WPS пинкода точек доступа - reaver, чтобы проникать в сети WiFi.

Учитывая, что производители знают соответствие "PWS PIN - bssid точки", а спецслужбы имеют прямой доступ к таким соответствиям, то можно сделать вывод, что спецслужбы могут "нечаянно" к вам зайти, если вашей точке доступа меньше полутора лет и вы забыли выключить WPS (многие, даже, не знают что это).

Выводы делайте сами.
ImpERROR's VeloCiRaptor - LiLO

Конвертация со своим блекджеком.

При конвертации форматов в коммандной строке скриптом DocumentConverter.py свойства форматов конвертации выбраны по-умолчанию.
Например, если вы хотели сконвертировать xls в csv, то разделителями, по-умолчанию, будут запятые, а текст обрамлять, по-умолчанию, будут кавычки.

Очень люблю исходные коды.
Лезем в файл DocumentConverter.py и видим там свойства форматов, в часности csv:
    "csv": {
        "FilterName": "Text - txt - csv (StarCalc)",
        "FilterOptions": "44,34,0"
    }

Эти числа что-то значат. Лезем в опенофис, пытаемся сохранить что-то в формате csv и натыкаемся на фильтр с тремя полями.
Значит, эти три числа - это значения этих полей.

Меняем первое число на какое-нибудь, типа 47 и тут же получаем при конвертации разделитель "слеш".
Пишем в гугле 44 comma 47 slash и узнаём, что все наши разделители закодированы HTML Escape кодами (proof).
Меняем под себя код и получаем необходимые данные в нужном виде.
Например, для текста с разделителем "табуляция" и обрамлением "пробел" нужно выставить "FilterOptions": "09,32,0"


Можно было, конечно, и без этого хакерства, просто прочесть мануалы, вникнуть в API, найти KnowledgeBase, потратить день. Но высшее образование у вас никто не отменял.
ImpERROR's VeloCiRaptor - LiLO

Безумный конвертер и сага о простом сокете на баше

Реальность.
Поставщик для нашего интернет магазина выгружает нам список в закрытом формате xls.
Этот файл выгружается программой 1С, используя старую библиотеку, и не выставляет теги кодировки внутри, как заявлено в API, поэтому все приложения, апроче Microsoft Office открывают его с "кракозябрами". Неправильно отображают кодировку.
Все запросы к поставщику сменить формат выгрузки обламываются. Уходить от него нельзя по политическим мотивам. Реалии бизнеса. Надо делать workaround.

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

Решение.
На сервере устанавливают
  • OpenOffice HeadLess
  • OpenOffice-pyuno.
  • Xvfb для создания фейк фреймбуффера, которым будет пользоваться OOHL.
  • /opt/Server-OO/DocumentConverter.py
  • xinet.d
  • новый сервис в /etc/services (strem-oo-conv = TCP/8105)
На xinet.d создаём службу:Создаём башскрипт:Пишутся инитскрипты для импровизированных серверов OpenOffice HeadLess и Xvfb:В самих скриптах учитывается порядок запуска. А утилита chkconfig это зафиксирует в системе:
  • chkconfig --level 2345 server-oo on
  • chkconfig --level 2345 Xvfb on
Запускаем сервисы и тестируем:
  • cat F13032012.xls | nc 172.17.9.7 8105 > F13032012.csv
Комментарии.
Сами сервисы (OpenOfficeHeadLess, Xvfb, xinetd) довольно тривиальны.
Нетривиален скрипт на баше.
Мы получаем данные, и чтобы не закрыть поток, продолжаем конструкцией cat > $INFILE | tee &
Таким образом, сокет не закроется и у нас будет время на внутренние операции перекодирования и конвертации кодировок.
В конце сокет надо закрыть.
Для этого процес опрашивает информацию о себе по PID, узнаёт свои открытые соединения, выбирает порт клиента, узнаёт, какой из cat выдаёт на этот порт информацию и убивает его.
ImpERROR's VeloCiRaptor - LiLO

Contacting RMS

Однако, если вы хотите поговорить с Ричардом Столманом по телефону - просто напишите ему письмо со своим номером и просьбой перезвонить ему.
И он перезвонит вам.

Он очень просит, чтобы такие просьбы не были пустыми и было бы о чём поговорить.

Можно просто написать ему письмо и в течение 48 часов получить ответ.
Что я и сделал.
Gena Has You!

top

С недавних пор любимым скринсейвером на серверах стал top...
  • Current Music
    Junkie XL - Underachievers
Gena Has You!

Дядин сайт.

Тут всё новоё, будущее.
Попросят сделать сайт, и ты, такой крутой, вордпрессы, жумлы, то да сё.

За десять минут без вордресов, зная стати хтмл. Почти без цсс забомбил своему дяде сайт на своём хостинге.
Припарковал ему бесплатное доменное имя в зоне .tk и получился
http://peter-wolf.tk/

А потом уже пошли жумлы, вордпрессы...
ImpERROR's VeloCiRaptor - LiLO

(no subject)

Кто силён умом - тот, как правило, молчит!
Тьфу..., это, как-то, несвоевременно звучит.