<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Linux Forum &mdash; Парсинг dhcpd.leases для sarg]]></title>
	<link rel="self" href="https://linuxforum.ru/extern.php?action=feed&amp;tid=31179&amp;type=atom" />
	<updated>2013-10-23T05:51:46Z</updated>
	<generator>PunBB</generator>
	<id>https://linuxforum.ru/viewtopic.php?id=31179</id>
		<entry>
			<title type="html"><![CDATA[Re: Парсинг dhcpd.leases для sarg]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=371409#p371409" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Kettler пишет:</cite><blockquote><p>очень на быструю руку<br /></p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header" data-lang-open="открыть спойлер" data-lang-close="скрыть спойлер"><strong>+</strong>&nbsp;открыть спойлер</div><div class="fancy_spoiler"><div class="codebox"><pre><code>#!/usr/bin/perl
$test = &quot;0&quot;;
open(InFile, &quot;/home/user/in.bd&quot;) || die;
open(OutFile, &quot;&gt;/home/user/out.bd&quot;) || die;

while ($line = &lt;InFile&gt;)
{
($n1, $n2, $n3, $n4) = split (&quot; &quot;, $line);
        if ($n1 eq &quot;lease&quot;)
        {
        $ip=$n2;
        }
        if ($n1 eq &quot;starts&quot;)
        {
        $sdate=$n3;
        }
        if ($n1 eq &quot;ends&quot;)
        {
        $edate=$n3;
        }
        if ($n1 eq &quot;hardware&quot;)
        {
        $mak=$n3;
        }
        if ($n2 eq &quot;ddns-fwd-name&quot;)
        {
        $name=$n4;
        }

if ($ip gt &quot;&quot; &amp; $sdate gt &quot;&quot; &amp; $edate gt &quot;&quot; &amp; $mak gt &quot;&quot; &amp; $name gt &quot;&quot;)
{
chop ($mak);
chop ($name);
$lenname = length ($name);
$n = substr ($name, &quot;1&quot; , $len-2);
$test++;
$line = &quot;$ip $sdate $edate $mak $n \n&quot;;
@data[$test] = ($line);

$sdate=&quot;&quot;;
$edate=&quot;&quot;;
$mak=&quot;&quot;;
$name=&quot;&quot;;
$n=&quot;&quot;;
$lenname=&quot;&quot;;
}
}
close ( InFile );

foreach $item (@data)
{
$seen{$item}++;
}
@uniq = sort keys %seen;

foreach $lline (@uniq)
{
print OutFile $lline ;
}
close (OutFile);</code></pre></div></div></div></blockquote></div><p>Спасибо за желание помочь!) <br />OutFile пустой... Пытаюсь разобраться...</p><p>UDP Разобрался, допилил. Результат вот. </p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header" data-lang-open="открыть спойлер" data-lang-close="скрыть спойлер"><strong>+</strong>&nbsp;открыть спойлер</div><div class="fancy_spoiler"><p>#!/usr/bin/perl<br />$test = &quot;0&quot;;<br />open(InFile, &quot;/var/lib/dhcp/dhcpd.leases&quot;) || die;<br />open(OutFile, &quot;&gt;/etc/sarg/usertab&quot;) || die;</p><p>while ($line = &lt;InFile&gt;)<br />{<br />($n1, $n2, $n3, $n4) = split (&quot; &quot;, $line);<br />&nbsp; &nbsp; &nbsp; &nbsp; if ($n1 eq &quot;lease&quot;)<br />&nbsp; &nbsp; &nbsp; &nbsp; {<br />&nbsp; &nbsp; &nbsp; &nbsp; $ip=$n2;<br />&nbsp; &nbsp; &nbsp; &nbsp; }<br />&nbsp; &nbsp; &nbsp; &nbsp; if ($n1 eq &quot;starts&quot;)<br />&nbsp; &nbsp; &nbsp; &nbsp; {<br />&nbsp; &nbsp; &nbsp; &nbsp; $sdate=$n3;<br />&nbsp; &nbsp; &nbsp; &nbsp; }<br />&nbsp; &nbsp; &nbsp; &nbsp; if ($n1 eq &quot;ends&quot;)<br />&nbsp; &nbsp; &nbsp; &nbsp; {<br />&nbsp; &nbsp; &nbsp; &nbsp; $edate=$n3;<br />&nbsp; &nbsp; &nbsp; &nbsp; }<br />&nbsp; &nbsp; &nbsp; &nbsp; if ($n1 eq &quot;hardware&quot;)<br />&nbsp; &nbsp; &nbsp; &nbsp; {<br />&nbsp; &nbsp; &nbsp; &nbsp; $mak=$n3;<br />&nbsp; &nbsp; &nbsp; &nbsp; }<br />&nbsp; &nbsp; &nbsp; &nbsp; if ($n1 eq &quot;client-hostname&quot;)<br />&nbsp; &nbsp; &nbsp; &nbsp; {<br />&nbsp; &nbsp; &nbsp; &nbsp; $name=$n2;<br />&nbsp; &nbsp; &nbsp; &nbsp; }</p><p>if ($ip gt &quot;&quot; &amp; $sdate gt &quot;&quot; &amp; $edate gt &quot;&quot; &amp; $mak gt &quot;&quot; &amp; $name gt &quot;&quot;)<br />{<br />chop ($mak);<br />chop ($name);<br />$lenname = length ($name);<br />$n = substr ($name, &quot;1&quot; , $len-1);<br />$test++;<br />$line = &quot;$ip $n \n&quot;;<br />@data[$test] = ($line);</p><p>$sdate=&quot;&quot;;<br />$edate=&quot;&quot;;<br />$mak=&quot;&quot;;<br />$name=&quot;&quot;;<br />$n=&quot;&quot;;<br />$lenname=&quot;&quot;;<br />}<br />}<br />close ( InFile );</p><p>foreach $item (@data)<br />{<br />$seen{$item}++;<br />}<br />@uniq = sort keys %seen;</p><p>foreach $lline (@uniq)<br />{<br />print OutFile $lline ;<br />}<br />close (OutFile);</p></div></div><p>Вариант польностью рабочий для SARG&#039;а. Может кому пригодится.<br />Большое спасибо!!!</p>]]></content>
			<author>
				<name><![CDATA[Ромашов Дмитрий]]></name>
				<uri>https://linuxforum.ru/profile.php?id=32152</uri>
			</author>
			<updated>2013-10-23T05:51:46Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=371409#p371409</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Парсинг dhcpd.leases для sarg]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=371165#p371165" />
			<content type="html"><![CDATA[<p>очень на быструю руку<br /></p><div class="codebox"><pre><code>#!/usr/bin/perl
$test = &quot;0&quot;;
open(InFile, &quot;/home/user/in.bd&quot;) || die;
open(OutFile, &quot;&gt;/home/user/out.bd&quot;) || die;

while ($line = &lt;InFile&gt;)
{
($n1, $n2, $n3, $n4) = split (&quot; &quot;, $line);
        if ($n1 eq &quot;lease&quot;)
        {
        $ip=$n2;
        }
        if ($n1 eq &quot;starts&quot;)
        {
        $sdate=$n3;
        }
        if ($n1 eq &quot;ends&quot;)
        {
        $edate=$n3;
        }
        if ($n1 eq &quot;hardware&quot;)
        {
        $mak=$n3;
        }
        if ($n2 eq &quot;ddns-fwd-name&quot;)
        {
        $name=$n4;
        }

if ($ip gt &quot;&quot; &amp; $sdate gt &quot;&quot; &amp; $edate gt &quot;&quot; &amp; $mak gt &quot;&quot; &amp; $name gt &quot;&quot;)
{
chop ($mak);
chop ($name);
$lenname = length ($name);
$n = substr ($name, &quot;1&quot; , $len-2);
$test++;
$line = &quot;$ip $sdate $edate $mak $n \n&quot;;
@data[$test] = ($line);

$sdate=&quot;&quot;;
$edate=&quot;&quot;;
$mak=&quot;&quot;;
$name=&quot;&quot;;
$n=&quot;&quot;;
$lenname=&quot;&quot;;
}
}
close ( InFile );

foreach $item (@data)
{
$seen{$item}++;
}
@uniq = sort keys %seen;

foreach $lline (@uniq)
{
print OutFile $lline ;
}
close (OutFile);</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Kettler]]></name>
				<uri>https://linuxforum.ru/profile.php?id=11719</uri>
			</author>
			<updated>2013-10-22T06:58:04Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=371165#p371165</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Парсинг dhcpd.leases для sarg]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=371096#p371096" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>-=Serj=- пишет:</cite><blockquote><div class="quotebox"><cite>Ромашов Дмитрий пишет:</cite><blockquote><p>Казалось, что есть рабочий вариант и его немного нужно &quot;допилить&quot;...</p></blockquote></div><p>Ну, если вы знаете perl.. Я его не знаю)</p></blockquote></div><p>А если советуете <em>sed</em>, то может не нем что-то сгенерите?) Для затравки)</p><p>UDP<br />Кстати, если делать так</p><div class="codebox"><pre><code>$ ./script.pl &gt; out.txt</code></pre></div><p>, а не</p><div class="codebox"><pre><code>$ ./script.pl &gt;&gt; out.txt</code></pre></div><p>то файл перезаписывается, а не дописывается вроде...</p>]]></content>
			<author>
				<name><![CDATA[Ромашов Дмитрий]]></name>
				<uri>https://linuxforum.ru/profile.php?id=32152</uri>
			</author>
			<updated>2013-10-21T13:26:28Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=371096#p371096</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Парсинг dhcpd.leases для sarg]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=371095#p371095" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Ромашов Дмитрий пишет:</cite><blockquote><p>Казалось, что есть рабочий вариант и его немного нужно &quot;допилить&quot;...</p></blockquote></div><p>Ну, если вы знаете perl.. Я его не знаю)</p>]]></content>
			<author>
				<name><![CDATA[-=Serj=-]]></name>
				<uri>https://linuxforum.ru/profile.php?id=16175</uri>
			</author>
			<updated>2013-10-21T13:15:56Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=371095#p371095</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Парсинг dhcpd.leases для sarg]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=371093#p371093" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>-=Serj=- пишет:</cite><blockquote><p><strong>Ромашов Дмитрий</strong>, в вашем случае, как мне кажется, можно обойтись <em>sed</em>&#039;ом.</p></blockquote></div><p>Хм... Наверно... Это всего лишь попытка доработать решение, которое есть... Покопаю <em>sed</em></p><p>UDP<br />Казалось, что есть рабочий вариант и его немного нужно &quot;допилить&quot;...</p>]]></content>
			<author>
				<name><![CDATA[Ромашов Дмитрий]]></name>
				<uri>https://linuxforum.ru/profile.php?id=32152</uri>
			</author>
			<updated>2013-10-21T12:59:19Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=371093#p371093</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Парсинг dhcpd.leases для sarg]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=371092#p371092" />
			<content type="html"><![CDATA[<p><strong>Ромашов Дмитрий</strong>, в вашем случае, как мне кажется, можно обойтись <em>sed</em>&#039;ом.</p>]]></content>
			<author>
				<name><![CDATA[-=Serj=-]]></name>
				<uri>https://linuxforum.ru/profile.php?id=16175</uri>
			</author>
			<updated>2013-10-21T12:54:10Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=371092#p371092</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Парсинг dhcpd.leases для sarg]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=371091#p371091" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>-=Serj=- пишет:</cite><blockquote><div class="codebox"><pre><code>$ ./script.pl &gt;&gt; out.txt</code></pre></div><p>Если по-простому.<br />UPD. </p><div class="quotebox"><cite>Ромашов Дмитрий пишет:</cite><blockquote><p>исключение повторяющихся записей</p></blockquote></div><p>А, этот момент упустил...</p></blockquote></div><p>Это просто. И есть один недостаток, он дописывает массив в конец файла.</p>]]></content>
			<author>
				<name><![CDATA[Ромашов Дмитрий]]></name>
				<uri>https://linuxforum.ru/profile.php?id=32152</uri>
			</author>
			<updated>2013-10-21T12:52:12Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=371091#p371091</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Парсинг dhcpd.leases для sarg]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=371089#p371089" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>$ ./script.pl &gt;&gt; out.txt</code></pre></div><p>Если по-простому.<br />UPD. </p><div class="quotebox"><cite>Ромашов Дмитрий пишет:</cite><blockquote><p>исключение повторяющихся записей</p></blockquote></div><p>А, этот момент упустил...</p>]]></content>
			<author>
				<name><![CDATA[-=Serj=-]]></name>
				<uri>https://linuxforum.ru/profile.php?id=16175</uri>
			</author>
			<updated>2013-10-21T12:46:04Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=371089#p371089</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Парсинг dhcpd.leases для sarg]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=371088#p371088" />
			<content type="html"><![CDATA[<p>Добрый день! <br />Помогите, подскажите как написать следующий скрипт. Я в Perl&#039;е новичек.</p><p>Имеем: Сервер Ubuntu 12.04, как шлюз интернет. На нем - Сервер DHCP, Прокси-сервер Squid, SquidGuard и SARG. Пользователи ходят в инет без всяких авторизаций. SARG генерит отчеты, кто и куда ходил. Но вместо имен компьютеров в отчете IP адреса. SARG умеет разрешать имена хостов из адресов, но для этого ему надо файл формата IP:host_name. </p><p>Теперь собственно вопрос... На просторах данного сайта нашел варианты в теме <a href="http://linuxforum.ru/viewtopic.php?pid=187230#p187230">Не слишком ли громоздко?</a> Второй вариант что смог доработал, убрал вывод ненужных данных о дате лизинга адреса, но теперь не могу понять как реализовать запись этого дела в файл и исключение повторяющихся записей. Прошу помощи.</p><div class="codebox"><pre><code>#!/usr/bin/perl
open(InFile, &quot;/var/lib/dhcp/dhcpd.leases&quot;) || die;
while ($line = &lt;InFile&gt;)
{
($n1, $n2, $n3, $n4) = split (&quot; &quot;, $line);
        if ($n1 eq &quot;lease&quot;)
        {
        $ip=$n2;
        }
        if ($n1 eq &quot;starts&quot;)
        {
        $sdate=$n3;
        }
        if ($n1 eq &quot;ends&quot;)
        {
        $edate=$n3;
        }
        if ($n1 eq &quot;hardware&quot;)
        {
        $mak=$n3;
        }
        if ($n2 eq &quot;ddns-fwd-name&quot;)
        {
        $name=$n4;
        }

if ($ip gt &quot;&quot; &amp; $sdate gt &quot;&quot; &amp; $edate gt &quot;&quot; &amp; $mak gt &quot;&quot; &amp; $name gt &quot;&quot;)
{
chop ($mak);
chop ($name);
$lenname = length ($name);
$n = substr ($name, &quot;1&quot; , $len-2);
print $ip , &quot; &quot;, $sdate, &quot; &quot;, $edate, &quot; &quot;, $mak, &quot; &quot;, $n, &quot; &quot;, &quot;\n&quot;;
$sdate=&quot;&quot;;
$edate=&quot;&quot;;
$mak=&quot;&quot;;
$name=&quot;&quot;;
$n=&quot;&quot;;
$lenname=&quot;&quot;;
}
}
close ( InFile );</code></pre></div><p>За ранее спасибо.</p>]]></content>
			<author>
				<name><![CDATA[Ромашов Дмитрий]]></name>
				<uri>https://linuxforum.ru/profile.php?id=32152</uri>
			</author>
			<updated>2013-10-21T12:41:26Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=371088#p371088</id>
		</entry>
</feed>
