Uncategorized
Записать файл в шару с помощью perl
Возникла у меня задача: необходимо из perl скрипта, который работает на linux машине создать файл в windows шаре. Нет никаких проблема заранее примонтировать шару к файловой системе, а потом уже просто записывать файл.
В моем случае, мне необходимо писать в большое количество разных сетевых папок, заранее не зная в какую. В этом случае я счел нецелесообразным монтировать все эти шары и стал искать средство попроще.
Я практически сразу получил ответ на свой вопрос в списке рассылке moscow.pm — нужно использовать Filesys::SmbClient (Андрей Костенко, большое спасибо).
Мне далеко не сразу удалось справится с инсталляцией этого пакета, но в конце-концов все получилось. Чтобы не забыть, как я это делал, я отписываю этот пост.
Итак, есть сервер с debian 5.0. Нужно поставить на него perl модуль Filesys::SmbClient.
В самом начале проверяем, что есть все необходимое для сборки модуля:
sudo apt-get install libc6-dev g++ gcc
Для установки модуля необходимо поставить некоторые библиотеки:
sudo apt-get install libsmbclient-dev
Дальше, в теории, нужно вот так ставить модуль:
sudo cpan -i Filesys::SmbClient
Но у меня так не получилось =( Поставил вручную.
Для начала скачиваю:
wget http://search.cpan.org/CPAN/authors/id/A/AL/ALIAN/Filesys-SmbClient-3.1.tar.gz
Разархивирую:
tar xvfz Filesys-SmbClient-3.1.tar.gz
Дальше:
perl Makefile.PL
На вопрос “где можно найти libsmbclient.h” отвечаю дефолтным ответом: /usr/include
На вопрос “где можно найти libsmbclient.so” так же отвечаю дефолтным ответом: /usr/lib
Тесты пройти у меня не получилось, но сам модуль работает, поэтому на вопрос Do you want make tests? нужно ответить no. Вопрос “Compile module with trace to STDERR ?” оставляем по дефолту в no.
Дальше делаем make, после этого делаем sudo make install (Вообще, обычно между make и sudo make install делается еще и make test, но у меня тесты этого модуля совсем не проходились).
Итак, после выполнения этих действий можно работать.
Вот скрипт, который позволяет сохранить файл в шару, в том случае если доступ к шаре осуществляется без необходимости указывать имя/пароль:
#! /usr/bin/perl
use POSIX;
use Filesys::SmbClient;
my $smb = new Filesys::SmbClient( debug => 0 );
# Write a file
my $fd = $smb->open(”>smb://192.168.1.1/share/test.txt”, 0666)
or die “Can’t create file:”, $!, “\n”;
$smb->write($fd, “A test of write call\n”)
or die $!,”\n”;
$smb->close($fd);
В том случае, если нужно вводить имя пользователя, то говорим вот так:
my $smb = new Filesys::SmbClient( username => "user", password =>"password", debug => 0 );
Конференция TEDx Moscow
В воскресенье был на конференции TEDx Moscow. Вот доклады, которые мне понравились, когда будет видео пересмотрю + всем рекомендую посмотреть:
- Леонид Володарский: «Практика перевода: что нужно, чтобы стать переводчиком»
- Леонид Фейгин: «Антропологическая основа брендинга»
- Екатерина Храмкова: «Почему „Экономика участия” требует от нас изменения сознания»
- Михаил Кожаринов: «Создание неформальных сообществ»
- Давид Ян: «Флешмобы, акционизм и искажение социо-коммуникативного пространства»
PS Я не присутствовал на первых пяти докладах, возможно там тоже было что-то хорошее.
Мой доклад на конференции YAPC
Уже завтра (точнее, уже даже почти сегодня) я выступаю с докладом на конференции по языку программирования Perl — YAPC (”Yet Another Perl Conference”). Я выступаю в разделе блиц докладов. Блиц доклады — это выступления, где каждому человеку отводится всего 5 минут на доклад. После четвертой минуту звучит предупреждающий сингал (у нас это треугольник, на западе используется гонг), после пятой минуты нужно вставать и уходить, не важно, все ли ты рассказал или не успел.
Главный по блиц-докладам у нас в России — Алексей Капранов. Если я ничего не путаю, то впервые блицы появились в России год назад, на прошлой конференции YAPC, а после этого разошлись и по другим ИТ конференциям.
Я выступаю с докладом со страшным названием “Создание системы мониторинга инфраструктуры с помощью Test::More”. Я написал его в стиле Такахаши (опять отдельное спасибо Алексу, это он рассказал всем про этот способ писать презентации). Метод Такахаши по написанию презентаций — это когда на одном слайде всего лишь несколько слов, в идеале одно слово или один символ. Господину Такахаиши, по имени которого назван этот способ, конечно, гораздо проще пользоваться своим методом (иероглифы гораздо более компактны), но и на русском можно писать в этой стилистике.
Для моего доклада я подготовил 120 слайдов. За 5 минут презентации это получается один слайд в 2.5 секунды. На френдфиде удачно пошутили, что еще чуть-чуть и будет кино.
Новый релиз системы мониторинга bmon (v2)
В конце марта, в качестве небольшой эксперимента я написал крохотную и очень простую систему мониторинга. Про нее я отписывал на своем блоге.
Совершенно неожиданно (но приятно неожиданно) эта штука прижилась у меня. Я потихонечку доработываю эту систему и сегодня релизю новую версию. Версия v.2. Основное нововведение — стало отображатся, сколько часов прошло с момента обнаружения сбоя.
Вот пример, какой отчет могли бы получить в корпорации Umbrella, если бы они использовала мою систему:
Архив с системой доступен по ссылке: http://bessarabov.ru/nano/bmon-002.zip (36 кб).
Учеба иностранного языка по сериалам
В последнее время, я достаточно много смотрю разных англоязычных сериалов. Я просмотрел их все старые серии и, с нетерпением, жду выхода новых серий. Обычно я смотрю их с субтитрами (south park я еще могу смотреть без субтитров, а вот house md — уже нет).
Цель от просмотра сериалов (кроме, конечно же, простого получения удовольствия от просмотра) — to perfect my english. Честно говоря, не могу сказать, что это как-то хорошо получается делать — вроде как и слушаю английскую речь, но много новых слов от этого я не выучил.
Сегодня во френдфине прочитал хорошую идею. Смысл идеи в том, чтобы посчитать частоту употребления слов в файле субтитров и топовые слова учить. Идея мне очень понравиалсь, так что я по быстрому взял и сделал крохотную системку, в которую можно загрузить файл с субтитрами и она выдаст частоту использования слов. Программка совершенно элеметнаярная и с кучей недостатов, но с одним очень большим достоинством: она работает.
Системку я написал исключительно для себя, но буду очень рад, если кому-нибудь еще она пригодится.
Итак, еще раз — вот ссылка: Частота слов в файле субтитров.
Случайное совпадение
Выбирал hostname машины, на которой будет находится трак и свн. Хотел выбрать название из древнегреческих богов(пытался найти бога памяти), не нашел. Следующая идея — нужно сервер назвать как один из спутников Юпитера. Первый спутник Юпитера - Метида назван в честь древнегреческой богини мудрости Метиды, первой супруги Зевса. =)
Система мониторинга серверов и сайтов с помощью тестов perl на iPhone
Есть такие мега штуки, как возможность написе unit тестов на perl, а так же не фреймворк iui, коорый позволяет делать html страницы с нативным интерфейсом айфона. К сожалению, про эти вещи я узнал не так давно, как бы мне хотелось (посыпаю голову пеплом). Я некоторое время думал, где-то применить их и тут подвернулась подходящая задачка (Кроме этого есть еще и чудестный бесплатный набор иконок, котороый я тоже тут заиспользовал).
У меня достаточно большая сетевая инфраструктура на работае + есть несколько машин дома. Я бы хотел иметь возможность, находясь где-то в пути проверить, что сейчас работает, а что нет. У меня есть всякие системы системы мониторинга, .но для их нормального использования мне нужно сидеть за компьютером. Я хотел сделать нечно простое, что просто показывает, что on, а что off. У меня есть iPhone и я решил, что вполне логично сделать нечно для него.
Таким образом родился крохотный проект — bmon — bessarabov’s monitoring system.
Эта штукенция состоит из 2-х частей:
- система мониторинга — запускатеся по crontab выполняет все perl тесты, определяет, что не работает и записывает в файл
- система отображения — perl cgi-bin скрипт, который на основе файлов с результатами работоты тестов формирует html страницу
Не отходя от кассы, вот ссылка на bmon.zip.
В архиве есть дока, там я понятно (я старался) написано, как запускать эту штуку + весь код (там всего ничего) так же достаточно подробно закомментирован.
Хочу подчеркнуть, что это не идеальное творение, но для моих целей подходит идеально =)
Вот пример, как я исползую perl тесты, для проверки:
# Если гугл не пигуется, значит интернет сломался
ok (ping(host => “google.com”, count => 3, size => 1024, timeout => 3 ), “internet is down”);
# Проверяем, работает ли сайт (в случае, если все нормально должен получить статус 200)
$mech->get( “http://example.com” );
is($mech->status(), 200, “example.com is down”);
А вот несколько синшотов:
Еще раз ссылка на эту программу.
Буду рад, если вам эта штуку пригодится, и вдвойне буду рад за любой feedback =)
Подключение по ssh с x11 forwarding по умолчанию
Я очень часто подключаюсь к разным линукс машинам с помощью вот такой команды:
ssh host -X -C
- -X — включается проброска x11 трафика
- -C — осуществляется сжатие трафика
Эту комманду я использую для того, чтобы запускать на удаленной машине всякие графические программы - медленно, но очень удобно (хотя, я, конечно же, предпочитаю консоль и всегда, когда возможно, пытаюсь использовать ее).
Вообщем, мне надоело каждый раз вводить параметры, и я решил один раз разобраться, как сделать так, чтобы это все было по умолчанию. Ответ нашелся в man 5 ssh_config. Всего-то нужно создать файл ~/.ssh/config, следующего содержания:
ForwardX11 yes
Compression yes
UPDATE 24.03.2009 — изначально я писал, что в файл ~/.ssh/config стоит писать так же CompressionLevel 9, но это неправильно. Вот фрагмент man ssh: Compression is desirable on modem lines and other slow connections, but will only slow down things on fast networks. . Действительно, с этой настройкой работает медленее, так что ее лучше не указывать.
С днем рождения, меня =)
Сегодня, 20 марта, точно так же как и в прошлом году, у меня день рождения. 27 лет.
Список подарков
В связи с приближающимся моим днем рождением (уже завтра, 20-ого), актуализировал свой wishlist — http://hachoo.ru/users/bessarabov/ =)
| M | T | W | T | F | S | S |
|---|---|---|---|---|---|---|
| « Jun | ||||||
| 1 | 2 | 3 | 4 | 5 | ||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 27 | 28 | 29 | ||||





