H43. Report tool for HDS midrange arrays.
12.11.2014
Сделал небольшой проект h43.unixpin.com для генерации отчетов модульных массивов Hitachi, таких как HUS100, AMS2000, AMS1000 итд
Генерит html код, вся графика на javascript (flot + jquery). Позволяет выделять мышью на графиках период времени, включать-отключать чекбоксами выводимые данные. Написан на perl, но есть бинарник для Windows.
Генерятся отчеты на основе pfm-файлов, которые собираются с массивов с помощью CLI или GUI SNM2 (Storage navigator modular 2).
Получется что-то типа этого:
Компиляция perl модулей на Solaris
12.02.2013
Если пробросить временный инет через proxy, то ставить модули в Solaris perl становится заметно веселее ;)
Solaris 10:
# export PATH=/usr/sfw/bin:$PATH
# export http_proxy=10.77.77.10:3128
# /usr/perl5/bin/perlgcc -MCPAN -e shell
Are you ready for manual configuration? [yes] no
...
cpan> o conf tar '/usr/sfw/bin/gtar'
cpan> o conf make '/usr/sfw/bin/gmake'
cpan> o conf urllist http://www.cpan.org http://www.cpan.dk
cpan> o conf ncftpget ''
cpan> o conf commit
commit: wrote /usr/perl5/5.8.4/lib/CPAN/Config.pm
cpan> install DBI
Посмотреть свой текущий конфиг CPAN
cpan> o conf
Удалить текущий конфиг CPAN и почистить все
rm /usr/perl5/5.8.4/lib/CPAN/Config.pm
rm -rf ~/.cpan
Ссылки в тему
Проверка web-приложений из командной строки
07.11.2012
Понадобилось тут автоматизировать проверку web-приложения из командной строки. Суть такая — заходим на страницу, логинимся, затем идем на страницу поиска, там вводим запрос, нажимаем кнопку «найти», попадаем на страницу с результатом и ищем там определенную фразу. Все как бы просто и понятно, но ввод значений в форме поиска реализован через ajax. Чтобы понять, что отравляет броузер на сервер и что получает ставим Firefox + аддон HttpFox .
По результатам исследования был найден и подрихтован почти полностью переписан подходящий скриптик.
Особенности:
Куки и User-agent сохраняются в пределах всего сеанса.
В массиве анонимных хэшей @Urls нужно заменить ссылки url, отправляемые данные form, и expect ожидаемые данные на полученных страницах. Соответственно, по массиву идем и последовательно получаем страницы с сайта.
В expect ожидаемых данных можно использовать регулярные выражения и круглые скобки для выборки определенных данных. То что выбралось в круглых скобках ($1,$2 итд) сохраняется в переменных $e1,$e2 итд. Например получаем на странице строку «blalala uid=123456», ищем в ней uid
expect=>q(blalala uid=(\d+))
а затем подставляем ее в отправляемые данные
form=>'data=blalabla&uid=${e1}'
Для чего можно использовать этот скриптик? Для проверки связки сервер приложений-база данных, для массовой автоматической регистрации пользователей, для спама из командной строки ну итд
Дружно качаем check_web_app.pl
ssd vs cXtXdX
09.06.2010
Solaris в логах иногда оставляет сообщения, типа
Jun 22 04:07:11
midframe scsi: [ID 799468 kern.info] ssd251 at scsi_vhci0: name g600015d000230b000000000000001707, bus address g600015d000230b000000000000001707
ссылающиеся на ssd имя диска (или на sd, или dad). Как найти соответсвие между экземпляром драйвера и путем, определяемым через cXtXdX ?
Написал для этого небольшой скрипт:
$ ./whatdisk.pl
Device Driver Device SN Device ID
c1t0d0 ssd0 0744BB20JC id1,ssd@n5000cca004141e9c
c1t1d0 ssd1 0816S52E4D id1,ssd@n2000001d38707617
c1t3d0 ssd3 062244LX6L id1,ssd@n20000014c3d9c52d
c1t5d0 ssd4 062244LNCF id1,ssd@n20000014c3d9c1e5
c1t2d0 ssd5 062244LQ4W id1,ssd@n20000014c3d9caa1
Закачать whatdisk.pl
Ссылки в тему:
Немного об именах дисковых устройств в Solaris
man iostat
man sd
Есть такой инструмент — PAR Packager , и сделать exe-шник с его помощью проще простого:
C:\ pp -o filename.exe filename.pl
Не помню, входит ли утилитка в состав ActivePerl. Если что — запускаете ppm из командной строки и устанавливаете PAR. Для любителей рисовать окошки из perl — есть логичное продолжение — tkpp. Недостаток конечно есть — размер exe-шника, да и скорость выполнения — будет точно такой же, как и у perl-скрипта.
Что еще можно использовать?
1. Когда-то, для этого же я использовал perl2exe от IndigoStar. Но так как это коммерческий продукт, то по окончании программа выплевывала строчку о том, что это «незарегистрированная версия». К тому же, как отмечают продвинутые камрады — достаточно просто раскомпилировать обратно и получить исходники.
2. Есть такая утилитка — perlcc. Генерирует исходник на C, который можно потом собрать с помощью компилятора. К сожалению, существует не для всех версий perl — последняя версия 5.8.9 (я когда-то пробовал этот путь, но что-то там получалось не очень весело, типа компилировалось только с VisualStudio , плюс еще какой-то геморой с либами, может быть сейчас что-то и изменилось). Но с точки зрения размера выполняемого файла — без вариантов ;)
ЗЫ — только что попробовал скомпилить скриптик в 2 строки под Solaris — компилится, но при выполнении падает в корку ;(, так что ситуация далека от идеала.
Снова perl. Немного о встроенных переменных
25.08.2009
По мотивам стандартной документации Perlvar.
Считать целиком файл в переменную:
open (MOCK, $filename) or die "$!";
local $/;
# переопределяем встроенную переменную "разделитель строк" ($/ или $INPUT_RECORD_SEPARATOR или $RS)
$_ =<MOCK> ; # захавать моск файл целиком
close (MOCK);
Напечатать содержимое массива:
@a=qw( 1 2fewf wf g ag f);
local $,="\n";
# переопределяем встроенную переменную "разделитель полей" ($, или $OUTPUT_FIELD_SEPARATOR или $OFS)
print @a;
Читать полностью »
Как вычислить разницу между двумя датами?
19.03.2009
Иногда требуется вычислить разницу в днях между двумя датами:
$ perl -e ‘use Date::Calc qw(:all); print Delta_Days(2007,8,17, 2009,3,20)’
581
или, если неустановлен модуль Date::Calc, то
$ perl -e ‘use POSIX; $y0=2007; $m0=8; $d0=17; $y1=2009; $m1=3; $d1=20; printf( «%i\n», POSIX::difftime( POSIX::mktime(0,0,0,$d1,$m1-1,$y1-1900), POSIX::mktime(0,0,0,$d0,$m0-1,$y0-1900) ) / 86400 );’
581
Сравнить содержимое файлов в каталогах
27.02.2009
На днях пришлось анализировать два Sun Explorer-а, собранных с одного сервера с периодом в полгода. Так как ничего unix-ового под рукой не было, то попробовал с ходу найти программку, которая сравнивает 2 каталога и выводит отсутствующие файлы и сообственно различия. Вот… сходу бесплатных утилит не нашлось, пришлось написать на perl. Итак, скрипт, который
- находит файлы, отсутствующие во втором каталоге
находит файлы, отличающиеся по дате модификации и размеру
находит файлы, отличающиеся по содержанию
Так как написан на perl, то под Windows требует установленного perl (ActivePerl, например) или можно скачать скомпилированный бинарник.