<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Сергей Шакшин</title>
	<atom:link href="http://rigid.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://rigid.wordpress.com</link>
	<description>технический блог</description>
	<lastBuildDate>Tue, 09 Feb 2010 05:38:24 +0000</lastBuildDate>
	<language>ru</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='rigid.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Сергей Шакшин</title>
		<link>http://rigid.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://rigid.wordpress.com/osd.xml" title="Сергей Шакшин" />
	<atom:link rel='hub' href='http://rigid.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Скрипт для отслеживаия машин в сети</title>
		<link>http://rigid.wordpress.com/2010/02/09/%d1%81%d0%ba%d1%80%d0%b8%d0%bf%d1%82-%d0%b4%d0%bb%d1%8f-%d0%be%d1%82%d1%81%d0%bb%d0%b5%d0%b6%d0%b8%d0%b2%d0%b0%d0%b8%d1%8f-%d0%bc%d0%b0%d1%88%d0%b8%d0%bd-%d0%b2-%d1%81%d0%b5%d1%82%d0%b8/</link>
		<comments>http://rigid.wordpress.com/2010/02/09/%d1%81%d0%ba%d1%80%d0%b8%d0%bf%d1%82-%d0%b4%d0%bb%d1%8f-%d0%be%d1%82%d1%81%d0%bb%d0%b5%d0%b6%d0%b8%d0%b2%d0%b0%d0%b8%d1%8f-%d0%bc%d0%b0%d1%88%d0%b8%d0%bd-%d0%b2-%d1%81%d0%b5%d1%82%d0%b8/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 05:35:10 +0000</pubDate>
		<dc:creator>rigid</dc:creator>
				<category><![CDATA[Программирование]]></category>
		<category><![CDATA[Работа]]></category>
		<category><![CDATA[Сети]]></category>
		<category><![CDATA[Linux/Unix]]></category>
		<category><![CDATA[администрирование]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[ping]]></category>

		<guid isPermaLink="false">http://rigid.wordpress.com/?p=71</guid>
		<description><![CDATA[Частенько возникает необходимость поадминить удаленную юзерскую машину, которая в данный момент выключена. Раньше приходилось просто время от времени пинговать, чтобы отследить, когда машина появится в сети. Сейчас написал не шибко большой скрипт, выполняющий эту работу за меня. Скрипт написан на Perl и использует sqlite и libnotify. Сам скрипт и пример использования под катом. Итак, сам [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rigid.wordpress.com&amp;blog=3066028&amp;post=71&amp;subd=rigid&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;">Частенько возникает необходимость поадминить удаленную юзерскую машину, которая в данный момент выключена. Раньше приходилось просто время от времени пинговать, чтобы отследить, когда машина появится в сети. Сейчас написал не шибко большой скрипт, выполняющий эту работу за меня. Скрипт написан на Perl и использует sqlite и libnotify. Сам скрипт и пример использования под катом.</p>
<p><span id="more-71"></span><br />
Итак, сам скрипт:</p>
<pre style="color:#000020;background:#f6f8ff;"><span style="color:#595979;">#!/usr/bin/perl</span>

<span style="color:#200080;font-weight:bold;">use</span> <span style="color:#200080;font-weight:bold;">strict</span><span style="color:#406080;">;</span>
<span style="color:#200080;font-weight:bold;">use</span> <span style="color:#7779bb;font-weight:bold;">subs</span><span style="color:#406080;">;</span>
<span style="color:#200080;font-weight:bold;">use</span> DBI<span style="color:#406080;">;</span>
<span style="color:#200080;font-weight:bold;">use</span> <span style="color:#7779bb;font-weight:bold;">Net::Ping::External</span> <span style="color:#200080;font-weight:bold;">qw</span><span style="color:#800000;">(</span><span style="color:#1060b6;">ping</span><span style="color:#800000;">)</span><span style="color:#406080;">;</span>

<span style="color:#200080;font-weight:bold;">sub </span>dbinit <span style="color:#406080;">{</span>
    <span style="color:#200080;font-weight:bold;">my</span> <span style="color:#007d45;">$home</span> <span style="color:#308080;">=</span> <span style="color:#007d45;">$ENV</span><span style="color:#406080;">{</span>HOME<span style="color:#406080;">}</span><span style="color:#406080;">;</span>
    <span style="color:#200080;font-weight:bold;">my</span> <span style="color:#007d45;">$db</span> <span style="color:#308080;">=</span> <span style="color:#7779bb;font-weight:bold;">DBI</span><span style="color:#308080;">-&gt;</span><span style="color:#200080;font-weight:bold;">connect</span><span style="color:#308080;">(</span><span style="color:#1060b6;">"dbi:SQLite:dbname="</span><span style="color:#308080;">.</span><span style="color:#007d45;">$home</span><span style="color:#308080;">.</span><span style="color:#1060b6;">"/.ipnotify.db"</span><span style="color:#308080;">,</span><span style="color:#1060b6;">""</span><span style="color:#308080;">,</span><span style="color:#1060b6;">""</span><span style="color:#308080;">)</span><span style="color:#406080;">;</span>
    <span style="color:#200080;font-weight:bold;">my</span> <span style="color:#007d45;">$iqry</span> <span style="color:#308080;">=</span> <span style="color:#007d45;">$db</span><span style="color:#308080;">-&gt;</span><span style="color:#200080;font-weight:bold;">do</span><span style="color:#308080;">(</span><span style="color:#1060b6;">"create table if not exists hosts(hostname TEXT)"</span><span style="color:#308080;">)</span><span style="color:#406080;">;</span>
    <span style="color:#007d45;">$db</span><span style="color:#308080;">-&gt;</span>disconnect<span style="color:#308080;">(</span><span style="color:#308080;">)</span><span style="color:#406080;">;</span>
<span style="color:#406080;">}</span>

<span style="color:#200080;font-weight:bold;">sub </span>add <span style="color:#406080;">{</span>
    <span style="color:#200080;font-weight:bold;">my</span> <span style="color:#007d45;">$home</span> <span style="color:#308080;">=</span> <span style="color:#007d45;">$ENV</span><span style="color:#406080;">{</span>HOME<span style="color:#406080;">}</span><span style="color:#406080;">;</span>
    <span style="color:#200080;font-weight:bold;">my</span> <span style="color:#007d45;">$db</span> <span style="color:#308080;">=</span> <span style="color:#7779bb;font-weight:bold;">DBI</span><span style="color:#308080;">-&gt;</span><span style="color:#200080;font-weight:bold;">connect</span><span style="color:#308080;">(</span><span style="color:#1060b6;">"dbi:SQLite:dbname="</span><span style="color:#308080;">.</span><span style="color:#007d45;">$home</span><span style="color:#308080;">.</span><span style="color:#1060b6;">"/.ipnotify.db"</span><span style="color:#308080;">,</span><span style="color:#1060b6;">""</span><span style="color:#308080;">,</span><span style="color:#1060b6;">""</span><span style="color:#308080;">)</span><span style="color:#406080;">;</span>

    <span style="color:#200080;font-weight:bold;">if</span> <span style="color:#308080;">(</span><span style="color:#007d45;">$_</span><span style="color:#308080;">[</span><span style="color:#008c00;">0</span><span style="color:#308080;">]</span> <span style="color:#308080;">eq</span> <span style="color:#1060b6;">""</span><span style="color:#308080;">)</span> <span style="color:#406080;">{</span>
    <span style="color:#200080;font-weight:bold;">printf</span> <span style="color:#1060b6;">"expected hostname</span><span style="color:#0f69ff;">\n</span><span style="color:#1060b6;">"</span><span style="color:#406080;">;</span>
    <span style="color:#406080;">}</span> <span style="color:#200080;font-weight:bold;">else</span> <span style="color:#406080;">{</span>
    <span style="color:#200080;font-weight:bold;">my</span> <span style="color:#007d45;">$qry</span> <span style="color:#308080;">=</span> <span style="color:#007d45;">$db</span><span style="color:#308080;">-&gt;</span><span style="color:#200080;font-weight:bold;">do</span><span style="color:#308080;">(</span><span style="color:#1060b6;">"insert into hosts values ('"</span><span style="color:#308080;">.</span><span style="color:#007d45;">$_</span><span style="color:#308080;">[</span><span style="color:#008c00;">0</span><span style="color:#308080;">]</span><span style="color:#308080;">.</span><span style="color:#1060b6;">"')"</span><span style="color:#308080;">)</span><span style="color:#406080;">;</span>
        <span style="color:#200080;font-weight:bold;">printf</span> <span style="color:#007d45;">$qry</span><span style="color:#308080;">.</span><span style="color:#1060b6;">" hosts added to monitor list</span><span style="color:#0f69ff;">\n</span><span style="color:#1060b6;">"</span><span style="color:#406080;">;</span>
    <span style="color:#406080;">}</span>
    <span style="color:#007d45;">$db</span><span style="color:#308080;">-&gt;</span>disconnect<span style="color:#308080;">(</span><span style="color:#308080;">)</span><span style="color:#406080;">;</span>
<span style="color:#406080;">}</span>

<span style="color:#200080;font-weight:bold;">sub </span>del <span style="color:#406080;">{</span>
    <span style="color:#200080;font-weight:bold;">my</span> <span style="color:#007d45;">$home</span> <span style="color:#308080;">=</span> <span style="color:#007d45;">$ENV</span><span style="color:#406080;">{</span>HOME<span style="color:#406080;">}</span><span style="color:#406080;">;</span>
    <span style="color:#200080;font-weight:bold;">my</span> <span style="color:#007d45;">$db</span> <span style="color:#308080;">=</span> <span style="color:#7779bb;font-weight:bold;">DBI</span><span style="color:#308080;">-&gt;</span><span style="color:#200080;font-weight:bold;">connect</span><span style="color:#308080;">(</span><span style="color:#1060b6;">"dbi:SQLite:dbname="</span><span style="color:#308080;">.</span><span style="color:#007d45;">$home</span><span style="color:#308080;">.</span><span style="color:#1060b6;">"/.ipnotify.db"</span><span style="color:#308080;">,</span><span style="color:#1060b6;">""</span><span style="color:#308080;">,</span><span style="color:#1060b6;">""</span><span style="color:#308080;">)</span><span style="color:#406080;">;</span>

    <span style="color:#200080;font-weight:bold;">if</span> <span style="color:#308080;">(</span><span style="color:#007d45;">$_</span><span style="color:#308080;">[</span><span style="color:#008c00;">0</span><span style="color:#308080;">]</span> <span style="color:#308080;">eq</span> <span style="color:#1060b6;">""</span><span style="color:#308080;">)</span> <span style="color:#406080;">{</span>
    <span style="color:#200080;font-weight:bold;">printf</span> <span style="color:#1060b6;">"expected hostname</span><span style="color:#0f69ff;">\n</span><span style="color:#1060b6;">"</span><span style="color:#406080;">;</span>
    <span style="color:#406080;">}</span> <span style="color:#200080;font-weight:bold;">else</span> <span style="color:#406080;">{</span>
    <span style="color:#200080;font-weight:bold;">my</span> <span style="color:#007d45;">$qry</span> <span style="color:#308080;">=</span> <span style="color:#007d45;">$db</span><span style="color:#308080;">-&gt;</span><span style="color:#200080;font-weight:bold;">do</span><span style="color:#308080;">(</span><span style="color:#1060b6;">"delete from hosts where hostname ='"</span><span style="color:#308080;">.</span><span style="color:#007d45;">$_</span><span style="color:#308080;">[</span><span style="color:#008c00;">0</span><span style="color:#308080;">]</span><span style="color:#308080;">.</span><span style="color:#1060b6;">"'"</span><span style="color:#308080;">)</span><span style="color:#406080;">;</span>
    <span style="color:#200080;font-weight:bold;">if</span> <span style="color:#308080;">(</span><span style="color:#007d45;">$qry</span> <span style="color:#308080;">=</span><span style="color:#308080;">=</span> <span style="color:#008c00;">0</span><span style="color:#308080;">)</span> <span style="color:#406080;">{</span>
        <span style="color:#200080;font-weight:bold;">printf</span> <span style="color:#1060b6;">"no such entry</span><span style="color:#0f69ff;">\n</span><span style="color:#1060b6;">"</span><span style="color:#406080;">;</span>
    <span style="color:#406080;">}</span> <span style="color:#200080;font-weight:bold;">else</span> <span style="color:#406080;">{</span>
        <span style="color:#200080;font-weight:bold;">printf</span> <span style="color:#1060b6;">"ok</span><span style="color:#0f69ff;">\n</span><span style="color:#1060b6;">"</span><span style="color:#406080;">;</span>
    <span style="color:#406080;">}</span>
    <span style="color:#406080;">}</span>
    <span style="color:#007d45;">$db</span><span style="color:#308080;">-&gt;</span>disconnect<span style="color:#308080;">(</span><span style="color:#308080;">)</span><span style="color:#406080;">;</span>
<span style="color:#406080;">}</span>

<span style="color:#200080;font-weight:bold;">sub </span>list <span style="color:#406080;">{</span>
    <span style="color:#200080;font-weight:bold;">my</span> <span style="color:#007d45;">$home</span> <span style="color:#308080;">=</span> <span style="color:#007d45;">$ENV</span><span style="color:#406080;">{</span>HOME<span style="color:#406080;">}</span><span style="color:#406080;">;</span>
    <span style="color:#200080;font-weight:bold;">my</span> <span style="color:#007d45;">$db</span> <span style="color:#308080;">=</span> <span style="color:#7779bb;font-weight:bold;">DBI</span><span style="color:#308080;">-&gt;</span><span style="color:#200080;font-weight:bold;">connect</span><span style="color:#308080;">(</span><span style="color:#1060b6;">"dbi:SQLite:dbname="</span><span style="color:#308080;">.</span><span style="color:#007d45;">$home</span><span style="color:#308080;">.</span><span style="color:#1060b6;">"/.ipnotify.db"</span><span style="color:#308080;">,</span><span style="color:#1060b6;">""</span><span style="color:#308080;">,</span><span style="color:#1060b6;">""</span><span style="color:#308080;">)</span><span style="color:#406080;">;</span>
    <span style="color:#200080;font-weight:bold;">my</span> <span style="color:#007d45;">$qry</span> <span style="color:#308080;">=</span> <span style="color:#007d45;">$db</span><span style="color:#308080;">-&gt;</span>prepare<span style="color:#308080;">(</span><span style="color:#1060b6;">"select hostname from hosts order by hostname"</span><span style="color:#308080;">)</span><span style="color:#406080;">;</span>

    <span style="color:#007d45;">$qry</span><span style="color:#308080;">-&gt;</span>execute<span style="color:#308080;">(</span><span style="color:#308080;">)</span> <span style="color:#308080;">or</span> <span style="color:#200080;font-weight:bold;">die</span><span style="color:#308080;">(</span><span style="color:#1060b6;">"db query failed: "</span><span style="color:#308080;">.</span><span style="color:#007d45;">$db</span><span style="color:#308080;">-&gt;</span>errstr<span style="color:#308080;">)</span><span style="color:#406080;">;</span>

    <span style="color:#200080;font-weight:bold;">my</span><span style="color:#007d45;">$cnt</span> <span style="color:#308080;">=</span> <span style="color:#008c00;">0</span><span style="color:#406080;">;</span>
    <span style="color:#200080;font-weight:bold;">while</span> <span style="color:#308080;">(</span><span style="color:#308080;">(</span><span style="color:#200080;font-weight:bold;">my</span> <span style="color:#007d45;">$hostname</span><span style="color:#308080;">)</span> <span style="color:#308080;">=</span> <span style="color:#007d45;">$qry</span><span style="color:#308080;">-&gt;</span>fetchrow_array<span style="color:#308080;">(</span><span style="color:#308080;">)</span><span style="color:#308080;">)</span> <span style="color:#406080;">{</span>
        <span style="color:#200080;font-weight:bold;">printf</span> <span style="color:#007d45;">$hostname</span><span style="color:#308080;">.</span><span style="color:#1060b6;">"</span><span style="color:#0f69ff;">\n</span><span style="color:#1060b6;">"</span><span style="color:#406080;">;</span>
        <span style="color:#007d45;">$cnt</span><span style="color:#308080;">+</span><span style="color:#308080;">+</span><span style="color:#406080;">;</span>
    <span style="color:#406080;">}</span>
    <span style="color:#200080;font-weight:bold;">if</span> <span style="color:#308080;">(</span><span style="color:#007d45;">$cnt</span> <span style="color:#308080;">=</span><span style="color:#308080;">=</span> <span style="color:#008c00;">0</span><span style="color:#308080;">)</span> <span style="color:#406080;">{</span>
        <span style="color:#200080;font-weight:bold;">printf</span> <span style="color:#1060b6;">"no entries</span><span style="color:#0f69ff;">\n</span><span style="color:#1060b6;">"</span><span style="color:#406080;">;</span>
    <span style="color:#406080;">}</span>
    <span style="color:#007d45;">$qry</span><span style="color:#308080;">-&gt;</span>finish<span style="color:#308080;">(</span><span style="color:#308080;">)</span><span style="color:#406080;">;</span>
    <span style="color:#200080;font-weight:bold;">undef</span> <span style="color:#007d45;">$qry</span><span style="color:#406080;">;</span>

    <span style="color:#007d45;">$db</span><span style="color:#308080;">-&gt;</span>disconnect<span style="color:#308080;">(</span><span style="color:#308080;">)</span><span style="color:#406080;">;</span>
<span style="color:#406080;">}</span>

<span style="color:#200080;font-weight:bold;">sub </span>daemon <span style="color:#406080;">{</span>
    <span style="color:#200080;font-weight:bold;">my</span> <span style="color:#007d45;">%states</span> <span style="color:#308080;">=</span> <span style="color:#308080;">(</span><span style="color:#308080;">)</span><span style="color:#406080;">;</span>
    <span style="color:#200080;font-weight:bold;">while</span> <span style="color:#308080;">(</span><span style="color:#008c00;">1</span> <span style="color:#308080;">=</span><span style="color:#308080;">=</span> <span style="color:#008c00;">1</span><span style="color:#308080;">)</span> <span style="color:#406080;">{</span>
    <span style="color:#200080;font-weight:bold;">my</span> <span style="color:#007d45;">$home</span> <span style="color:#308080;">=</span> <span style="color:#007d45;">$ENV</span><span style="color:#406080;">{</span>HOME<span style="color:#406080;">}</span><span style="color:#406080;">;</span>
    <span style="color:#200080;font-weight:bold;">my</span> <span style="color:#007d45;">$db</span> <span style="color:#308080;">=</span> <span style="color:#7779bb;font-weight:bold;">DBI</span><span style="color:#308080;">-&gt;</span><span style="color:#200080;font-weight:bold;">connect</span><span style="color:#308080;">(</span><span style="color:#1060b6;">"dbi:SQLite:dbname="</span><span style="color:#308080;">.</span><span style="color:#007d45;">$home</span><span style="color:#308080;">.</span><span style="color:#1060b6;">"/.ipnotify.db"</span><span style="color:#308080;">,</span><span style="color:#1060b6;">""</span><span style="color:#308080;">,</span><span style="color:#1060b6;">""</span><span style="color:#308080;">)</span><span style="color:#406080;">;</span>
    <span style="color:#200080;font-weight:bold;">my</span> <span style="color:#007d45;">$qry</span> <span style="color:#308080;">=</span> <span style="color:#007d45;">$db</span><span style="color:#308080;">-&gt;</span>prepare<span style="color:#308080;">(</span><span style="color:#1060b6;">"select hostname from hosts"</span><span style="color:#308080;">)</span><span style="color:#406080;">;</span>
    <span style="color:#200080;font-weight:bold;">if</span> <span style="color:#308080;">(</span><span style="color:#007d45;">$qry</span><span style="color:#308080;">-&gt;</span>execute<span style="color:#308080;">(</span><span style="color:#308080;">)</span><span style="color:#308080;">)</span> <span style="color:#406080;">{</span>
        <span style="color:#200080;font-weight:bold;">while</span> <span style="color:#308080;">(</span><span style="color:#308080;">(</span><span style="color:#200080;font-weight:bold;">my</span> <span style="color:#007d45;">$host</span><span style="color:#308080;">)</span> <span style="color:#308080;">=</span> <span style="color:#007d45;">$qry</span><span style="color:#308080;">-&gt;</span>fetchrow_array<span style="color:#308080;">(</span><span style="color:#308080;">)</span><span style="color:#308080;">)</span> <span style="color:#406080;">{</span>
        <span style="color:#200080;font-weight:bold;">my</span> <span style="color:#007d45;">$notify</span> <span style="color:#308080;">=</span> <span style="color:#008c00;">0</span><span style="color:#406080;">;</span>
        <span style="color:#200080;font-weight:bold;">if</span> <span style="color:#308080;">(</span>ping<span style="color:#308080;">(</span>hostname <span style="color:#308080;">=</span><span style="color:#308080;">&gt;</span> <span style="color:#007d45;">$host</span><span style="color:#308080;">,</span> timeout <span style="color:#308080;">=</span><span style="color:#308080;">&gt;</span> <span style="color:#008c00;">1</span><span style="color:#308080;">)</span><span style="color:#308080;">)</span> <span style="color:#406080;">{</span>
            <span style="color:#200080;font-weight:bold;">unless</span> <span style="color:#308080;">(</span><span style="color:#200080;font-weight:bold;">exists</span><span style="color:#308080;">(</span><span style="color:#007d45;">$states</span><span style="color:#406080;">{</span><span style="color:#007d45;">$host</span><span style="color:#406080;">}</span><span style="color:#308080;">)</span><span style="color:#308080;">)</span> <span style="color:#406080;">{</span>
            <span style="color:#007d45;">$states</span><span style="color:#406080;">{</span><span style="color:#007d45;">$host</span><span style="color:#406080;">}</span> <span style="color:#308080;">=</span> <span style="color:#008c00;">1</span><span style="color:#406080;">;</span>
            <span style="color:#007d45;">$notify</span> <span style="color:#308080;">=</span> <span style="color:#008c00;">1</span><span style="color:#406080;">;</span>
            <span style="color:#406080;">}</span> <span style="color:#200080;font-weight:bold;">else</span> <span style="color:#406080;">{</span>
            <span style="color:#200080;font-weight:bold;">if</span> <span style="color:#308080;">(</span><span style="color:#007d45;">$states</span><span style="color:#406080;">{</span><span style="color:#007d45;">$host</span><span style="color:#406080;">}</span> <span style="color:#308080;">=</span><span style="color:#308080;">=</span> <span style="color:#008c00;">0</span><span style="color:#308080;">)</span> <span style="color:#406080;">{</span>
                <span style="color:#007d45;">$states</span><span style="color:#406080;">{</span><span style="color:#007d45;">$host</span><span style="color:#406080;">}</span> <span style="color:#308080;">=</span> <span style="color:#008c00;">1</span><span style="color:#406080;">;</span>
                <span style="color:#007d45;">$notify</span> <span style="color:#308080;">=</span> <span style="color:#008c00;">1</span><span style="color:#406080;">;</span>
            <span style="color:#406080;">}</span>
            <span style="color:#406080;">}</span>
        <span style="color:#406080;">}</span> <span style="color:#200080;font-weight:bold;">else</span> <span style="color:#406080;">{</span>
            <span style="color:#007d45;">$states</span><span style="color:#406080;">{</span><span style="color:#007d45;">$host</span><span style="color:#406080;">}</span> <span style="color:#308080;">=</span> <span style="color:#008c00;">0</span><span style="color:#406080;">;</span>
        <span style="color:#406080;">}</span>
        <span style="color:#200080;font-weight:bold;">if</span> <span style="color:#308080;">(</span><span style="color:#007d45;">$notify</span> <span style="color:#308080;">=</span><span style="color:#308080;">=</span> <span style="color:#008c00;">1</span><span style="color:#308080;">)</span> <span style="color:#406080;">{</span>
            <span style="color:#1060b6;background:#cceeee;">`</span><span style="color:#000000;background:#cceeee;">notify-send -u normal IPNotify "</span><span style="color:#007d45;background:#cceeee;">$host</span><span style="color:#000000;background:#cceeee;"> is online!"</span><span style="color:#1060b6;background:#cceeee;">`</span><span style="color:#406080;">;</span>
        <span style="color:#406080;">}</span>
        <span style="color:#406080;">}</span>
    <span style="color:#406080;">}</span>
    <span style="color:#007d45;">$qry</span><span style="color:#308080;">-&gt;</span>finish<span style="color:#308080;">(</span><span style="color:#308080;">)</span><span style="color:#406080;">;</span>
    <span style="color:#200080;font-weight:bold;">undef</span> <span style="color:#007d45;">$qry</span><span style="color:#406080;">;</span>
    <span style="color:#007d45;">$db</span><span style="color:#308080;">-&gt;</span>disconnect<span style="color:#308080;">(</span><span style="color:#308080;">)</span><span style="color:#406080;">;</span>
    <span style="color:#406080;">}</span>
<span style="color:#406080;">}</span>

dbinit<span style="color:#308080;">(</span><span style="color:#308080;">)</span><span style="color:#406080;">;</span>
<span style="color:#200080;font-weight:bold;">if</span> <span style="color:#308080;">(</span><span style="color:#308080;">(</span><span style="color:#007d45;">$ARGV</span><span style="color:#308080;">[</span><span style="color:#008c00;">0</span><span style="color:#308080;">]</span> <span style="color:#308080;">eq</span> <span style="color:#1060b6;">""</span><span style="color:#308080;">)</span> <span style="color:#308080;">|</span><span style="color:#308080;">|</span> <span style="color:#308080;">(</span><span style="color:#308080;">(</span><span style="color:#007d45;">$ARGV</span><span style="color:#308080;">[</span><span style="color:#008c00;">0</span><span style="color:#308080;">]</span> <span style="color:#308080;">ne</span> <span style="color:#1060b6;">"add"</span><span style="color:#308080;">)</span> <span style="color:#308080;">&amp;</span><span style="color:#308080;">&amp;</span> <span style="color:#308080;">(</span><span style="color:#007d45;">$ARGV</span><span style="color:#308080;">[</span><span style="color:#008c00;">0</span><span style="color:#308080;">]</span> <span style="color:#308080;">ne</span> <span style="color:#1060b6;">"del"</span><span style="color:#308080;">)</span> <span style="color:#308080;">&amp;</span><span style="color:#308080;">&amp;</span> <span style="color:#308080;">(</span><span style="color:#007d45;">$ARGV</span><span style="color:#308080;">[</span><span style="color:#008c00;">0</span><span style="color:#308080;">]</span> <span style="color:#308080;">ne</span> <span style="color:#1060b6;">"list"</span><span style="color:#308080;">)</span> <span style="color:#308080;">&amp;</span><span style="color:#308080;">&amp;</span> <span style="color:#308080;">(</span><span style="color:#007d45;">$ARGV</span><span style="color:#308080;">[</span><span style="color:#008c00;">0</span><span style="color:#308080;">]</span> <span style="color:#308080;">ne</span> <span style="color:#1060b6;">"daemon"</span><span style="color:#308080;">)</span><span style="color:#308080;">)</span><span style="color:#308080;">)</span> <span style="color:#406080;">{</span>
    <span style="color:#200080;font-weight:bold;">printf</span> <span style="color:#1060b6;">"IPNotify usage:</span><span style="color:#0f69ff;">\n</span><span style="color:#1060b6;">"</span><span style="color:#406080;">;</span>
    <span style="color:#200080;font-weight:bold;">printf</span> <span style="color:#1060b6;">"ipnotify daemon | list | add &lt;host&gt; | del &lt;host&gt;</span><span style="color:#0f69ff;">\n</span><span style="color:#1060b6;">"</span><span style="color:#406080;">;</span>
<span style="color:#406080;">}</span> <span style="color:#200080;font-weight:bold;">else</span> <span style="color:#406080;">{</span>
    <span style="color:#200080;font-weight:bold;">if</span> <span style="color:#308080;">(</span><span style="color:#007d45;">$ARGV</span><span style="color:#308080;">[</span><span style="color:#008c00;">0</span><span style="color:#308080;">]</span> <span style="color:#308080;">eq</span> <span style="color:#1060b6;">"list"</span><span style="color:#308080;">)</span> <span style="color:#406080;">{</span>
    list<span style="color:#308080;">(</span><span style="color:#308080;">)</span><span style="color:#406080;">;</span>
    <span style="color:#406080;">}</span><span style="color:#406080;">;</span>
    <span style="color:#200080;font-weight:bold;">if</span> <span style="color:#308080;">(</span><span style="color:#007d45;">$ARGV</span><span style="color:#308080;">[</span><span style="color:#008c00;">0</span><span style="color:#308080;">]</span> <span style="color:#308080;">eq</span> <span style="color:#1060b6;">"daemon"</span><span style="color:#308080;">)</span> <span style="color:#406080;">{</span>
    daemon<span style="color:#308080;">(</span><span style="color:#308080;">)</span><span style="color:#406080;">;</span>
    <span style="color:#406080;">}</span><span style="color:#406080;">;</span>
    <span style="color:#200080;font-weight:bold;">if</span> <span style="color:#308080;">(</span><span style="color:#007d45;">$ARGV</span><span style="color:#308080;">[</span><span style="color:#008c00;">0</span><span style="color:#308080;">]</span> <span style="color:#308080;">eq</span> <span style="color:#1060b6;">"add"</span><span style="color:#308080;">)</span> <span style="color:#406080;">{</span>
    add<span style="color:#308080;">(</span><span style="color:#007d45;">$ARGV</span><span style="color:#308080;">[</span><span style="color:#008c00;">1</span><span style="color:#308080;">]</span><span style="color:#308080;">)</span><span style="color:#406080;">;</span>
    <span style="color:#406080;">}</span><span style="color:#406080;">;</span>
    <span style="color:#200080;font-weight:bold;">if</span> <span style="color:#308080;">(</span><span style="color:#007d45;">$ARGV</span><span style="color:#308080;">[</span><span style="color:#008c00;">0</span><span style="color:#308080;">]</span> <span style="color:#308080;">eq</span> <span style="color:#1060b6;">"del"</span><span style="color:#308080;">)</span> <span style="color:#406080;">{</span>
    del<span style="color:#308080;">(</span><span style="color:#007d45;">$ARGV</span><span style="color:#308080;">[</span><span style="color:#008c00;">1</span><span style="color:#308080;">]</span><span style="color:#308080;">)</span><span style="color:#406080;">;</span>
    <span style="color:#406080;">}</span><span style="color:#406080;">;</span>
<span style="color:#406080;">}</span>
</pre>
<p>И как это использовать.</p>
<pre>$ ipnotify
IPNotify usage:
ipnotify daemon | list | add &lt;host&gt; | del &lt;host&gt;
</pre>
<p>Все просто &#8211; четыре команды: запуск демона, показ списка отслеживаемых хостов, добавление хоста в список, удаление хоста из списка. Прежде всего надо запустить демона в фоне командой:</p>
<pre>$ ipnotify daemon
</pre>
<p>Демон запущен и готов обслуживать своего пользователя.</p>
<pre style="text-align:justify;">$ ipnotify list
no entries
</pre>
<p>Сейчас список пуст. Добавим в него хост.</p>
<pre>$ ipnotify add infomrk
1 hosts added to monitor list
</pre>
<p style="text-align:justify;">Через некоторое время демон проверит хост на живость и покажет уведомление:<br />
<a href="http://rigid.files.wordpress.com/2010/02/ipnotify.jpg"><img class="aligncenter size-full wp-image-72" title="ipnotify" src="http://rigid.files.wordpress.com/2010/02/ipnotify.jpg?w=380&#038;h=95" alt="" width="380" height="95" /></a>Интервал опроса хостов на живость &#8211; 60 секунд.  Если отпала необходимость мониторинга хоста, его можно удалить из списка:</p>
<pre style="text-align:justify;">$ ipnotify del infomrk
ok
</pre>
<p>При желании, любой более-менее разбирающийся в программировании сможет поправить исходник под себя: поправить таймауты и интервалы, изменить способ уведомления и т.д.</p>
<br /> Tagged: <a href='http://rigid.wordpress.com/tag/%d0%b0%d0%b4%d0%bc%d0%b8%d0%bd%d0%b8%d1%81%d1%82%d1%80%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5/'>администрирование</a>, <a href='http://rigid.wordpress.com/tag/linux/'>Linux</a>, <a href='http://rigid.wordpress.com/tag/perl/'>perl</a>, <a href='http://rigid.wordpress.com/tag/ping/'>ping</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rigid.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rigid.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/rigid.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/rigid.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/rigid.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/rigid.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/rigid.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/rigid.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/rigid.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/rigid.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/rigid.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/rigid.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/rigid.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/rigid.wordpress.com/71/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rigid.wordpress.com&amp;blog=3066028&amp;post=71&amp;subd=rigid&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://rigid.wordpress.com/2010/02/09/%d1%81%d0%ba%d1%80%d0%b8%d0%bf%d1%82-%d0%b4%d0%bb%d1%8f-%d0%be%d1%82%d1%81%d0%bb%d0%b5%d0%b6%d0%b8%d0%b2%d0%b0%d0%b8%d1%8f-%d0%bc%d0%b0%d1%88%d0%b8%d0%bd-%d0%b2-%d1%81%d0%b5%d1%82%d0%b8/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7483f2b33fb5a2831a70f7431492dcec?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">rigid</media:title>
		</media:content>

		<media:content url="http://rigid.files.wordpress.com/2010/02/ipnotify.jpg" medium="image">
			<media:title type="html">ipnotify</media:title>
		</media:content>
	</item>
		<item>
		<title>Виндобред</title>
		<link>http://rigid.wordpress.com/2010/02/08/%d0%b2%d0%b8%d0%bd%d0%b4%d0%be%d0%b1%d1%80%d0%b5%d0%b4/</link>
		<comments>http://rigid.wordpress.com/2010/02/08/%d0%b2%d0%b8%d0%bd%d0%b4%d0%be%d0%b1%d1%80%d0%b5%d0%b4/#comments</comments>
		<pubDate>Mon, 08 Feb 2010 09:29:53 +0000</pubDate>
		<dc:creator>rigid</dc:creator>
				<category><![CDATA[Работа]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[маразм]]></category>
		<category><![CDATA[microsoft]]></category>

		<guid isPermaLink="false">http://rigid.wordpress.com/?p=66</guid>
		<description><![CDATA[Как же достала меня майкрософт и винда с их дебильными самобытными &#171;стандартами&#187;. У нас корпоративный стандарт  &#8211; WinXP и почтовый клиент Outlook Express. Ставим пакет офис 2003 или 2007 &#8211; нате, распишитесь. Теперь клиент по умолчанию перебит на офисный Outlook. Для всех юзерских профилей. Ну да в принципе все привыкли к тому, что МС всегда [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rigid.wordpress.com&amp;blog=3066028&amp;post=66&amp;subd=rigid&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;">Как же достала меня майкрософт и винда с их дебильными самобытными &laquo;стандартами&raquo;. У нас корпоративный стандарт  &#8211; WinXP и почтовый клиент Outlook Express. Ставим пакет офис 2003 или 2007 &#8211; нате, распишитесь. Теперь клиент по умолчанию перебит на офисный Outlook. Для всех юзерских профилей. Ну да в принципе все привыкли к тому, что МС всегда себя считают единственными в мире ПО. Идем в юзерском профиле в настройку и меняем клиента почты обратно на OE. Винда охотно соглашается. Но не тут то было. Пока у админа в профиле стоит клиент почты Outlook &#8211; он будет у всех юзеров на машине.</p>
<p style="text-align:justify;">Скажите, а нахрена тогда вообще раздельные профили для юзеров придумали? Я думал для хранения персональных настроек, в том числе и предпочтений в плане используемого ПО.</p>
<br /> Tagged: <a href='http://rigid.wordpress.com/tag/%d0%bc%d0%b0%d1%80%d0%b0%d0%b7%d0%bc/'>маразм</a>, <a href='http://rigid.wordpress.com/tag/microsoft/'>microsoft</a>, <a href='http://rigid.wordpress.com/tag/windows/'>Windows</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rigid.wordpress.com/66/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rigid.wordpress.com/66/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/rigid.wordpress.com/66/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/rigid.wordpress.com/66/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/rigid.wordpress.com/66/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/rigid.wordpress.com/66/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/rigid.wordpress.com/66/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/rigid.wordpress.com/66/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/rigid.wordpress.com/66/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/rigid.wordpress.com/66/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/rigid.wordpress.com/66/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/rigid.wordpress.com/66/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/rigid.wordpress.com/66/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/rigid.wordpress.com/66/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rigid.wordpress.com&amp;blog=3066028&amp;post=66&amp;subd=rigid&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://rigid.wordpress.com/2010/02/08/%d0%b2%d0%b8%d0%bd%d0%b4%d0%be%d0%b1%d1%80%d0%b5%d0%b4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7483f2b33fb5a2831a70f7431492dcec?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">rigid</media:title>
		</media:content>
	</item>
		<item>
		<title>Керберос плющит</title>
		<link>http://rigid.wordpress.com/2010/01/21/%d0%ba%d0%b5%d1%80%d0%b1%d0%b5%d1%80%d0%be%d1%81-%d0%bf%d0%bb%d1%8e%d1%89%d0%b8%d1%82/</link>
		<comments>http://rigid.wordpress.com/2010/01/21/%d0%ba%d0%b5%d1%80%d0%b1%d0%b5%d1%80%d0%be%d1%81-%d0%bf%d0%bb%d1%8e%d1%89%d0%b8%d1%82/#comments</comments>
		<pubDate>Thu, 21 Jan 2010 06:50:34 +0000</pubDate>
		<dc:creator>rigid</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[администрирование]]></category>
		<category><![CDATA[Kerberos]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[сеть]]></category>

		<guid isPermaLink="false">http://rigid.wordpress.com/2010/01/21/%d0%ba%d0%b5%d1%80%d0%b1%d0%b5%d1%80%d0%be%d1%81-%d0%bf%d0%bb%d1%8e%d1%89%d0%b8%d1%82/</guid>
		<description><![CDATA[Керберос из нестабильной дебиановской ветки уже вторую неделю плющит. В стейбле лежит версия 1.6, в тестинг/анстейбле 1.8-альфа. Так вот эта альфа нивкакую не хочет стыковаться с виндосетью. Winbind не может авторизоваться в домене. Из-за этого файловый сервак с привязкой прав из домена не может выполнять свои обязанности. Причем регулярно появляются апдейты, но косяк не исчезает. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rigid.wordpress.com&amp;blog=3066028&amp;post=62&amp;subd=rigid&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;">Керберос из нестабильной дебиановской ветки уже вторую неделю плющит. В стейбле лежит версия 1.6, в тестинг/анстейбле 1.8-альфа. Так вот эта альфа нивкакую не хочет стыковаться с виндосетью. Winbind не может авторизоваться в домене. Из-за этого файловый сервак с привязкой прав из домена не может выполнять свои обязанности. Причем регулярно появляются апдейты, но косяк не исчезает.<br />
Откатил на 1.6 и захолдил до лучших времен.</p>
<br /> Tagged: администрирование, Kerberos, Linux, сеть <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rigid.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rigid.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/rigid.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/rigid.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/rigid.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/rigid.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/rigid.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/rigid.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/rigid.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/rigid.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/rigid.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/rigid.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/rigid.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/rigid.wordpress.com/62/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rigid.wordpress.com&amp;blog=3066028&amp;post=62&amp;subd=rigid&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://rigid.wordpress.com/2010/01/21/%d0%ba%d0%b5%d1%80%d0%b1%d0%b5%d1%80%d0%be%d1%81-%d0%bf%d0%bb%d1%8e%d1%89%d0%b8%d1%82/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7483f2b33fb5a2831a70f7431492dcec?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">rigid</media:title>
		</media:content>
	</item>
		<item>
		<title>А ларчик просто открывался</title>
		<link>http://rigid.wordpress.com/2010/01/20/%d0%b0-%d0%bb%d0%b0%d1%80%d1%87%d0%b8%d0%ba-%d0%bf%d1%80%d0%be%d1%81%d1%82%d0%be-%d0%be%d1%82%d0%ba%d1%80%d1%8b%d0%b2%d0%b0%d0%bb%d1%81%d1%8f/</link>
		<comments>http://rigid.wordpress.com/2010/01/20/%d0%b0-%d0%bb%d0%b0%d1%80%d1%87%d0%b8%d0%ba-%d0%bf%d1%80%d0%be%d1%81%d1%82%d0%be-%d0%be%d1%82%d0%ba%d1%80%d1%8b%d0%b2%d0%b0%d0%bb%d1%81%d1%8f/#comments</comments>
		<pubDate>Wed, 20 Jan 2010 04:43:01 +0000</pubDate>
		<dc:creator>rigid</dc:creator>
				<category><![CDATA[Linux/Unix]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://rigid.wordpress.com/?p=52</guid>
		<description><![CDATA[Некоторое время назад начал сталкиваться с проблемой. Суть проблемы: на удаленной машине стоит некая софтина, запущенная в screen&#8217;e. К машине подключаюсь через ssh. При попытке воздействия на софтину комбинацией клавиш Ctrl-s, сессия ssh вешалась намертво. Спасало лишь убиение ssh из соседней консоли. При этом удаленная софтина так и не получала комбинацию клавиш. Приходилось лезть к [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rigid.wordpress.com&amp;blog=3066028&amp;post=52&amp;subd=rigid&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;">Некоторое время назад начал сталкиваться с проблемой. Суть проблемы: на удаленной машине стоит некая софтина, запущенная в screen&#8217;e. К машине подключаюсь через ssh. При попытке воздействия на софтину комбинацией клавиш Ctrl-s, сессия ssh вешалась намертво. Спасало лишь убиение ssh из соседней консоли. При этом удаленная софтина так и не получала комбинацию клавиш. Приходилось лезть к ней через веб-морду.</p>
<p style="text-align:justify;">Сегодня в очередной раз обломашись, решил наконец нагуглить решение. Оно пришло в первых же ссылках. Корень зла оказался в программном управлении потоком. Комбинация Ctrl-s останавливает поток. Разморозить его обратно поможет комбинация Ctrl-q.</p>
<p style="text-align:justify;">Но при этом до удаленной стороны так и не дойдет, что какая-то клавиша была нажата &#8211; управляющее воздействие не будет воспринято софтом. Чтобы решить проблему, надо после подключения к удаленной машине выполнить команду:</p>
<pre>stty -ixon -ixoff
</pre>
<p>Я прописал эту строчку в bashrc на удаленной машине, для автоматического срабатывания. Проблема решена.</p>
<p style="text-align:justify;">
<br /> Tagged: Linux, ssh <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rigid.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rigid.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/rigid.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/rigid.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/rigid.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/rigid.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/rigid.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/rigid.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/rigid.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/rigid.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/rigid.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/rigid.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/rigid.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/rigid.wordpress.com/52/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rigid.wordpress.com&amp;blog=3066028&amp;post=52&amp;subd=rigid&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://rigid.wordpress.com/2010/01/20/%d0%b0-%d0%bb%d0%b0%d1%80%d1%87%d0%b8%d0%ba-%d0%bf%d1%80%d0%be%d1%81%d1%82%d0%be-%d0%be%d1%82%d0%ba%d1%80%d1%8b%d0%b2%d0%b0%d0%bb%d1%81%d1%8f/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7483f2b33fb5a2831a70f7431492dcec?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">rigid</media:title>
		</media:content>
	</item>
		<item>
		<title>Пример настройки Linux-based точки доступа WiFi на дешевой карте</title>
		<link>http://rigid.wordpress.com/2010/01/13/%d0%bf%d1%80%d0%b8%d0%bc%d0%b5%d1%80-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b8-linux-based-%d1%82%d0%be%d1%87%d0%ba%d0%b8-%d0%b4%d0%be%d1%81%d1%82%d1%83%d0%bf%d0%b0-wifi-%d0%bd%d0%b0/</link>
		<comments>http://rigid.wordpress.com/2010/01/13/%d0%bf%d1%80%d0%b8%d0%bc%d0%b5%d1%80-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b8-linux-based-%d1%82%d0%be%d1%87%d0%ba%d0%b8-%d0%b4%d0%be%d1%81%d1%82%d1%83%d0%bf%d0%b0-wifi-%d0%bd%d0%b0/#comments</comments>
		<pubDate>Wed, 13 Jan 2010 06:01:07 +0000</pubDate>
		<dc:creator>rigid</dc:creator>
				<category><![CDATA[Сети]]></category>
		<category><![CDATA[Linux/Unix]]></category>
		<category><![CDATA[администрирование]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[сеть]]></category>
		<category><![CDATA[WiFi]]></category>

		<guid isPermaLink="false">http://rigid.wordpress.com/?p=46</guid>
		<description><![CDATA[Еще осенью получил в наследство старый системник на базе Pentium III. Сделал из системника домашний сервер-роутер под  Debian Linux для раздачи инета, качания торрентов и т.п. В том числе, хотелось раздавать по квартире беспроводную сеть. Для этого была куплена недорогая вайфай-карта от D-Link на базе чипа Ralink RT2561/R61. Но настройка оказалась не такой тривиальной, как [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rigid.wordpress.com&amp;blog=3066028&amp;post=46&amp;subd=rigid&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Еще осенью получил в наследство старый системник на базе Pentium III. Сделал из системника домашний сервер-роутер под  Debian Linux для раздачи инета, качания торрентов и т.п. В том числе, хотелось раздавать по квартире беспроводную сеть. Для этого была куплена недорогая вайфай-карта от D-Link на базе чипа Ralink RT2561/R61. Но настройка оказалась не такой тривиальной, как хотелось.</p>
<p><span id="more-46"></span>Началось все с того, что карта наотрез отказывалась включать режим Master, жалуясь, что совсем не знает об этом режиме. Подолбавшись с этим около часа, решил плюнуть и настроить сеть в режиме Ad-Hoc &#8211; мы не гордые. В этом режиме карта завелась сразу, но тут в позу встал мой ноут с интеловским адаптером iwl3945. Эта железяка упорно не хотела работать в  Ad-Hoc. В пору было отчаиваться. В форумах нагуглил посты о том, что сам чип rt61 умеет работать в Master &#8211; это DLink урезал функционал дешевого устройства средствами firmware. Поэкспериментировал с различными версиями firmware из репозитория дебиана &#8211; ничего путного не получилось. Режим Master я получил, но работало все очень нестабильно.  Часы дальнейшего гугления дали свои результаты &#8211; нашелся пакет альтернативных драйверов для беспроводных адаптеров под Линукс &#8211; Compat Wireless. Страница для скачивания: <a href="http://wireless.kernel.org/en/users/Download">http://wireless.kernel.org/en/users/Download</a>. Для сборки стабильного релиза пришлось накатить ядро из нестабильной ветки дебиана, т.к. в стабильной все еще 2.6.26.</p>
<p>А теперь чуть поподробней про установку и настройку.</p>
<ol>
<li>Первым делом надо установить драйвер. Кстати, для этого необходимо иметь установленный пакет с заголовками от ядра &#8211; называется пакет linux-headers-2.6-686. Скачиваем архив с драйверами с указанного выше адреса. Распаковываем и делаем make в каталоге, куда распаковали. Ждем, пока все модули соберутся. Затем делаем make install и наблюдаем за процессом установки модулей-драйверов. Модули ставятся в папку /lib/modules/версия_ядра/updates, так что их можно потом спокойно удалить, если что. В процессе установки скрипт сделает depmod, что сделает свежеустановленные модули более приоритетными. После этого можно сделать update-initramfs -u, что добавит эти драйверы в загрузочный образ.После этого можно перегрузить машину. Все, у нас новые драйвера.  Кстати, перацию по пересборке драйверов придется выполнять после каждого обновления или апгрейда ядра. Для пересборки нужно зайти в каталог с исходниками драйверов и выполнить make clean &amp;&amp; make &amp;&amp; make install.</li>
<li>Для обслуживания беспроводной сети нужен софт, называющийся hostapd. Для корректной работы требуется версия из нестабильной ветки дебиана, а именно 0.6.9. Именно в этой версии добавили поддержку стандартного драйвера nl80211, то есть для любой вайфайной карты, а не только Atheros. На какие настройки стоит обратить внимание при конфигурировании hostapd:
<ul>
<li>interface=wlan0 &#8211; интерфейс беспроводной сети</li>
<li>bridge=br0 &#8211; беспроводная сеть объединена в бридж с проводной локалкой</li>
<li>driver=nl80211 &#8211; выбран стандартный драйвер беспроводных карточек</li>
<li>ssid=rigid &#8211; имя беспроводной сети</li>
<li>country_code=RU &#8211; код страны определяет диапазон используемых каналов и ряд других правил</li>
<li>hw_mode=g &#8211; режим работы сети</li>
<li>channel=5 &#8211; выбранный канал (частота)</li>
<li>macaddr_acl=1 управление доступом к беспроводной сети по мак-адресам</li>
<li>accept_mac_file=/etc/hostapd/hostapd.accept &#8211; белый список мак-адресов. все, ктоне попал в этот список не смогут подключиться к сети</li>
</ul>
<p>Есть еще куча настроек, в том числе и шифрование, но я не стал его включать. Итак достаточно защит</li>
<li>Итак, hostapd предоставит беспроводную сеть, но надо выдать IP-адреса и другие сетевые настройки беспроводным и проводным пользователям. Этим у меня занимается dnsmasq. Эта программа так же есть в составе репозитория дебиан. Настраивается все достаточно просто. Вот ключевые параметры:
<ul>
<li>no-resolv &#8211; не используем файл  /etc/resolv.conf, днс-сервера укажем вручную</li>
<li>server=x.y.z.a &#8211; днс-сервер, к которому буду перенаправлены запросы. можно указывать не один раз, если серверов много</li>
<li>local=/local/ &#8211; суффикс локального домена, имена из которого будут искаться в /etc/hosts</li>
<li>interface=br0 &#8211; интерфейс, на котором слушать</li>
<li>domain=local &#8211; домен, который отдаем юзерам</li>
<li>dhcp-range=192.168.254.2,192.168.254.254,255.255.255.0,12h &#8211; диапазон локальных адресов и время аренды</li>
<li>dhcp-host=мак-адрес,айпи-адрес &#8211; конкретная привязка айпи к маку</li>
<li>dhcp-host=мак-адрес &#8211; просто указываем что этот мак &laquo;свой&raquo;</li>
<li>dhcp-option=option:router,192.168.254.1 &#8211; шлюз по умолчанию</li>
<li>dhcp-ignore=#known &#8211; игнорировать запросы от неизвестных мак-адресов &#8211; дополнительная защита от левых халявщиков</li>
</ul>
</li>
</ol>
<p>Все, система готова к раздаче инета. Естественно, чтобы все это заработало, надо настроить соединение с инетом, тем способом, каким предполагает провайдер и настроить NAT средствами iptables.</p>
<br /> Tagged: администрирование, Linux, сеть, WiFi <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rigid.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rigid.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/rigid.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/rigid.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/rigid.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/rigid.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/rigid.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/rigid.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/rigid.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/rigid.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/rigid.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/rigid.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/rigid.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/rigid.wordpress.com/46/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rigid.wordpress.com&amp;blog=3066028&amp;post=46&amp;subd=rigid&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://rigid.wordpress.com/2010/01/13/%d0%bf%d1%80%d0%b8%d0%bc%d0%b5%d1%80-%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b9%d0%ba%d0%b8-linux-based-%d1%82%d0%be%d1%87%d0%ba%d0%b8-%d0%b4%d0%be%d1%81%d1%82%d1%83%d0%bf%d0%b0-wifi-%d0%bd%d0%b0/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7483f2b33fb5a2831a70f7431492dcec?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">rigid</media:title>
		</media:content>
	</item>
		<item>
		<title>Этика и качество программирования</title>
		<link>http://rigid.wordpress.com/2009/12/08/%d1%8d%d1%82%d0%b8%d0%ba%d0%b0-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d1%8f-%d0%ba%d0%b0%d1%87%d0%b5%d1%81%d1%82%d0%b2%d0%be-%d0%bf%d1%80%d0%be/</link>
		<comments>http://rigid.wordpress.com/2009/12/08/%d1%8d%d1%82%d0%b8%d0%ba%d0%b0-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d1%8f-%d0%ba%d0%b0%d1%87%d0%b5%d1%81%d1%82%d0%b2%d0%be-%d0%bf%d1%80%d0%be/#comments</comments>
		<pubDate>Tue, 08 Dec 2009 04:58:33 +0000</pubDate>
		<dc:creator>rigid</dc:creator>
				<category><![CDATA[Программирование]]></category>
		<category><![CDATA[Работа]]></category>
		<category><![CDATA[профессионализм]]></category>
		<category><![CDATA[разработка]]></category>

		<guid isPermaLink="false">http://rigid.wordpress.com/?p=40</guid>
		<description><![CDATA[Периодически приходится править чужие исходники. Как правило, это работы людей, которые либо уже уволились, либо заняты в данный момент какой-то приоритетной работой. Хочется поделиться с читателями накипевшим &#8211; такого насмотришься, зла не хватает. Ладно, черт бы с ними комментариями в коде. Сам пишу без комментариев, лишь потом, позже проставляю краткие комментарии о назначении того или [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rigid.wordpress.com&amp;blog=3066028&amp;post=40&amp;subd=rigid&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Периодически приходится править чужие исходники. Как правило, это работы людей, которые либо уже уволились, либо заняты в данный момент какой-то приоритетной работой. Хочется поделиться с читателями накипевшим &#8211; такого насмотришься, зла не хватает.</p>
<p>Ладно, черт бы с ними комментариями в коде. Сам пишу без комментариев, лишь потом, позже проставляю краткие комментарии о назначении того или иного куска кода. Я готов даже простить коллегам кривое форматирование кода &#8211; не у всех есть чувство эстетики программирования, когда код приятно читать.<br />
Что бесит меня больше всего, так это абсолютно безымянные переменные и контролы. За что отвечает Edit19, кто-нибудь  может сходу сказать? Правильно, надо отвлекаться, лезть на форму, читать подпись к едиту. А подписи еще не всегда бывают информативны в плане функционала, ибо их часто придумывают пользователи. Это очень неприятно, неудобно, некрасиво. Ну неужели самому не приятно назвать переменную или переименовать контрол во что-нибудь осмысленное? И самому потом же проще будет вспоминать, чего понаписал.</p>
<p>И еще один момент, который пострашнее всякого неэтичного программирования. Отношение к разработке, как к халтуре. Халтурное проектирование БД. Халтурное программирование. Входные данные нигде и никак не проверяются. Просто берется текст из едита и пихается в базу &#8211; пофигу, текстовое поле в базе или числовое. В итоге процесс вода данных сопровождается букетом исключений. Но самый прикол начинается, когда я беру такую разработку и начинаю прикручивать к ней отчет. Я то предполагаю, что в базе лежат уже валидные данные.А потом юзер звонит и говорит что мой отчет неправильно работает,. и мы начинаем сидеть вместе с юзером по уши в отладчике и в SQL, ищем косяки в данных.</p>
<p>Вот мне было бы стыдно сдавать проекты с таким качеством. Это просто непрофессионально. А между прочим. товарищи, пишущие такое с пафосом рассказывают, что они закончили МГТУ &#8211; это, мол, не то что там какой-то МаГУ,. Вот в горном, мол, готовят настоящих квалифицированных программистов, а не учителей информатики.</p>
<p>Обидно за себя, за отдел, за профессию.</p>
<br /> Tagged: Программирование, Работа, профессионализм, разработка <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rigid.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rigid.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/rigid.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/rigid.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/rigid.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/rigid.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/rigid.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/rigid.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/rigid.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/rigid.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/rigid.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/rigid.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/rigid.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/rigid.wordpress.com/40/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rigid.wordpress.com&amp;blog=3066028&amp;post=40&amp;subd=rigid&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://rigid.wordpress.com/2009/12/08/%d1%8d%d1%82%d0%b8%d0%ba%d0%b0-%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d1%8f-%d0%ba%d0%b0%d1%87%d0%b5%d1%81%d1%82%d0%b2%d0%be-%d0%bf%d1%80%d0%be/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7483f2b33fb5a2831a70f7431492dcec?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">rigid</media:title>
		</media:content>
	</item>
		<item>
		<title>Подвижки в проекте АРМ</title>
		<link>http://rigid.wordpress.com/2009/11/16/%d0%bf%d0%be%d0%b4%d0%b2%d0%b8%d0%b6%d0%ba%d0%b8-%d0%b2-%d0%bf%d1%80%d0%be%d0%b5%d0%ba%d1%82%d0%b5-%d0%b0%d1%80%d0%bc/</link>
		<comments>http://rigid.wordpress.com/2009/11/16/%d0%bf%d0%be%d0%b4%d0%b2%d0%b8%d0%b6%d0%ba%d0%b8-%d0%b2-%d0%bf%d1%80%d0%be%d0%b5%d0%ba%d1%82%d0%b5-%d0%b0%d1%80%d0%bc/#comments</comments>
		<pubDate>Mon, 16 Nov 2009 03:45:17 +0000</pubDate>
		<dc:creator>rigid</dc:creator>
				<category><![CDATA[Веб]]></category>
		<category><![CDATA[Работа]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[АРМ]]></category>
		<category><![CDATA[Галактика]]></category>

		<guid isPermaLink="false">http://rigid.wordpress.com/?p=37</guid>
		<description><![CDATA[Наконец все сдивнулось с мертвой точки в проекте &#171;АРМ руководителя&#187;. Как уже писалось, мне поручили развитие и поддержку этого проекта. И задача номер один &#8211; разработать отчет &#171;Суточный рапорт&#187;. Этот отчет уже работает &#8211; разработан и функционирует внутри КИС &#171;Галактика&#187; (на языке Атлантис или VIP). Для его формирования нужно произвести достаточно много настроечных телодвижений &#8211; [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rigid.wordpress.com&amp;blog=3066028&amp;post=37&amp;subd=rigid&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Наконец все сдивнулось с мертвой точки в проекте &laquo;АРМ руководителя&raquo;. Как уже писалось, мне поручили развитие и поддержку этого проекта. И задача номер один &#8211; разработать отчет &laquo;Суточный рапорт&raquo;. Этот отчет уже работает &#8211; разработан и функционирует внутри КИС &laquo;Галактика&raquo; (на языке Атлантис или VIP). Для его формирования нужно произвести достаточно много настроечных телодвижений &#8211; отчет достаточно нетривиальный и одним селектом его не сформировать. Суть отчета вот в чем. Собираются все накладные за заданный период времени (как правило, за прошедшие сутки). Строчки из этих накладных по большому количеству правил разбираются и раскидываются по дереву аналитик. Отчет показывает, как отработал завод по отдельным характеристикам относительно плана. Это вкратце.</p>
<p>Полезность отчета для топ-менеджера очевидна. Но существующая разработка совсем не годится для использования руководителями.<br />
Во-первых, топ-менеджер не хочет заморачиваться с изучением КИС. Ему нужно нажать на кнопку и получить информацию. Это правильно.<br />
Во-вторых, по той же причине нужно переработать интерфейс. Руководителю не интересны десятки настроек отчета. Максимум &#8211; период времени.<br />
В-третьих, нужна интеграция с уже существующим АРМом, а это Java EE. Атлантис нам совершенно не подходит.</p>
<p>Итак, я начал разрабатывать отчет практически с нуля. Самое неудобное заключается в том, что никто на заводе не в состоянии дать более-менее детальное и точное опеределение, что требуется от отчета. Разработкой под КИС занимался человек, который сейчас пытается меня консультировать. Поскольку в перспективе есть вероятность перехода на новую версию КИС, где можно будет пользоваться процедурами на PL/SQL, решили сделать общий пакет процедур, который в будущем можно будет использовать и из КИС. Но сказывается разница в подходах. У его разработки нет интерактивности. Настроил отчет, нажал на кнопку, получил на выходе отчет и система забывает о том, что формировала его. У меня ситуация иная. Руководитель должен иметь возможность по щелчку мыши углубляться в данные, все больше увеличивая детализацию отчета. Это означает, что система должна сохранять свое состояние  между запросами. При этом стоит учесть, что системой сможет воспользоваться несколько человек одновременно.</p>
<p>Как все это увязать &#8211; думаем сейчас напару. Радует, что работа сдвинулась с мертвой точки.</p>
<br /> Tagged: АРМ, Веб, Галактика, Работа, Java <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rigid.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rigid.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/rigid.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/rigid.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/rigid.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/rigid.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/rigid.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/rigid.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/rigid.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/rigid.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/rigid.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/rigid.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/rigid.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/rigid.wordpress.com/37/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rigid.wordpress.com&amp;blog=3066028&amp;post=37&amp;subd=rigid&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://rigid.wordpress.com/2009/11/16/%d0%bf%d0%be%d0%b4%d0%b2%d0%b8%d0%b6%d0%ba%d0%b8-%d0%b2-%d0%bf%d1%80%d0%be%d0%b5%d0%ba%d1%82%d0%b5-%d0%b0%d1%80%d0%bc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7483f2b33fb5a2831a70f7431492dcec?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">rigid</media:title>
		</media:content>
	</item>
		<item>
		<title>Модификация скрипта NetMon</title>
		<link>http://rigid.wordpress.com/2009/10/14/%d0%bc%d0%be%d0%b4%d0%b8%d1%84%d0%b8%d0%ba%d0%b0%d1%86%d0%b8%d1%8f-%d1%81%d0%ba%d1%80%d0%b8%d0%bf%d1%82%d0%b0-netmon/</link>
		<comments>http://rigid.wordpress.com/2009/10/14/%d0%bc%d0%be%d0%b4%d0%b8%d1%84%d0%b8%d0%ba%d0%b0%d1%86%d0%b8%d1%8f-%d1%81%d0%ba%d1%80%d0%b8%d0%bf%d1%82%d0%b0-netmon/#comments</comments>
		<pubDate>Wed, 14 Oct 2009 03:20:22 +0000</pubDate>
		<dc:creator>rigid</dc:creator>
				<category><![CDATA[Работа]]></category>
		<category><![CDATA[Сети]]></category>
		<category><![CDATA[Linux/Unix]]></category>
		<category><![CDATA[администрирование]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[netmon]]></category>
		<category><![CDATA[сеть]]></category>
		<category><![CDATA[perl]]></category>

		<guid isPermaLink="false">http://rigid.wordpress.com/?p=25</guid>
		<description><![CDATA[Сегодня с утра модифицировал свой скрипт мониторинга сети. Что сделал: Увеличил число посылаемых пингов до 5 Добавил вывод сообщений о качестве связи &#8211; не только UP/DOWN а еще и количество удачных пингов Чем это полезно. Сегодня с утра лежал один из узлов. Причем не просто лежал, а вроде как бы работал, но с большими потерями [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rigid.wordpress.com&amp;blog=3066028&amp;post=25&amp;subd=rigid&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Сегодня с утра модифицировал свой скрипт мониторинга сети. Что сделал:</p>
<ol>
<li>Увеличил число посылаемых пингов до 5</li>
<li>Добавил вывод сообщений о качестве связи &#8211; не только UP/DOWN а еще и количество удачных пингов</li>
</ol>
<p>Чем это полезно. Сегодня с утра лежал один из узлов. Причем не просто лежал, а вроде как бы работал, но с большими потерями на линке. Старая версия скрипта не детектила такое состояние. А было бы полезно узать, в какой момент начались проблемы. Теперь эта информация пишется в лог и выводится через libnotify.</p>
<p><span id="more-25"></span>Итоговый скрипт:</p>
<pre style="color:#000000;background:#ffffff;"><span style="color:#696969;">#!/usr/bin/perl</span>

<span style="color:#696969;"># -- Netmon script by Sergei Shakshin</span>

<span style="color:#800000;font-weight:bold;">use</span> <span style="color:#800000;font-weight:bold;">strict</span><span style="color:#800080;">;</span>
<span style="color:#800000;font-weight:bold;">use</span> DateTime<span style="color:#800080;">;</span>
<span style="color:#800000;font-weight:bold;">use</span> <span style="color:#bb7977;font-weight:bold;">Net::Ping::External</span> <span style="color:#800000;font-weight:bold;">qw</span><span style="color:#800000;">(</span><span style="color:#0000e6;">ping</span><span style="color:#800000;">)</span><span style="color:#800080;">;</span>

<span style="color:#696969;"># --- Script configuration</span>

<span style="color:#800000;font-weight:bold;">my</span> $tries <span style="color:#808030;">=</span> <span style="color:#008c00;">5</span><span style="color:#800080;">;</span> <span style="color:#696969;"># Ping retries</span>
<span style="color:#800000;font-weight:bold;">my</span> $timeout <span style="color:#808030;">=</span> <span style="color:#008c00;">5</span><span style="color:#800080;">;</span> <span style="color:#696969;"># Ping timeout (in seconds)</span>
<span style="color:#800000;font-weight:bold;">my</span> $interval <span style="color:#808030;">=</span> <span style="color:#008c00;">5</span><span style="color:#800080;">;</span> <span style="color:#696969;"># Interval (in minutes) between checks</span>

<span style="color:#800000;font-weight:bold;">my</span> $logfile <span style="color:#808030;">=</span> <span style="color:#0000e6;">"/home/rigid/log/netmon.log"</span><span style="color:#800080;">;</span> <span style="color:#696969;"># Log file</span>

<span style="color:#800000;font-weight:bold;">my</span> %hosts <span style="color:#808030;">=</span> <span style="color:#808030;">(</span>
    <span style="color:#0000e6;">"host1"</span>     <span style="color:#808030;">=</span><span style="color:#808030;">&gt;</span> <span style="color:#0000e6;">"</span><span style="color:#008000;">10.0</span><span style="color:#0000e6;">.</span><span style="color:#008000;">0.1</span><span style="color:#0000e6;">"</span><span style="color:#808030;">,</span>
    <span style="color:#0000e6;">"host2"</span>     <span style="color:#808030;">=</span><span style="color:#808030;">&gt;</span> <span style="color:#0000e6;">"</span><span style="color:#008000;">10.0</span><span style="color:#0000e6;">.</span><span style="color:#008000;">0.2</span><span style="color:#0000e6;">"</span><span style="color:#808030;">,</span>
<span style="color:#808030;">)</span><span style="color:#800080;">;</span>

<span style="color:#696969;"># --- End of configuration. Stop edit here.</span>
<span style="color:#800000;font-weight:bold;">my</span> $dt <span style="color:#808030;">=</span> DateTime<span style="color:#808030;">-&gt;</span>now<span style="color:#808030;">-&gt;</span>set_time_zone<span style="color:#808030;">(</span> <span style="color:#0000e6;">'Asia/Yekaterinburg'</span> <span style="color:#808030;">)</span><span style="color:#800080;">;</span>
<span style="color:#800000;font-weight:bold;">my</span> $ltime <span style="color:#808030;">=</span> $dt<span style="color:#808030;">-&gt;</span>strftime<span style="color:#808030;">(</span><span style="color:#0000e6;">"</span><span style="color:#007997;">%d</span><span style="color:#0000e6;"> </span><span style="color:#007997;">%b</span><span style="color:#0000e6;"> %Y, %H:%M:%S"</span><span style="color:#808030;">)</span><span style="color:#800080;">;</span>
<span style="color:#800000;font-weight:bold;">open</span><span style="color:#808030;">(</span>LF<span style="color:#808030;">,</span> <span style="color:#0000e6;">"&gt;&gt;"</span><span style="color:#808030;">.</span>$logfile<span style="color:#808030;">)</span><span style="color:#800080;">;</span>
<span style="color:#800000;font-weight:bold;">print</span> LF <span style="color:#0000e6;">"[ </span><span style="color:#0000e6;">$ltime</span><span style="color:#0000e6;"> ] ----------- new netmon session started ----------</span><span style="color:#0f69ff;">\n</span><span style="color:#0000e6;">"</span><span style="color:#800080;">;</span>
<span style="color:#800000;font-weight:bold;">close</span><span style="color:#808030;">(</span>LF<span style="color:#808030;">)</span><span style="color:#800080;">;</span>

<span style="color:#800000;font-weight:bold;">my</span> %state <span style="color:#808030;">=</span> <span style="color:#808030;">(</span><span style="color:#808030;">)</span><span style="color:#800080;">;</span>
<span style="color:#800000;font-weight:bold;">while</span> <span style="color:#808030;">(</span><span style="color:#800000;font-weight:bold;">my</span> <span style="color:#808030;">(</span>$name<span style="color:#808030;">,</span> $ip<span style="color:#808030;">)</span> <span style="color:#808030;">=</span> <span style="color:#800000;font-weight:bold;">each</span><span style="color:#808030;">(</span>%hosts<span style="color:#808030;">)</span><span style="color:#808030;">)</span> <span style="color:#800080;">{</span>
    $state<span style="color:#800080;">{</span>$name<span style="color:#800080;">}</span> <span style="color:#808030;">=</span> <span style="color:#0000e6;">"UP"</span><span style="color:#800080;">;</span>
<span style="color:#800080;">}</span>
<span style="color:#800000;font-weight:bold;">my</span> %q <span style="color:#808030;">=</span> <span style="color:#808030;">(</span><span style="color:#808030;">)</span><span style="color:#800080;">;</span>
<span style="color:#800000;font-weight:bold;">while</span> <span style="color:#808030;">(</span><span style="color:#800000;font-weight:bold;">my</span> <span style="color:#808030;">(</span>$name<span style="color:#808030;">,</span> $ip<span style="color:#808030;">)</span> <span style="color:#808030;">=</span> <span style="color:#800000;font-weight:bold;">each</span><span style="color:#808030;">(</span>%hosts<span style="color:#808030;">)</span><span style="color:#808030;">)</span> <span style="color:#800080;">{</span>
    $q<span style="color:#800080;">{</span>$name<span style="color:#800080;">}</span> <span style="color:#808030;">=</span> <span style="color:#008c00;">5</span><span style="color:#800080;">;</span>
<span style="color:#800080;">}</span>

<span style="color:#800000;font-weight:bold;">while</span> <span style="color:#808030;">(</span><span style="color:#808030;">)</span> <span style="color:#800080;">{</span>
    <span style="color:#800000;font-weight:bold;">open</span><span style="color:#808030;">(</span>LF<span style="color:#808030;">,</span> <span style="color:#0000e6;">"&gt;&gt;"</span><span style="color:#808030;">.</span>$logfile<span style="color:#808030;">)</span><span style="color:#800080;">;</span>
    <span style="color:#800000;font-weight:bold;">my</span> @uphosts <span style="color:#808030;">=</span> <span style="color:#808030;">(</span><span style="color:#808030;">)</span><span style="color:#800080;">;</span>
    <span style="color:#800000;font-weight:bold;">my</span> @downhosts <span style="color:#808030;">=</span> <span style="color:#808030;">(</span><span style="color:#808030;">)</span><span style="color:#800080;">;</span>

    <span style="color:#800000;font-weight:bold;">my</span> %chq <span style="color:#808030;">=</span> <span style="color:#808030;">(</span><span style="color:#808030;">)</span><span style="color:#800080;">;</span>

    <span style="color:#800000;font-weight:bold;">while</span> <span style="color:#808030;">(</span><span style="color:#800000;font-weight:bold;">my</span> <span style="color:#808030;">(</span>$name<span style="color:#808030;">,</span> $ip<span style="color:#808030;">)</span> <span style="color:#808030;">=</span> <span style="color:#800000;font-weight:bold;">each</span><span style="color:#808030;">(</span>%hosts<span style="color:#808030;">)</span><span style="color:#808030;">)</span> <span style="color:#800080;">{</span>
        <span style="color:#800000;font-weight:bold;">my</span> $cnt <span style="color:#808030;">=</span> <span style="color:#008c00;">0</span><span style="color:#800080;">;</span>
        <span style="color:#800000;font-weight:bold;">for</span> <span style="color:#808030;">(</span><span style="color:#800000;font-weight:bold;">my</span> $i <span style="color:#808030;">=</span> <span style="color:#008c00;">1</span><span style="color:#800080;">;</span> $i <span style="color:#808030;">&lt;</span><span style="color:#808030;">=</span> $tries<span style="color:#800080;">;</span> $i<span style="color:#808030;">+</span><span style="color:#808030;">+</span><span style="color:#808030;">)</span> <span style="color:#800080;">{</span>
            <span style="color:#800000;font-weight:bold;">if</span> <span style="color:#808030;">(</span>ping<span style="color:#808030;">(</span>hostname <span style="color:#808030;">=</span><span style="color:#808030;">&gt;</span> $ip<span style="color:#808030;">,</span> timeout <span style="color:#808030;">=</span><span style="color:#808030;">&gt;</span> $timeout<span style="color:#808030;">)</span><span style="color:#808030;">)</span> <span style="color:#800080;">{</span>
                $cnt<span style="color:#808030;">+</span><span style="color:#808030;">+</span><span style="color:#800080;">;</span>
            <span style="color:#800080;">}</span>
        <span style="color:#800080;">}</span>
        <span style="color:#800000;font-weight:bold;">if</span> <span style="color:#808030;">(</span>$cnt <span style="color:#808030;">=</span><span style="color:#808030;">=</span> <span style="color:#008c00;">0</span><span style="color:#808030;">)</span> <span style="color:#800080;">{</span>
            <span style="color:#800000;font-weight:bold;">if</span> <span style="color:#808030;">(</span>$state<span style="color:#800080;">{</span>$name<span style="color:#800080;">}</span> <span style="color:#808030;">eq</span> <span style="color:#0000e6;">"UP"</span><span style="color:#808030;">)</span> <span style="color:#800080;">{</span>
                $state<span style="color:#800080;">{</span>$name<span style="color:#800080;">}</span> <span style="color:#808030;">=</span> <span style="color:#0000e6;">"DOWN"</span><span style="color:#800080;">;</span>
                <span style="color:#800000;font-weight:bold;">push</span><span style="color:#808030;">(</span>@downhosts<span style="color:#808030;">,</span> $name<span style="color:#808030;">)</span><span style="color:#800080;">;</span>
            <span style="color:#800080;">}</span>
        <span style="color:#800080;">}</span> <span style="color:#800000;font-weight:bold;">else</span> <span style="color:#800080;">{</span>
            <span style="color:#800000;font-weight:bold;">if</span> <span style="color:#808030;">(</span>$state<span style="color:#800080;">{</span>$name<span style="color:#800080;">}</span> <span style="color:#808030;">eq</span> <span style="color:#0000e6;">"DOWN"</span><span style="color:#808030;">)</span> <span style="color:#800080;">{</span>
                $state<span style="color:#800080;">{</span>$name<span style="color:#800080;">}</span> <span style="color:#808030;">=</span> <span style="color:#0000e6;">"UP"</span><span style="color:#800080;">;</span>
                <span style="color:#800000;font-weight:bold;">push</span><span style="color:#808030;">(</span>@uphosts<span style="color:#808030;">,</span> $name<span style="color:#808030;">)</span><span style="color:#800080;">;</span>
            <span style="color:#800080;">}</span>
        <span style="color:#800080;">}</span>

        <span style="color:#800000;font-weight:bold;">if</span> <span style="color:#808030;">(</span>$q<span style="color:#800080;">{</span>$name<span style="color:#800080;">}</span> <span style="color:#808030;">!</span><span style="color:#808030;">=</span> $cnt<span style="color:#808030;">)</span> <span style="color:#800080;">{</span>
            $chq<span style="color:#800080;">{</span>$name<span style="color:#800080;">}</span> <span style="color:#808030;">=</span> $cnt<span style="color:#800080;">;</span>
            $q<span style="color:#800080;">{</span>$name<span style="color:#800080;">}</span> <span style="color:#808030;">=</span> $cnt<span style="color:#800080;">;</span>
        <span style="color:#800080;">}</span>
    <span style="color:#800080;">}</span>

    <span style="color:#800000;font-weight:bold;">my</span> $dt <span style="color:#808030;">=</span> DateTime<span style="color:#808030;">-&gt;</span>now<span style="color:#808030;">-&gt;</span>set_time_zone<span style="color:#808030;">(</span> <span style="color:#0000e6;">'Asia/Yekaterinburg'</span> <span style="color:#808030;">)</span><span style="color:#800080;">;</span>

    <span style="color:#800000;font-weight:bold;">my</span> $ltime <span style="color:#808030;">=</span> $dt<span style="color:#808030;">-&gt;</span>strftime<span style="color:#808030;">(</span><span style="color:#0000e6;">"</span><span style="color:#007997;">%d</span><span style="color:#0000e6;"> </span><span style="color:#007997;">%b</span><span style="color:#0000e6;"> %Y, %H:%M:%S"</span><span style="color:#808030;">)</span><span style="color:#800080;">;</span>
    <span style="color:#800000;font-weight:bold;">if</span> <span style="color:#808030;">(</span><span style="color:#800000;font-weight:bold;">scalar</span><span style="color:#808030;">(</span>@uphosts<span style="color:#808030;">)</span> <span style="color:#808030;">&gt;</span> <span style="color:#008c00;">0</span><span style="color:#808030;">)</span> <span style="color:#800080;">{</span>
        <span style="color:#800000;font-weight:bold;">my</span> $lst <span style="color:#808030;">=</span> <span style="color:#800000;font-weight:bold;">join</span><span style="color:#808030;">(</span><span style="color:#0000e6;">", "</span><span style="color:#808030;">,</span> @uphosts<span style="color:#808030;">)</span><span style="color:#800080;">;</span>
        <span style="color:#0000e6;background:#ffffe8;">`</span><span style="color:#000000;background:#ffffe8;">notify-send -u normal NetMon "Восстановилась связь с </span><span style="color:#000000;background:#ffffe8;">$lst</span><span style="color:#000000;background:#ffffe8;">"</span><span style="color:#0000e6;background:#ffffe8;">`</span><span style="color:#800080;">;</span>
        <span style="color:#800000;font-weight:bold;">print</span> LF <span style="color:#0000e6;">"[ </span><span style="color:#0000e6;">$ltime</span><span style="color:#0000e6;"> ] host </span><span style="color:#0000e6;">$lst</span><span style="color:#0000e6;"> is UP</span><span style="color:#0f69ff;">\n</span><span style="color:#0000e6;">"</span><span style="color:#800080;">;</span>
    <span style="color:#800080;">}</span>
    <span style="color:#800000;font-weight:bold;">if</span> <span style="color:#808030;">(</span><span style="color:#800000;font-weight:bold;">scalar</span><span style="color:#808030;">(</span>@downhosts<span style="color:#808030;">)</span> <span style="color:#808030;">&gt;</span> <span style="color:#008c00;">0</span><span style="color:#808030;">)</span> <span style="color:#800080;">{</span>
                <span style="color:#800000;font-weight:bold;">my</span> $lst <span style="color:#808030;">=</span> <span style="color:#800000;font-weight:bold;">join</span><span style="color:#808030;">(</span><span style="color:#0000e6;">", "</span><span style="color:#808030;">,</span> @downhosts<span style="color:#808030;">)</span><span style="color:#800080;">;</span>
                <span style="color:#0000e6;background:#ffffe8;">`</span><span style="color:#000000;background:#ffffe8;">notify-send -u critical NetMon "Пропала связь с </span><span style="color:#000000;background:#ffffe8;">$lst</span><span style="color:#000000;background:#ffffe8;">"</span><span style="color:#0000e6;background:#ffffe8;">`</span><span style="color:#800080;">;</span>
                <span style="color:#800000;font-weight:bold;">print</span> LF <span style="color:#0000e6;">"[ </span><span style="color:#0000e6;">$ltime</span><span style="color:#0000e6;"> ] host </span><span style="color:#0000e6;">$lst</span><span style="color:#0000e6;"> is DOWN</span><span style="color:#0f69ff;">\n</span><span style="color:#0000e6;">"</span><span style="color:#800080;">;</span>
        <span style="color:#800080;">}</span>
    <span style="color:#800000;font-weight:bold;">while</span> <span style="color:#808030;">(</span><span style="color:#800000;font-weight:bold;">my</span><span style="color:#808030;">(</span>$name<span style="color:#808030;">,</span> $qua<span style="color:#808030;">)</span> <span style="color:#808030;">=</span> <span style="color:#800000;font-weight:bold;">each</span><span style="color:#808030;">(</span>%chq<span style="color:#808030;">)</span><span style="color:#808030;">)</span> <span style="color:#800080;">{</span>
        <span style="color:#800000;font-weight:bold;">if</span> <span style="color:#808030;">(</span>$qua <span style="color:#808030;">&gt;</span> <span style="color:#008c00;">0</span><span style="color:#808030;">)</span> <span style="color:#800080;">{</span>
            <span style="color:#0000e6;background:#ffffe8;">`</span><span style="color:#000000;background:#ffffe8;">notify-send -u normal NetMon "Качество связи с </span><span style="color:#000000;background:#ffffe8;">$name</span><span style="color:#000000;background:#ffffe8;">: </span><span style="color:#000000;background:#ffffe8;">$qua</span><span style="color:#000000;background:#ffffe8;"> / </span><span style="color:#000000;background:#ffffe8;">$tries</span><span style="color:#000000;background:#ffffe8;">"</span><span style="color:#0000e6;background:#ffffe8;">`</span><span style="color:#800080;">;</span>
            <span style="color:#800000;font-weight:bold;">print</span> LF <span style="color:#0000e6;">"[ </span><span style="color:#0000e6;">$ltime</span><span style="color:#0000e6;"> ] Link quality at </span><span style="color:#0000e6;">$name</span><span style="color:#0000e6;"> changed to </span><span style="color:#0000e6;">$qua</span><span style="color:#0000e6;"> / </span><span style="color:#0000e6;">$tries</span><span style="color:#0f69ff;">\n</span><span style="color:#0000e6;">"</span><span style="color:#800080;">;</span>
        <span style="color:#800080;">}</span>
    <span style="color:#800080;">}</span>

    <span style="color:#800000;font-weight:bold;">close</span><span style="color:#808030;">(</span>LF<span style="color:#808030;">)</span><span style="color:#800080;">;</span>
    <span style="color:#800000;font-weight:bold;">sleep</span><span style="color:#808030;">(</span>$interval <span style="color:#808030;">*</span> <span style="color:#008c00;">60</span><span style="color:#808030;">)</span><span style="color:#800080;">;</span>
<span style="color:#800080;">}</span><span style="color:#800080;">;</span>
</pre>
<br /> Tagged: администрирование, Linux, netmon, сеть, perl <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rigid.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rigid.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/rigid.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/rigid.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/rigid.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/rigid.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/rigid.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/rigid.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/rigid.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/rigid.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/rigid.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/rigid.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/rigid.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/rigid.wordpress.com/25/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rigid.wordpress.com&amp;blog=3066028&amp;post=25&amp;subd=rigid&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://rigid.wordpress.com/2009/10/14/%d0%bc%d0%be%d0%b4%d0%b8%d1%84%d0%b8%d0%ba%d0%b0%d1%86%d0%b8%d1%8f-%d1%81%d0%ba%d1%80%d0%b8%d0%bf%d1%82%d0%b0-netmon/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7483f2b33fb5a2831a70f7431492dcec?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">rigid</media:title>
		</media:content>
	</item>
		<item>
		<title>Особенности LVM  в Linux и AIX</title>
		<link>http://rigid.wordpress.com/2009/10/13/%d0%be%d1%81%d0%be%d0%b1%d0%b5%d0%bd%d0%bd%d0%be%d1%81%d1%82%d0%b8-lvm-%d0%b2-linux-%d0%b8-aix/</link>
		<comments>http://rigid.wordpress.com/2009/10/13/%d0%be%d1%81%d0%be%d0%b1%d0%b5%d0%bd%d0%bd%d0%be%d1%81%d1%82%d0%b8-lvm-%d0%b2-linux-%d0%b8-aix/#comments</comments>
		<pubDate>Tue, 13 Oct 2009 07:34:06 +0000</pubDate>
		<dc:creator>rigid</dc:creator>
				<category><![CDATA[Работа]]></category>
		<category><![CDATA[Linux/Unix]]></category>
		<category><![CDATA[AIX]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[LVM]]></category>
		<category><![CDATA[RAID]]></category>

		<guid isPermaLink="false">http://rigid.wordpress.com/?p=22</guid>
		<description><![CDATA[Никогда до прошлой зимы не сталкивлся с необходимостью поднимать софтовый рейд в линуксе. Когда делали оракловый сервер под КИС, изучали ОС IBM AIX 5L. Так вот  там в составе ОС, есть такое замечательное средство &#8211; LVM, позволяющее управлять томами, в том числе создавать программные зеркала, страйпы и т.п. Другое дело, что при использовании внешних хранилищ, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rigid.wordpress.com&amp;blog=3066028&amp;post=22&amp;subd=rigid&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Никогда до прошлой зимы не сталкивлся с необходимостью поднимать софтовый рейд в линуксе. Когда делали оракловый сервер под КИС, изучали ОС IBM AIX 5L. Так вот  там в составе ОС, есть такое замечательное средство &#8211; LVM, позволяющее управлять томами, в том числе создавать программные зеркала, страйпы и т.п. Другое дело, что при использовании внешних хранилищ, вроде DS4700, надобность в софтовом рейде отпадает. Зеркалирование настраивается средствами системы хранения.<br />
И вот той зимой понадобилось создать сервер для резервных копий. В качестве ОС был выбран Debian GNU/Linux 5.0, только вышедший. Задачка в общем то казалась не очень сложной, тем более, что в линуксе тоже есть LVM. Но не тут то было. Создал группу томов, добавил физические тома, начал создавать логические с зеркалированием. Тут то и оказалось, что LVM для использования зеркал требуется журнал.Для этих нужд LVM в AIX выделяет область внутри самого зеркального тома, а линуксовая версия предлагает создать отдельный логический том. Это мне не понравилось. Ставить эксперимент не стал, но предполагаю, что в случае смерти одного из винтов, LVM не сумел бы подняться.<br />
На помощь пришел программный рейд на базе mdraid. С помощью этой программы, я создал программные зеркала из четырех пар винтов. Программа создает виртуальные диски /dev/md0, /dev/md1 и так далее. А эти устройства уже можно использовать в качестве физических томов для LVM.<br />
Кстати, еще одна особеннось. В AIX в качестве физического тома может выступать сам винт. В Linux LVM требует наличие на винте раздела и использует уже этот раздел. С чем связано, не знаю.</p>
<p>В итоге всех этих махинаций я имею на севере зеркальный софтрейд на базе mdraid и гибкий LVM поверх этого рейда. Проводил испытания &#8211; все отлично работает при выдергивании винта и добавлеении резервного вместо него.</p>
<br /> Tagged: AIX, Linux, LVM, RAID <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rigid.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rigid.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/rigid.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/rigid.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/rigid.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/rigid.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/rigid.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/rigid.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/rigid.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/rigid.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/rigid.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/rigid.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/rigid.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/rigid.wordpress.com/22/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rigid.wordpress.com&amp;blog=3066028&amp;post=22&amp;subd=rigid&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://rigid.wordpress.com/2009/10/13/%d0%be%d1%81%d0%be%d0%b1%d0%b5%d0%bd%d0%bd%d0%be%d1%81%d1%82%d0%b8-lvm-%d0%b2-linux-%d0%b8-aix/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7483f2b33fb5a2831a70f7431492dcec?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">rigid</media:title>
		</media:content>
	</item>
		<item>
		<title>Локальная база знаний</title>
		<link>http://rigid.wordpress.com/2009/10/13/%d0%bb%d0%be%d0%ba%d0%b0%d0%bb%d1%8c%d0%bd%d0%b0%d1%8f-%d0%b1%d0%b0%d0%b7%d0%b0-%d0%b7%d0%bd%d0%b0%d0%bd%d0%b8%d0%b9/</link>
		<comments>http://rigid.wordpress.com/2009/10/13/%d0%bb%d0%be%d0%ba%d0%b0%d0%bb%d1%8c%d0%bd%d0%b0%d1%8f-%d0%b1%d0%b0%d0%b7%d0%b0-%d0%b7%d0%bd%d0%b0%d0%bd%d0%b8%d0%b9/#comments</comments>
		<pubDate>Tue, 13 Oct 2009 07:09:18 +0000</pubDate>
		<dc:creator>rigid</dc:creator>
				<category><![CDATA[Работа]]></category>
		<category><![CDATA[администрирование]]></category>
		<category><![CDATA[сервисы]]></category>

		<guid isPermaLink="false">http://rigid.wordpress.com/?p=19</guid>
		<description><![CDATA[Давно назревала идея поднять в отделе сервис для сохранения наработок по разнообразным вопросам, например решению проблем с софтом. Часто бывает так: возникает проблема, ты теряешь пол дня на поиск решения, а потом оказывается что кто-то из сослуживцев уже сталкивался с ней и знает простое решение. В качестве движка для такого сервиса неплохо подходит wiki- движок [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rigid.wordpress.com&amp;blog=3066028&amp;post=19&amp;subd=rigid&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Давно назревала идея поднять в отделе сервис для сохранения наработок по разнообразным вопросам, например решению проблем с софтом. Часто бывает так: возникает проблема, ты теряешь пол дня на поиск решения, а потом оказывается что кто-то из сослуживцев уже сталкивался с ней и знает простое решение.<br />
В качестве движка для такого сервиса неплохо подходит wiki- движок от Wikimedia. Есть конечно ряд особенностей, специфичных для википедии. Например, создали разделы: Софт, Железо, Сети. В разделе Софт еще разделы, в частности ОС и КИС. В этих разделах свои подразделы, среди которых есть совпадающие имена, например Администрирование. Википедия так устроена, что ссылка на раздел Администрирование ведет на одну и ту же страницу, не зависимо от того, из какого родительского раздела пришел юзер. В качестве обходного маневра приняли такой: ссылка пишется как</p>
<blockquote><p>Windows:Администрирование|Администрирование</p></blockquote>
<p>Что в итоге делает ссылку с надписью &laquo;Администрирование&raquo; и ведущую на &laquo;Wndows:Администрирование&raquo;. Получается некое подобие иерархии. Во всем остальном движок очень удобен, правда вики-форматированиек еще не все освоили.</p>
<br /> Tagged: Работа, администрирование, сервисы <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rigid.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rigid.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/rigid.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/rigid.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/rigid.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/rigid.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/rigid.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/rigid.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/rigid.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/rigid.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/rigid.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/rigid.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/rigid.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/rigid.wordpress.com/19/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=rigid.wordpress.com&amp;blog=3066028&amp;post=19&amp;subd=rigid&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://rigid.wordpress.com/2009/10/13/%d0%bb%d0%be%d0%ba%d0%b0%d0%bb%d1%8c%d0%bd%d0%b0%d1%8f-%d0%b1%d0%b0%d0%b7%d0%b0-%d0%b7%d0%bd%d0%b0%d0%bd%d0%b8%d0%b9/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7483f2b33fb5a2831a70f7431492dcec?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">rigid</media:title>
		</media:content>
	</item>
	</channel>
</rss>
