<?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/"
	>

<channel>
	<title>BulTux &#187; чат</title>
	<atom:link href="http://www.bultux.org/tag/%d1%87%d0%b0%d1%82/feed" rel="self" type="application/rss+xml" />
	<link>http://www.bultux.org</link>
	<description>Български блог посветен на свободния софтуер и новото от Linux света</description>
	<lastBuildDate>Sat, 03 Dec 2011 08:18:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Netcat &#8211; швейцарското ножче за мрежи</title>
		<link>http://www.bultux.org/tutorials/netcat-shweicarsko-nojche-za-mreji</link>
		<comments>http://www.bultux.org/tutorials/netcat-shweicarsko-nojche-za-mreji#comments</comments>
		<pubDate>Fri, 22 Jan 2010 12:11:52 +0000</pubDate>
		<dc:creator>Владимир Колев</dc:creator>
				<category><![CDATA[Уроци]]></category>
		<category><![CDATA[netcat]]></category>
		<category><![CDATA[stream]]></category>
		<category><![CDATA[как да]]></category>
		<category><![CDATA[мрежи]]></category>
		<category><![CDATA[сървъри]]></category>
		<category><![CDATA[чат]]></category>

		<guid isPermaLink="false">http://www.bultux.org/?p=199</guid>
		<description><![CDATA[<img src="http://bultux.org/wp-content/plugins/category-icons/cats/tuts.png" width="22" height="22" alt="" title="Уроци" /><br/>Копиране на файлове, четене на електронна поща, сканиране на портове, стартиране на уеб-сървър и всичко това в мрежата. NetCat се справя с всички тези задачи, но само в мрежата &#8211; за сметка на това върши работата си безупречно. В тази статия ще ви разкажа малко повече за мрежовия инструмент netcat и ще демонстрирам някои от [...]]]></description>
			<content:encoded><![CDATA[<img src="http://bultux.org/wp-content/plugins/category-icons/cats/tuts.png" width="22" height="22" alt="" title="Уроци" /><br/><p style="text-align: justify;"><img class="alignright size-full wp-image-200" title="swiss-army-knife" src="http://www.bultux.org/wp-content/uploads/2010/01/swiss-army-knife.png" alt="" width="326" height="251" />Копиране на файлове, четене на електронна поща, сканиране на портове, стартиране на уеб-сървър и всичко това в мрежата. <a href="http://netcat.sourceforge.net/" target="_blank">NetCat</a> се справя с всички тези задачи, но само в мрежата &#8211; за сметка на това върши работата си безупречно. В тази статия ще ви разкажа малко повече за мрежовия инструмент netcat и ще демонстрирам някои от възможностите му с примери. За целта ще разгледаме всяка задача като отделна точка.</p>
<h3>Прехвърляне на файлове</h3>
<p style="text-align: justify;">Да приемем, че искате да копирате файл с името <strong>test.txt</strong> от една машина с име в мрежата john върху друга машина с име в мрежата smith. За целта трябва да стартирате програмата netcat на машината <em>smith</em> като сървър с опциите <strong>-l</strong> за &#8220;listen&#8221; (на български: слушане) и <strong>-p 6000</strong>, където параметъра <strong>-p</strong> определя порта, на който сървъра да &#8220;слуша&#8221; &#8211; в случая 6000. Едно пренасочване за писане се грижи за това, че netcat ще запише входящите данни в определен от нас файл.<br />
<span id="more-199"></span>На разположение в терминала имаме командата netcat и кратката й форма <strong>nc</strong>. За стартиране ще използваме следната команда:</p>


<div class="wp-geshi-highlight"><div class="bash"><pre class="de1"><span class="co4">smith:~$ </span>nc <span class="re5">-l</span> <span class="re5">-p</span> <span class="nu0">6000</span> <span class="sy0">&gt;</span> got_test.txt</pre></div></div>


<p>На компютъра <em>john</em> е достатъчно да зададем параметрите <strong><em>smith</em></strong>, <strong><em>6000</em></strong> и <em><strong>&lt; test.txt</strong></em> за да подадем данните към Netcat, който от своя страна да ги предаде на стартирания под <em>smith</em>, Netcat:</p>


<div class="wp-geshi-highlight"><div class="bash"><pre class="de1"><span class="co4">john:~$ </span>nc smith <span class="nu0">6000</span> <span class="sy0">&lt;</span> test.txt</pre></div></div>


<p style="text-align: justify;">След като на john сте стартирали програмата трябва да я прекратите с [Ctrl]+[C]. Стартирания на <em>smith</em> Netcat ще се изключи сам след като запише файла <em><strong>got_test.txt</strong></em>. По подобен начин се процедира когато искате да прехвърлите цялото съдържание на директория между два компютъра:</p>


<div class="wp-geshi-highlight"><div class="bash"><pre class="de1"><span class="co4">smith:~$ </span>nc <span class="re5">-l</span> <span class="re5">-p</span> <span class="nu0">6000</span> <span class="sy0">|</span> <span class="kw2">tar</span> x
<span class="co4">john:~$ </span><span class="kw2">tar</span> cf - <span class="sy0">*</span> <span class="sy0">|</span> nc smith <span class="nu0">6000</span></pre></div></div>


<p style="text-align: justify;">Това, което се случва е всъщност свързването на две команди на всеки компютър. На компютъра <em>john</em> създавате tar-архив със съдържанието на текущата директория, и го изпращате на <em>smith</em>, при получаването <em>smith</em> разархивира полученото в текущата директория</p>
<p><div class="note"><div class="notewarning">Aко го правите с цел тест &#8211; опитвайте с по-малки съдържания и избягвайте да изпълнявате командата от домашната си директория.</div></div></p>
<h3>Комуникация</h3>
<p style="text-align: justify;">Какво ще се случи обаче ако и на двата компютъра стартирате програмата без поток от определени данни? В такъв случаи ще разполагат с един малък чат:</p>


<div class="wp-geshi-highlight"><div class="bash"><pre class="de1"><span class="sy0">&gt;</span>smith:~$ nc <span class="re5">-l</span> <span class="re5">-p</span> <span class="nu0">2000</span>
<span class="co4">john:~$ </span>nc smith <span class="re5">-p</span> <span class="nu0">2000</span></pre></div></div>


<p style="text-align: justify;">Всичко, което потребителите на <em>smith</em> или <em>john</em> въвежда ще излиза на монитора на отсрещния потребител. При това с netcat можете да работите интерактивно: като това да проверите броя и размера на писмата в пощенската си кутия стига да разполагате с адреса ан POP3 сървъра:</p>
<p style="text-align: justify;">С ключовите думи user и pass се идентифицирате пред съответния сървър. Командата list кара POP сървъра да покаже размера на всичките писма намиращи се в пощенската ви кутия. Командата quit прекратява връзката. По подобен начин можете да се свързвате и с SMTP, NNMP и дори FTP сървъри. Нуджно е само да преврите командите, които поддържа съответния протокол.</p>
<h3>Сканиране на портове</h3>
<p style="text-align: justify;">Често като потребител не знаете кой компютър какви услуги (services) предлага във вашата мрежа. За тази цел Netcat предлага своите услуги и като инструмент за сканиране на портове:</p>


<div class="wp-geshi-highlight"><div class="bash"><pre class="de1">smith~$ nc <span class="re5">-vz</span> localhost <span class="nu0">1</span>-<span class="nu0">1024</span>
localhost <span class="br0">&#91;</span>127.0.0.1<span class="br0">&#93;</span> <span class="nu0">631</span> <span class="br0">&#40;</span>ipp<span class="br0">&#41;</span> open</pre></div></div>


<p style="text-align: justify;">Параметъра <strong><em>-v</em></strong> (&#8220;verbose&#8221;) се грижи за показването на пълния изход от командата, опцията <strong><em>-z</em></strong> (&#8220;zero I/O mode&#8221;) кара netcat да сканира определени портове. Както виждате от горепосочения пример, на компютъра smith на порт 631 най-вероятно е включен принтер-демон. Вместо да задавате портове или групи от портове netcat приема като параметри и конкретни услуги, което е полезно ако търсите дали определен компютър от вашата мрежа поддържа ftp услуга.</p>
<h3>Уеб заявки</h3>
<p style="text-align: justify;">Освен поддръжката на FTP услуги, с Nmap можете да работите и с уеб сървъри. Един ред е достатъчен, за да свалите съдържанието на страница от даден сайт. Да вземем за пример немското списание <a href="http://www.linux-user.de" target="_blank">www.linux-user.de</a> което има уеб сървър на порт 80:</p>


<div class="wp-geshi-highlight"><div class="bash"><pre class="de1"><span class="co4">$ </span><span class="kw3">echo</span> <span class="re5">-e</span> <span class="st0">&quot;GET / HTTP/1.1<span class="es1">\r</span><span class="es1">\n</span>&quot;</span> <span class="sy0">|</span> nc www.linux-user.de <span class="nu0">80</span> <span class="sy0">&gt;</span> test.html</pre></div></div>


<p style="text-align: justify;">Първата команда, която пращаме към nc, <em>echo -e &#8220;GET / HTTP/1.1\r\n&#8221;</em> представлява заявка (&#8220;Request&#8221;), която по принцип се изпраща от всеки уеб браузър. С <em>GET</em> заявяваме и коя страница от уеб сървъра искаме да прегледаме &#8211; в случая това е <strong>/</strong> (root).<br />
По-рано, обаче, научихме, че Netcat може да работи и като сървър. Така, че можем да разширим примера като разширим горната команда по следния начин:</p>


<div class="wp-geshi-highlight"><div class="bash"><pre class="de1"><span class="co4">$ </span><span class="kw3">echo</span> <span class="re5">-e</span> <span class="st0">&quot;Get / HTTP/1.1<span class="es1">\r</span><span class="es1">\n</span>&quot;</span> <span class="sy0">|</span> nc www.linux-user.de <span class="nu0">80</span> <span class="sy0">&gt;</span> test.html <span class="sy0">|</span> nc <span class="re5">-l</span> <span class="re5">-p</span> <span class="nu0">8080</span> <span class="re5">-q</span> <span class="nu0">1</span></pre></div></div>


<p style="text-align: justify;">Както се досещате параметрите<strong> -l -p 8080</strong> карат Netcat да работи като сървър на порт 8080. Нов е параметъра <strong><em>-q 1</em></strong>, който спира работата на netcat една секунда след като се достигне края на файла. По този начин netcat уеб сървъра приема от първата nc инстанция страницата <strong>test.html</strong> и позволява тя да бъде прегледана на локалната машина на порт 8080 (<em>http://localhost:8080</em>). Изхода, който ще видите в терминала е заявката, която Mozilla прави към netcat, за да види страницата test.html:</p>


<div class="wp-geshi-highlight"><div class="bash"><pre class="de1">GET <span class="sy0">/</span> HTTP<span class="sy0">/</span><span class="nu0">1.1</span>
Host: localhost:<span class="nu0">8080</span>
User-Agent: Mozilla<span class="sy0">/</span><span class="nu0">5.0</span> <span class="br0">&#40;</span>X11; U; Linux i686; en-US; rv:1.9.1.8pre<span class="br0">&#41;</span> Gecko<span class="sy0">/</span><span class="nu0">20100120</span> Ubuntu<span class="sy0">/</span><span class="nu0">9.10</span> <span class="br0">&#40;</span>karmic<span class="br0">&#41;</span> Shiretoko<span class="sy0">/</span>3.5.8pre
Accept: text<span class="sy0">/</span>html,application<span class="sy0">/</span>xhtml+xml,application<span class="sy0">/</span>xml;<span class="re2">q</span>=<span class="nu0">0.9</span>,<span class="sy0">*/*</span>;<span class="re2">q</span>=<span class="nu0">0.8</span>
Accept-Language: en-us,en;<span class="re2">q</span>=<span class="nu0">0.5</span>
Accept-Encoding: <span class="kw2">gzip</span>,deflate
Accept-Charset: ISO-<span class="nu0">8859</span>-<span class="nu0">1</span>,utf-<span class="nu0">8</span>;<span class="re2">q</span>=<span class="nu0">0.7</span>,<span class="sy0">*</span>;<span class="re2">q</span>=<span class="nu0">0.7</span>
Keep-Alive: <span class="nu0">300</span>
Connection: keep-alive
Cookie: <span class="re2">CAKEPHP</span>=f2d80f0e9d891cb155f0a6fe1159a152
Cache-Control: max-age=<span class="nu0">0</span></pre></div></div>


<p style="text-align: justify;">Разбира се с малко основни знания в шел програмирането netcat може да бъде накаран да работи по-дълго време като уеб сървър &#8211; за целта трябва да вмъкнете netcat в един безкраен <em><strong>while</strong></em> цикъл:</p>


<div class="wp-geshi-highlight"><div class="bash"><pre class="de1"><span class="kw1">while</span> <span class="kw2">true</span>; <span class="kw1">do</span>; nc <span class="re5">-l</span> <span class="re5">-p</span> <span class="nu0">8080</span> <span class="re5">-q</span> <span class="nu0">1</span> <span class="sy0">&lt;</span> test.html; <span class="kw1">done</span></pre></div></div>


<p style="text-align: justify;">По този начин (изискват се root права) можете да имплементирате на привилегировани портове от 1 до 1024 така наречените <a href="http://en.wikipedia.org/wiki/Honeypot_%28computing%29" target="_blank">Honeypots</a>, на български &#8220;бурканче с мед&#8221;. Така се наричат услуги, които не съществуват, а техните портове реагират само на заявки, за да се проследят потенциални нападатели или както ще покажа в следния пример да ядосвате кварталните хакери при опит за връзка към вас през <a href="http://en.wikipedia.org/wiki/Telnet" target="_blank">telnet</a>:</p>


<div class="wp-geshi-highlight"><div class="bash"><pre class="de1"><span class="co4">smith:~# </span><span class="kw3">echo</span> <span class="st0">&quot; You are an IDIOT&quot;</span> <span class="sy0">|</span> nc <span class="re5">-vv</span> <span class="re5">-l</span> <span class="re5">-p</span> <span class="nu0">23</span> <span class="re5">-q</span> <span class="nu0">1</span>
<span class="co4">smith:~$ </span>telnet localhost <span class="nu0">23</span>
Trying 127.0.0.1...
Connected to localhost.
Escape character is <span class="st_h">'^]'</span>.
You are an IDIOT
Connection closed by foreign host.</pre></div></div>


<h3>Използвайте внимателно!</h3>
<p style="text-align: justify;">Колкото и удобен и мощен да е netcat в изпълнението на своите услуги, трябва да се внимава много при използването му. При необмислено използване &#8211; това може да се окаже доста опасно за самите вас. Параметърът, който е отговорен за потенциални проблеми в сигурността е <strong><em>-e</em></strong>. Означава <strong>&#8220;execute&#8221;</strong> (&#8220;изпълни&#8221;). Всичко което стои след -e, Netcat стартира без замисляне и нужда от потвърждение &#8211; дори и един shell:</p>


<div class="wp-geshi-highlight"><div class="bash"><pre class="de1"><span class="co4">smith:~$ </span>nc <span class="re5">-v</span> <span class="re5">-l</span> <span class="re5">-p</span> <span class="nu0">6000</span> <span class="re5">-e</span> <span class="sy0">/</span>bin<span class="sy0">/</span><span class="kw2">bash</span></pre></div></div>


<p style="text-align: justify;">По този начин е достатъчно от компютъра <em>john</em> да зададете към Netcat параметрите smith и порта 6000 и по този начин без никакво идентифициране <em>john</em> ще получи достъп до вашия shell. Не е нужно много въображение, за да си представите какво може да се случи с компютъра smith, ако работи без защитна стена и е свързан към интернет.<br />
<strong>Един по-безопасен пример:</strong><br />
Тъй като мрежовата котка (NetCat) се храни с всякакви данни, които и подадете можете да я използвате и за stream на файлове през мрежата:</p>


<div class="wp-geshi-highlight"><div class="bash"><pre class="de1"><span class="co4">smith:~$ </span>nc <span class="re5">-l</span> <span class="re5">-p</span> <span class="nu0">8765</span> <span class="re5">-q</span> <span class="nu0">1</span> <span class="sy0">|</span> super_dupper.mp3
<span class="co4">john:~$ </span>nc smith <span class="nu0">8765</span> <span class="sy0">|</span> <span class="kw2">mplayer</span> -</pre></div></div>


<p style="text-align: justify;">Това става безпроблемно само с медиен плеър инсталиран на <em>john</em>, който може да чете данните директно от командния ред &#8211; в този пример <a href="http://en.wikipedia.org/wiki/Mplayer" target="_blank">Mplayer</a> се справя перфектно с тази задача.</p>
<h3>Малко повече</h3>
<p style="text-align: justify;">Показаните до тук примери покриват само една малка част от възможностите, които Netcat предлага. Освен горе-споменатите точки с този инструмент можете да пренасочвате портове, да протоколирате пренасянето на данни във вашата мрежа или да тествате стабилността на услуги.</p>
<p>По-детайлно разгледани Netcat-скриптове можете да намерите на вашата система на места като <em>/usr/share/doc/netcat/examples</em> или <em>/usr/share/doc/netcat-traditional/examples</em>. Страницата с упътване за ползване можете да видите с командата man nc съответно man netcat.</p>
<h3>Заключение</h3>
<p style="text-align: justify;">Netcat със лесните за използване и огромния брой от услуги се доказва като един незаменим помощник/инструмент при изпълняването на различни задачи в мрежата. В случай, че не ви достигат опциите, които предлага съществуват и разширената версия <a href="http://www.dest-unreach.org/socat/" target="_blank">Socat</a>, а за кодирано предаване <a href="http://cryptcat.sourceforge.net/" target="_blank">Cryptcat</a>. И двете приложения наподобяват по начина си на използване на Netcat, но залагат на различни основни точки при използването им.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bultux.org/tutorials/netcat-shweicarsko-nojche-za-mreji/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Инсталация и конфигуриране на irssi</title>
		<link>http://www.bultux.org/applications/instalaciq-i-konfigurirane-na-irssi</link>
		<comments>http://www.bultux.org/applications/instalaciq-i-konfigurirane-na-irssi#comments</comments>
		<pubDate>Wed, 28 Oct 2009 12:54:47 +0000</pubDate>
		<dc:creator>Владимир Колев</dc:creator>
				<category><![CDATA[Приложения]]></category>
		<category><![CDATA[irc]]></category>
		<category><![CDATA[irssi]]></category>
		<category><![CDATA[инсталиране]]></category>
		<category><![CDATA[конфигуриране]]></category>
		<category><![CDATA[чат]]></category>

		<guid isPermaLink="false">http://bultux.sikomi.com/?p=12</guid>
		<description><![CDATA[<img src="http://bultux.org/wp-content/plugins/category-icons/cats/apps.png" width="22" height="22" alt="" title="Приложения" /><br/>Какво е irssi irssi е конзолен IRC клиент за UNIX базирани операционни системи, освен това поддържа и SILC и ICB протоколи чрез плъгини. Някои от основните функции на клиента: Автоматично логване Форматиране и теми Разширяване чрез плъгини Настройваеми клавишни комбинации Perl интерфейс за скриптове [TAB] довършване на команди и други Инсталиране Ако използвате дебиан базирана [...]]]></description>
			<content:encoded><![CDATA[<img src="http://bultux.org/wp-content/plugins/category-icons/cats/apps.png" width="22" height="22" alt="" title="Приложения" /><br/><h3 style="text-align: justify;">Какво е irssi</h3>
<div style="text-align: justify;">
<p><strong>irssi</strong> е конзолен <acronym title="Internet Relay Chat">IRC</acronym> клиент за UNIX базирани операционни системи, освен това поддържа и SILC и ICB протоколи чрез плъгини.</p>
<p>Някои от основните функции на клиента:</p>
<ul>
<li>
<div>Автоматично логване</div>
</li>
<li>
<div>Форматиране и теми</div>
</li>
<li>
<div>Разширяване чрез плъгини</div>
</li>
<li>
<div>Настройваеми клавишни комбинации</div>
</li>
<li>
<div><acronym title="Practical Extraction and Report Language">Perl</acronym> интерфейс за скриптове</div>
</li>
<li>
<div>[TAB] довършване на команди</div>
</li>
<li>
<div>и други</div>
</li>
</ul>
<p><span id="more-12"></span></p>
<h3>Инсталиране</h3>
<div>
<p>Ако използвате дебиан базирана дистрибуция е много вероятно да намерите irssi в хранилищата с пакети и инсталацията би била доста бърза и лесна:</p>


<div class="wp-geshi-highlight"><div class="bash"><pre class="de1"><span class="kw2">sudo</span> <span class="kw2">apt-get install</span> irssi</pre></div></div>


<p>в случай обаче, че нямате приложението в хранилищата, можете да си го добавите като отворите sources.list и прибавите в края следното:</p>


<div class="wp-geshi-highlight"><div class="bash"><pre class="de1"><span class="co0"># Sources for the irssi IRC client</span>
deb http:<span class="sy0">//</span>www.davidpashley.com<span class="sy0">/</span>debian<span class="sy0">/</span>irssi<span class="sy0">/</span> .<span class="sy0">/</span></pre></div></div>


<p>За други дистрибуции можете да погледнете в секцията download на официалната страница на <a title="http://www.irssi.org" rel="nofollow" href="http://www.irssi.org/">irssi</a>: <a title="http://www.irssi.org/download#binaries" rel="nofollow" href="http://www.irssi.org/download#binaries">http://www.irssi.org/download#binaries</a></p>
<h3>Инсталиране на плъгини и теми</h3>
<div>
<p>Пъгините за irssi са обикновени perl скриптове, които можете да намерите на официялната страница. Тъй като са много и наистина не си заслужава да влизам в подробности, кой и за какво и как да го използвате. Ще ви покажа обаче как първо да си ги инсталирате и съответно да настроите за автоматично зареждане. Тъй като на официалната страница няма да намерите скриптове за музикални плейъри като Rhythmbox или Exaile ще добавя изходния код и на двата в края на тази секция.</p>
</div>
<h3>Инсталиране на скрипт</h3>
<div>
<p>Създайте директория <code>~/.irssi/scripts</code> и още една поддиректория <code>~/.irssi/scripts/autorun</code> можете да направите това с една команда:</p>


<div class="wp-geshi-highlight"><div class="bash"><pre class="de1"><span class="kw2">mkdir</span> ~<span class="sy0">/</span>.irssi<span class="sy0">/</span>scripts<span class="sy0">/</span>autorun</pre></div></div>


<p>След което просто записвате желания файл в ~/.irssi/scripts и в приложението изпълнявате следната команда:</p>


<div class="wp-geshi-highlight"><div class="bash"><pre class="de1"><span class="sy0">/</span>script load име_на_скрипта.pl</pre></div></div>


<p>разбира се, за да спрете някой скрипт командата ще бъде:</p>


<div class="wp-geshi-highlight"><div class="bash"><pre class="de1"><span class="sy0">/</span>script unload име_на_скрипта.pl</pre></div></div>


<p>За да направите желаните скриптове да се зареждат със стартирането на клиента просто трябва да ги копирате в създадената по-рано директория <code>~/.irssi/scripts/autorun</code></p>
</div>
<h4>Скрипт за Rhythmbox</h4>
<div>
<p>Просто създайте файл rhythm.pl в директорията за скриптове със следното съдържание:</p>


<div class="wp-geshi-highlight"><div class="perl"><ol><li class="li1"><pre class="de1"><span class="co1">#!/usr/bin/perl -w</span></pre></li><li class="li1"><pre class="de1">&nbsp;</pre></li><li class="li1"><pre class="de1"><span class="kw2">BEGIN</span><span class="br0">&#123;</span></pre></li><li class="li1"><pre class="de1"><span class="kw2">use</span> vars <span class="st_h">'$hook'</span><span class="sy0">,</span><span class="st_h">'$info'</span><span class="sy0">;</span></pre></li><li class="li1"><pre class="de1"><span class="kw3">eval</span> <span class="kw3">q</span> <span class="br0">&#123;</span></pre></li><li class="li1"><pre class="de1"><span class="kw2">use</span> Irssi<span class="sy0">;</span></pre></li><li class="li1"><pre class="de1"><span class="br0">&#125;</span><span class="sy0">;</span></pre></li><li class="li1"><pre class="de1"><span class="re0">$hook</span> <span class="sy0">=</span> <span class="sy0">!!</span><span class="co5">$@</span><span class="sy0">;</span></pre></li><li class="li1"><pre class="de1"><span class="br0">&#125;</span></pre></li><li class="li1"><pre class="de1">&nbsp;</pre></li><li class="li1"><pre class="de1"><span class="kw2">sub</span> np</pre></li><li class="li1"><pre class="de1"><span class="br0">&#123;</span></pre></li><li class="li1"><pre class="de1"><span class="re0">$info</span> <span class="sy0">=</span> <span class="st0">`rhythmbox-client --print-playing-format %ta<span class="es0">\\</span> -<span class="es0">\\</span> %tt<span class="es0">\\</span> -<span class="es0">\\</span> &quot;(%te/%td)&quot;`</span><span class="sy0">;</span></pre></li><li class="li1"><pre class="de1"><span class="kw3">chop</span> <span class="re0">$info</span><span class="sy0">;</span></pre></li><li class="li1"><pre class="de1">Irssi<span class="sy0">::</span><span class="me2">active_win</span><span class="sy0">-&gt;</span><span class="me1">command</span><span class="br0">&#40;</span><span class="st0">&quot;/me is now playing: &quot;</span><span class="sy0">.</span><span class="re0">$info</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></li><li class="li1"><pre class="de1"><span class="kw3">return</span> <span class="nu0">1</span><span class="sy0">;</span></pre></li><li class="li1"><pre class="de1"><span class="br0">&#125;</span></pre></li><li class="li1"><pre class="de1">&nbsp;</pre></li><li class="li1"><pre class="de1"><span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$hook</span><span class="br0">&#41;</span><span class="br0">&#123;</span></pre></li><li class="li1"><pre class="de1">rb<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></li><li class="li1"><pre class="de1"><span class="br0">&#125;</span><span class="kw1">else</span><span class="br0">&#123;</span></pre></li><li class="li1"><pre class="de1">Irssi<span class="sy0">::</span><span class="me2">command_bind</span><span class="br0">&#40;</span><span class="st_h">'np'</span><span class="sy0">,</span> <span class="st_h">'np'</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></li><li class="li1"><pre class="de1"><span class="br0">&#125;</span></pre></li></ol></div></div>


<p>съответно командата за известяване на песента, която слушате в момента ще бъде <code>np</code>. Скрипта можете да го разширите разбира се като използвате опциите на rhythmbox-client добавяйки различни команди (<code>--next</code>, <code>--prev</code>, <code>--stop</code>, <code>--play</code> и т.н.).</p>
</div>
<h4>Скрипт за Exaile</h4>
<div>
<p>Създайте скрипт exaile.pl във директорията със скриптове и въведете следното съдържание:</p>


<div class="wp-geshi-highlight"><div class="perl"><ol><li class="li1"><pre class="de1"><span class="co1">#!/usr/bin/perl</span></pre></li><li class="li1"><pre class="de1">&nbsp;</pre></li><li class="li1"><pre class="de1"><span class="kw2">use</span> Net<span class="sy0">::</span><span class="me2">DBus</span><span class="sy0">;</span></pre></li><li class="li1"><pre class="de1"><span class="kw2">use</span> strict<span class="sy0">;</span></pre></li><li class="li1"><pre class="de1"><span class="kw2">use</span> Irssi<span class="sy0">;</span></pre></li><li class="li1"><pre class="de1"><span class="kw2">use</span> vars <span class="kw3">qw</span><span class="br0">&#40;</span><span class="re0">$VERSION</span> <span class="re0">%IRSSI</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></li><li class="li1"><pre class="de1">&nbsp;</pre></li><li class="li1"><pre class="de1"><span class="re0">$VERSION</span> <span class="sy0">=</span> <span class="st0">&quot;1.0&quot;</span><span class="sy0">;</span></pre></li><li class="li1"><pre class="de1"><span class="re0">%IRSSI</span> <span class="sy0">=</span> <span class="br0">&#40;</span></pre></li><li class="li1"><pre class="de1">authors <span class="sy0">=&gt;</span> <span class="st0">&quot;Adam Olsen&quot;</span><span class="sy0">,</span></pre></li><li class="li1"><pre class="de1">contact <span class="sy0">=&gt;</span> <span class="st0">&quot;arolsen<span class="es0">\@</span>gmail.com&quot;</span><span class="sy0">,</span></pre></li><li class="li1"><pre class="de1">name <span class="sy0">=&gt;</span> <span class="st0">&quot;Exaile interface script&quot;</span><span class="sy0">,</span></pre></li><li class="li1"><pre class="de1">description <span class="sy0">=&gt;</span> <span class="st0">&quot;Prints what you're playing to an irssi channel&quot;</span><span class="sy0">,</span></pre></li><li class="li1"><pre class="de1">license <span class="sy0">=&gt;</span> <span class="st0">&quot;Public domain&quot;</span></pre></li><li class="li1"><pre class="de1"><span class="br0">&#41;</span><span class="sy0">;</span></pre></li><li class="li1"><pre class="de1">&nbsp;</pre></li><li class="li1"><pre class="de1"><span class="kw2">sub</span> test_dbus</pre></li><li class="li1"><pre class="de1"><span class="br0">&#123;</span></pre></li><li class="li1"><pre class="de1"><span class="kw1">my</span> <span class="re0">$service</span> <span class="sy0">=</span> <span class="kw3">shift</span><span class="sy0">;</span></pre></li><li class="li1"><pre class="de1">&nbsp;</pre></li><li class="li1"><pre class="de1"><span class="kw1">my</span> <span class="re0">$bus</span> <span class="sy0">=</span> Net<span class="sy0">::</span><span class="me2">DBus</span><span class="sy0">-&gt;</span><span class="me1">session</span><span class="sy0">;</span></pre></li><li class="li1"><pre class="de1"><span class="kw1">my</span> <span class="re0">$obj</span> <span class="sy0">=</span> <span class="re0">$bus</span><span class="sy0">-&gt;</span><span class="me1">get_service</span><span class="br0">&#40;</span><span class="st0">&quot;org.freedesktop.DBus&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></li><li class="li1"><pre class="de1"><span class="kw1">my</span> <span class="re0">$iface</span> <span class="sy0">=</span> <span class="re0">$obj</span><span class="sy0">-&gt;</span><span class="me1">get_object</span><span class="br0">&#40;</span><span class="st0">&quot;/org/freedesktop/DBus&quot;</span><span class="sy0">,</span></pre></li><li class="li1"><pre class="de1"><span class="st0">&quot;org.freedesktop.DBus&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></li><li class="li1"><pre class="de1">&nbsp;</pre></li><li class="li1"><pre class="de1"><span class="kw1">foreach</span> <span class="kw1">my</span> <span class="re0">$item</span><span class="br0">&#40;</span> <span class="sy0">@</span><span class="br0">&#123;</span><span class="re0">$iface</span><span class="sy0">-&gt;</span><span class="me1">ListNames</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#125;</span> <span class="br0">&#41;</span></pre></li><li class="li1"><pre class="de1"><span class="br0">&#123;</span></pre></li><li class="li1"><pre class="de1"><span class="kw1">if</span><span class="br0">&#40;</span> <span class="re0">$item</span> <span class="kw1">eq</span> <span class="re0">$service</span> <span class="br0">&#41;</span></pre></li><li class="li1"><pre class="de1"><span class="br0">&#123;</span></pre></li><li class="li1"><pre class="de1"><span class="kw3">return</span> <span class="nu0">1</span><span class="sy0">;</span></pre></li><li class="li1"><pre class="de1"><span class="br0">&#125;</span></pre></li><li class="li1"><pre class="de1"><span class="br0">&#125;</span></pre></li><li class="li1"><pre class="de1">&nbsp;</pre></li><li class="li1"><pre class="de1"><span class="kw3">return</span> <span class="nu0">0</span><span class="sy0">;</span></pre></li><li class="li1"><pre class="de1"><span class="br0">&#125;</span></pre></li><li class="li1"><pre class="de1">&nbsp;</pre></li><li class="li1"><pre class="de1"><span class="kw2">sub</span> print_info</pre></li><li class="li1"><pre class="de1"><span class="br0">&#123;</span></pre></li><li class="li1"><pre class="de1"><span class="kw1">my</span><span class="br0">&#40;</span><span class="re0">$data</span><span class="sy0">,</span> <span class="re0">$server</span><span class="sy0">,</span> <span class="re0">$witem</span><span class="br0">&#41;</span> <span class="sy0">=</span> <span class="co5">@_</span><span class="sy0">;</span></pre></li><li class="li1"><pre class="de1">&nbsp;</pre></li><li class="li1"><pre class="de1"><span class="kw1">my</span> <span class="re0">$bus</span> <span class="sy0">=</span> Net<span class="sy0">::</span><span class="me2">DBus</span><span class="sy0">-&gt;</span><span class="me1">session</span><span class="sy0">;</span></pre></li><li class="li1"><pre class="de1">&nbsp;</pre></li><li class="li1"><pre class="de1"><span class="kw1">if</span><span class="br0">&#40;</span><span class="sy0">!</span><span class="re0">&amp;test_dbus</span><span class="br0">&#40;</span><span class="st0">&quot;org.exaile.DBusInterface&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span></pre></li><li class="li1"><pre class="de1"><span class="br0">&#123;</span></pre></li><li class="li1"><pre class="de1"><span class="kw3">print</span> <span class="st0">&quot;Could not see Exaile in dbus.&quot;</span><span class="sy0">;</span></pre></li><li class="li1"><pre class="de1"><span class="kw3">return</span><span class="sy0">;</span></pre></li><li class="li1"><pre class="de1"><span class="br0">&#125;</span></pre></li><li class="li1"><pre class="de1">&nbsp;</pre></li><li class="li1"><pre class="de1"><span class="kw1">my</span> <span class="re0">$obj</span> <span class="sy0">=</span> <span class="re0">$bus</span><span class="sy0">-&gt;</span><span class="me1">get_service</span><span class="br0">&#40;</span><span class="st0">&quot;org.exaile.DBusInterface&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></li><li class="li1"><pre class="de1"><span class="kw1">my</span> <span class="re0">$iface</span> <span class="sy0">=</span> <span class="re0">$obj</span><span class="sy0">-&gt;</span><span class="me1">get_object</span><span class="br0">&#40;</span><span class="st0">&quot;/DBusInterfaceObject&quot;</span><span class="sy0">,</span></pre></li><li class="li1"><pre class="de1"><span class="st0">&quot;org.exaile.DBusInterface&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></li><li class="li1"><pre class="de1">&nbsp;</pre></li><li class="li1"><pre class="de1"><span class="kw1">my</span> <span class="re0">$pos</span> <span class="sy0">=</span> <span class="re0">$iface</span><span class="sy0">-&gt;</span><span class="me1">current_position</span><span class="sy0">;</span></pre></li><li class="li1"><pre class="de1"><span class="kw1">if</span><span class="br0">&#40;</span><span class="sy0">!</span><span class="re0">$pos</span><span class="br0">&#41;</span></pre></li><li class="li1"><pre class="de1"><span class="br0">&#123;</span></pre></li><li class="li1"><pre class="de1"><span class="kw3">print</span> <span class="st0">&quot;Not playing anything&quot;</span><span class="sy0">;</span></pre></li><li class="li1"><pre class="de1"><span class="kw3">return</span><span class="sy0">;</span></pre></li><li class="li1"><pre class="de1"><span class="br0">&#125;</span></pre></li><li class="li1"><pre class="de1"><span class="re0">$pos</span> <span class="sy0">=</span> <span class="kw3">int</span><span class="br0">&#40;</span><span class="re0">$pos</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></li><li class="li1"><pre class="de1">&nbsp;</pre></li><li class="li1"><pre class="de1"><span class="kw1">my</span> <span class="re0">$song</span> <span class="sy0">=</span> <span class="re0">$iface</span><span class="sy0">-&gt;</span><span class="me1">get_title</span><span class="sy0">;</span></pre></li><li class="li1"><pre class="de1"><span class="kw1">my</span> <span class="re0">$artist</span> <span class="sy0">=</span> <span class="re0">$iface</span><span class="sy0">-&gt;</span><span class="me1">get_artist</span><span class="sy0">;</span></pre></li><li class="li1"><pre class="de1"><span class="kw1">my</span> <span class="re0">$length</span> <span class="sy0">=</span> <span class="re0">$iface</span><span class="sy0">-&gt;</span><span class="me1">get_length</span><span class="sy0">;</span></pre></li><li class="li1"><pre class="de1">&nbsp;</pre></li><li class="li1"><pre class="de1"><span class="kw1">if</span><span class="br0">&#40;</span><span class="re0">$witem</span> <span class="sy0">&amp;&amp;</span> <span class="re0">$witem</span><span class="sy0">-&gt;</span><span class="br0">&#123;</span>type<span class="br0">&#125;</span> <span class="kw1">eq</span> <span class="st_h">'CHANNEL'</span><span class="br0">&#41;</span></pre></li><li class="li1"><pre class="de1"><span class="br0">&#123;</span></pre></li><li class="li1"><pre class="de1"><span class="re0">$witem</span><span class="sy0">-&gt;</span><span class="me1">command</span><span class="br0">&#40;</span><span class="st0">&quot;ACTION &quot;</span> <span class="sy0">.</span> <span class="re0">$witem</span><span class="sy0">-&gt;</span><span class="br0">&#123;</span>name<span class="br0">&#125;</span> <span class="sy0">.</span></pre></li><li class="li1"><pre class="de1"><span class="st0">&quot; is playing $song by $artist [$length $pos<span class="es0">\%</span>]&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></li><li class="li1"><pre class="de1"><span class="br0">&#125;</span></pre></li><li class="li1"><pre class="de1"><span class="br0">&#125;</span></pre></li><li class="li1"><pre class="de1">&nbsp;</pre></li><li class="li1"><pre class="de1">Irssi<span class="sy0">::</span><span class="me2">command_bind</span><span class="br0">&#40;</span><span class="st0">&quot;exaile&quot;</span><span class="sy0">,</span> <span class="st_h">'print_info'</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></li><li class="li1"><pre class="de1"><span class="kw3">print</span> <span class="st0">&quot;Exaile script loaded.&quot;</span><span class="sy0">;</span></pre></li></ol></div></div>


<p>Командата за изпълнение на скрипта е <code>exaile</code>, но спокойно можете да я замените с Irssi::command_bind(“mp3”, &#8216;print_info&#8217;); за да използвате по-крактка команда &#8211; <code>mp3</code>.</p>
</div>
<h3>Инсталиране на теми</h3>
<div>
<p>Теми можете да изтеглите от <a title="http://www.irssi.org/themes" rel="nofollow" href="http://www.irssi.org/themes">themes страницата</a> в официалната страница на клиента. Това са обикновени .theme файлове, които просто записвате в главната директория <code>~/.irssi/</code>.</p>
<p>За да заредите желаната тема, просто в клиента изпълнете командата:</p>


<div class="wp-geshi-highlight"><div class="bash"><pre class="de1"><span class="sy0">/</span><span class="kw1">set</span> theme име_на_темата</pre></div></div>


<p>Ако искате темата да ви бъде запазена и за следващото включване на irssi просто изпълнете командата:</p>


<div class="wp-geshi-highlight"><div class="bash"><pre class="de1"><span class="sy0">/</span>save</pre></div></div>


<p>Тази команда можете да използвате за записване на всички въведени от вас настройки през клиента (без да сте редактирали конфигурационния файл <code>~/.irssi/config</code>.</p>
</div>
<h3>Настройки на клиента</h3>
<div>
<p>Настройките се записват по принцип в конфигурационен файл <code>~/.irssi/config</code>, който можете да редактирате директно от клиента. Разбира се първото е по-лесно от второто, но за по-подробни обяснения ще трябва да прочетете <a title="http://www.irssi.org/documentation" rel="nofollow" href="http://www.irssi.org/documentation">документацията на irssi</a></p>
<p>За да не навлизам в излишни подробности ще представя най-използваните:</p>
<ul>
<li>
<div><strong>Добавяне на сървър за автоматично свързване при стартиране на клиента</strong>:</p>


<div class="wp-geshi-highlight"><div class="bash"><pre class="de1"><span class="sy0">/</span>SERVER ADD <span class="re5">-auto</span> <span class="re5">-network</span> FreeNode irc.freenode.net <span class="nu0">6667</span></pre></div></div>


<p>Където опцията <strong>-auto</strong> е за автоматично свързване, опцията <strong>-network</strong> определя раздел, в който да запише адреса на сървъра.</div>
</li>
</ul>
<p><div class="note"><div class="noteclassic">Ако добавяте повече сървъри, не е необходимо на всичките да слагате -auto, тъй като ако клиента не успее да се свърже със сървъра по подразбиране, автоматично ще смени на следващия от съответната мрежа</div></div></p>
<ul>
<li>
<div><strong>Добавяне на канал за автоматично влизане след свързване с определен сървър</strong>:<br />
[bash]/CHANNEL ADD -auto -network #ubuntu-bg FreeNode[/bash]</div>
</li>
<li>
<div><strong>Маркиране на вашия nickname при споменаването му в канал</strong>:<br />
[bash]/HIGHLIGHT вашия_ник_или_дума[/bash]</div>
</li>
<li>
<div><strong>Показване на няколко прозореца в един (split)</strong> &#8211; за целта просто можете да използвате следните команди:</p>


<div class="wp-geshi-highlight"><div class="bash"><pre class="de1"><span class="sy0">/</span>WINDOW SHOW <span class="nu0">1</span> <span class="co0">#показва първия прозорец (status), можете 1 да замените с друг цифра за показване на друг прозорец</span>
<span class="sy0">/</span>WINDOW HIDE <span class="nu0">1</span> <span class="co0">#скрива пръвия прозорец (status)</span>
<span class="sy0">/</span>Window CLOSE  <span class="co0">#затваря прозореца, в който се намирате, можете да добавите и номера на прозореца, който искате да затворите</span></pre></div></div>


</div>
</li>
<li>
<div><strong>Автоматична автентикация при влизане в мрежа</strong>:</p>


<div class="wp-geshi-highlight"><div class="bash"><pre class="de1"><span class="sy0">/</span>NETWORK ADD <span class="re5">-autosendcmd</span> <span class="st0">&quot;/^msg NickServ IDENTIFY password;wait 2000&quot;</span> freenode</pre></div></div>


<p>На мястото на <em>password</em> въведете своята парола. При влизане стартиране на клиента и след свързане с мрежата, клиента ще изпрати пароалта за вашия ник до сървъра, но няма да бъде показвана в клиента и по този начин ако някой седи до вас няма да види паролата ви. Параметърът <strong><em>wait</em></strong> е важен, тъй като irssi ще изчака да се свържете преди да изпрати паролата, увеличете стойността, в случай, че се свързвате по-бавно.</div>
</li>
</ul>
</div>
<h3>Полезни клавишни комбинации</h3>
<div>
<ul>
<li>
<div>Смяна на активния прозорец. Комбинациите са няколко и работата им зависи от конфигурацията на вашия терминал:</div>
<ul>
<li>
<div><code>Ctrl+n</code>, <code>Ctrl+p</code> &#8211; сменя към следващия, сътоветно предишния прозорец</div>
</li>
<li>
<div><code>Alt+1</code> &#8211; прескача към първия прозорец, цифрата можете да замените с номера на желания от вас прозорец</div>
</li>
</ul>
</li>
</ul>
<p><div class="note"><div class="notehelp">Можете да изплзвате бутоните <code>Page Up</code> и <code>Page Down</code>, но не функционират при всички терминали.</div></div></p>
</div>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.bultux.org/applications/instalaciq-i-konfigurirane-na-irssi/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

