<?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>Записки на полях &#187; shell</title>
	<atom:link href="http://snake.khd.ru/tag/shell-skripty/feed/" rel="self" type="application/rss+xml" />
	<link>http://snake.khd.ru</link>
	<description>cat /var/log/messages</description>
	<lastBuildDate>Sun, 05 Feb 2012 11:22:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>Обработка записей Asterisk</title>
		<link>http://snake.khd.ru/2010/03/obrabotka-zapisej-asterisk/</link>
		<comments>http://snake.khd.ru/2010/03/obrabotka-zapisej-asterisk/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 06:38:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[asterisk]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[voip]]></category>

		<guid isPermaLink="false">http://snake.khd.ru/?p=268</guid>
		<description><![CDATA[Имеется &#8211; папка с записями asterisk где-то за год &#8211; где-то гигов на 30. Т.к. астериск все пишет в wav, хорошо бы это дело переконвертировать в mp3, да еще и рассортировать по дате, для удобства поиска нужного звонка. После пары минут гугления был найден искомый скрипт, но он был рабочий только наполовину, поэтому пришлось допиливать <a href='http://snake.khd.ru/2010/03/obrabotka-zapisej-asterisk/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Имеется &#8211; папка с записями <a href="http://snake.khd.ru/tag/asterisk/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  asterisk">asterisk</a> где-то за год &#8211; где-то гигов на 30. Т.к. астериск все пишет в wav, хорошо бы это дело переконвертировать в mp3, да еще и рассортировать по дате, для удобства поиска нужного звонка. После пары минут гугления был найден искомый скрипт, но он был рабочий только наполовину, поэтому пришлось допиливать ручками. Вот что получилось в итоге<br />
<span id="more-268"></span></p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/bash</span>
<span style="color: #666666; font-style: italic;">#20100503 - Author: Gregg Hansen. Modified by Snake</span>
<span style="color: #666666; font-style: italic;">#version 0.2</span>
<span style="color: #666666; font-style: italic;">#Сначала убедитесь в том, что у вас стоит пакет lame</span>
<span style="color: #666666; font-style: italic;">#Папка с записями разговоров</span>
<span style="color: #007800;">recorddir</span>=<span style="color: #ff0000;">&quot;/var/spool/asterisk/monitor&quot;</span>
<span style="color: #000000; font-weight: bold;">for</span> i <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">ls</span> <span style="color: #007800;">$recorddir</span><span style="color: #000000; font-weight: bold;">/*</span>.wav<span style="color: #000000; font-weight: bold;">`</span>; <span style="color: #000000; font-weight: bold;">do</span>
<span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #007800;">$recorddir</span>
<span style="color: #666666; font-style: italic;">#Шаблон даты</span>
<span style="color: #007800;">date</span>=<span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">ls</span> <span style="color: #660033;">-l</span> <span style="color: #007800;">$i</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">awk</span> <span style="color: #ff0000;">'{print $6}'</span><span style="color: #000000; font-weight: bold;">`</span>
<span style="color: #666666; font-style: italic;">#Шаблон часов</span>
<span style="color: #007800;">hour</span>=<span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">ls</span> <span style="color: #660033;">-l</span> <span style="color: #007800;">$i</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">awk</span> <span style="color: #ff0000;">'{print $7}'</span><span style="color: #000000; font-weight: bold;">`</span>
<span style="color: #007800;">mp3</span>=<span style="color: #000000; font-weight: bold;">`</span><span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #007800;">$i</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">sed</span> <span style="color: #ff0000;">'s/.wav/.mp3/g'</span><span style="color: #000000; font-weight: bold;">`</span>
<span style="color: #666666; font-style: italic;">#Собственно само кодирование. Опции lame выбрать по вкусу</span>
<span style="color: #c20cb9; font-weight: bold;">lame</span> <span style="color: #660033;">-d</span> <span style="color: #660033;">-h</span> <span style="color: #660033;">-m</span> j <span style="color: #660033;">-b</span> <span style="color: #000000;">128</span> <span style="color: #007800;">$i</span> <span style="color: #007800;">$mp3</span>
<span style="color: #666666; font-style: italic;">#Сортировка будет происходить по дням, а внутри дня - по времени начала разговора</span>
<span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #800000;">${date}</span>
<span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #007800;">$recorddir</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #800000;">${date}</span>
<span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #800000;">${hour}</span>
<span style="color: #c20cb9; font-weight: bold;">mv</span> <span style="color: #800000;">${mp3}</span> <span style="color: #800000;">${hour}</span>
<span style="color: #666666; font-style: italic;">#wav файлы перемещаются в отдельную директорию, на всякий случай.</span>
<span style="color: #666666; font-style: italic;">#В дальнейшем можно будет просто периодически очищать эту директорию</span>
<span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #800000;">${recorddir}</span><span style="color: #000000; font-weight: bold;">/</span>wav_recordings
<span style="color: #c20cb9; font-weight: bold;">mv</span> <span style="color: #007800;">$i</span> <span style="color: #800000;">${recorddir}</span><span style="color: #000000; font-weight: bold;">/</span>wav_recordings<span style="color: #000000; font-weight: bold;">/</span>
<span style="color: #000000; font-weight: bold;">done</span></pre></div></div>

<p>На выходе мы вместо кучи файлов получаем аккуратные папочки с датами. Скрипт лучше всего засунуть в cron и запускать каждые сутки.</p>
]]></content:encoded>
			<wfw:commentRss>http://snake.khd.ru/2010/03/obrabotka-zapisej-asterisk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>#!/bin/bash для чайников:))</title>
		<link>http://snake.khd.ru/2009/10/binbash-dlya-chajnikov/</link>
		<comments>http://snake.khd.ru/2009/10/binbash-dlya-chajnikov/#comments</comments>
		<pubDate>Sun, 25 Oct 2009 15:04:31 +0000</pubDate>
		<dc:creator>onion</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[stargazer]]></category>

		<guid isPermaLink="false">http://snake.khd.ru/?p=132</guid>
		<description><![CDATA[Многие пользователи часто сталкиваются с выполнением рутинных операций. Будь то каждодневное монтирование диска при запуске системы или запуск приложения с одними и теми же параметрами. Все эти операции можно с легкостью выполнить множеством способов. В рамках данного мануала я покажу один из способов автоматизации рутинных операций с помощью shell-скриптов на примере конкретной задачи. Но для <a href='http://snake.khd.ru/2009/10/binbash-dlya-chajnikov/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Многие пользователи часто сталкиваются с выполнением рутинных операций. Будь то каждодневное монтирование диска при запуске системы или запуск приложения с одними и теми же параметрами. Все эти операции можно с легкостью выполнить множеством способов.<br />
В рамках данного мануала я покажу один из способов автоматизации рутинных операций с помощью <a href="http://snake.khd.ru/tag/shell-skripty/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  shell">shell</a>-скриптов на примере конкретной задачи.<span id="more-132"></span> Но для начала немного теории.</p>
<p>Итак, что же такое shell-скрипты и как их поставить себе на вооружение?</p>
<p>Shell &#8212; это командная оболочка. Но еще это и мощный язык программирования. Программы на языке shell называют сценариями, или скриптами. Для использования в скриптах доступен полный набор команд, утилит и программ UNIX и плюс внутренние команды shell &#8212; условные операторы, операторы циклов и пр., которые увеличивают мощь и гибкость сценариев. </p>
<p>Структуру скрипта можно описать в семи словах следующим образом: «вызов командного интерпретатора — тело скрипта — завершение скрипта». Пишутся скрипты с помощью  любого текстового редактора, сохраняются они как текстовые файлы. Но, чтобы было удобнее, я сохраняю их с расширением «*.sh». Но давайте посмотрим на все это на примере конкретной задачи.</p>
<p>Итак, постановка задачи. Есть приложение, которое требуется запускать с довольно большим набором параметров. Запускать придется часто, а каждый раз вводить эти параметры лень:)) Чтоб было нагляднее, посмотрим, как выглядит это действие:</p>
<p><em>/home/Admin/soft/sgconf/sgconf -s 10.10.10.1 -p 5555 -a Admin -w 112233 -u user -c 100</em></p>
<p>Что же делает эта команда? Вкратце опишу ситуацию. Есть сервер, раздающий интернет пользователям. Пользователи сидят в инете  по цене n рублей за мегабайт. Когда средства на балансе заканчиваются, юзеры приносят деньги, администратор начисляет их им на баланс и пользователи могут снова сидеть в инете за n руб/метр. Сервер находится по адресу  10.10.10.1, порт сервера — 5555, администратора зовут Admin, его пароль — 112233. Требуется на пользователя user положить 100 рублей.  Первые 4 параметра — адрес и порт сервера, логин и пароль администратора будут неизменными, а последние два — имя юзера и сумма платежа буду каждый раз разными. Соответственно, нам нет нужды каждый раз вводить 4 неизменных параметра, можно жестко прописать их в теле скрипта, а последние 2 — у нас будут переменными.</p>
<p>Приступим непосредственно к написанию скрипта.</p>
<p>Что же должен делать скрипт? Считывать две переменные(назовем их «user» и «cash»), подставлять их в параметры запуска и запускать приложение. В принципе, все, но так как разработчиками приложения не были предусмотрены некоторые полезные функции, мы можем сами добавить их. Например, мне было бы очень удобно, если бы у меня велся лог пополнений баланса.</p>
<p>Открываем текстовый редактор и пишем код.</p>
<p>Первым делом нам нужен вызов интерпретатора. Для данного скрипта будем использовать интерпретатор <a href="http://snake.khd.ru/tag/bash/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  bash">bash</a>.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/bash</span></pre></div></div>

<p>Далее добавим небольшое описание того, что требуется сделать пользователю. Вывод текста осуществляется командой echo. Параметром данной команды является сам текст, который нужно вывести. Пользователь вводит значение переменной, которую считывает оператор read. Параметром этой команды является имя переменной, значение которой задает пользователь. Выглядит это так:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #660033;">--------</span> sgconf.sh v <span style="color: #000000;">0.1</span> <span style="color: #660033;">--------</span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;">echo</span> Имя пользователя:
&nbsp;
	<span style="color: #c20cb9; font-weight: bold;">read</span> user
&nbsp;
<span style="color: #7a0874; font-weight: bold;">echo</span> Сумма платежа:
&nbsp;
	<span style="color: #c20cb9; font-weight: bold;">read</span> cash
&nbsp;
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #660033;">---------------------------------</span></pre></div></div>

<p>Первая и последняя строки добавлены для удобства пользователя, чтобы было видно, где начинается выполнение скрипта.<br />
Этого кода достаточно, чтобы скрипт выполнял свою основную задачу — запуск приложения с параметрами. Добавим эту операцию с учетом введенных переменных:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>Admin<span style="color: #000000; font-weight: bold;">/</span>soft<span style="color: #000000; font-weight: bold;">/</span>sgconf<span style="color: #000000; font-weight: bold;">/</span>sgconf <span style="color: #660033;">-s</span> 10.10.10.1 <span style="color: #660033;">-p</span> <span style="color: #000000;">5555</span> <span style="color: #660033;">-a</span> Admin <span style="color: #660033;">-w</span> <span style="color: #000000;">112233</span> <span style="color: #660033;">-u</span> <span style="color: #007800;">$user</span> <span style="color: #660033;">-c</span> <span style="color: #007800;">$cash</span></pre></div></div>

<p>Обратите внимание, что вызов переменной обозначается знаком «<strong>$</strong>», т.е если имя переменной указано со знаком $, то мы обращаемся к ее значению.</p>
<p>Все, теперь нам не нужно каждый раз запускать программу с длиннющими параметрами. Запускаем скрипт, вводим имя плательщика, платеж и все. Но мы договорились еще и вести логи. Займемся решением этой задачи.</p>
<p>Логи у нас будут лежать в виде файла sgconf.log, находящимся в удобной для нас папке. Что нужно для ведения нормальных логов? Во-первых — отметка о выполненной операции, во-вторых — время, когда эта операция была выполнена. Наша операция — это платеж, проведенный на имя пользователя. То есть запись будет иметь следующий формат:</p>
<blockquote><p>Баланс пользователя &#8220;$user&#8221; пополнен на &#8220;$cash&#8221; рублей в $time</p></blockquote>
<p>И если с переменными $user и $cash мы уже разобрались, то откуда берется значение переменной time? </p>
<p>В консоли линукса есть очень полезный оператор, который показывает нам точное время. Вот это точное время мы и будем использовать в качестве значения переменной time. Делается это просто:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #007800;">time</span>=<span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">date</span><span style="color: #000000; font-weight: bold;">`</span></pre></div></div>

<p>То есть переменная определяется как результат, возвращаемый оператором date.</p>
<p>Теперь разберемся с записью файла sgconf.log. Если он уже существует, то в конце добавим новую запись, если нет — то создадим его и внесем туда данные о нашей операции.</p>
<p>Текст, который будем вносить в логи будет таким:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #007800;">text</span>=<span style="color: #ff0000;">&quot;Баланс пользователя &quot;</span><span style="color: #007800;">$user</span><span style="color: #ff0000;">&quot; пополнен на &quot;</span><span style="color: #007800;">$cash</span><span style="color: #ff0000;">&quot; рублей в <span style="color: #007800;">$time</span>&quot;</span></pre></div></div>

<p>Переменная text меняется в зависимости от переменных user, cash и time</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-e</span> <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>Admin<span style="color: #000000; font-weight: bold;">/</span>scripts<span style="color: #000000; font-weight: bold;">/</span>sgconf<span style="color: #000000; font-weight: bold;">/</span>sgconf.log <span style="color: #7a0874; font-weight: bold;">&#93;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">then</span> <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #007800;">$text</span> <span style="color: #000000; font-weight: bold;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;">&amp;</span>gt; <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>Admin<span style="color: #000000; font-weight: bold;">/</span>scripts<span style="color: #000000; font-weight: bold;">/</span>sgconf<span style="color: #000000; font-weight: bold;">/</span>sgconf.log 
&nbsp;
	<span style="color: #000000; font-weight: bold;">else</span> <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #007800;">$text</span> <span style="color: #000000; font-weight: bold;">&amp;</span>gt; <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>Admin<span style="color: #000000; font-weight: bold;">/</span>scripts<span style="color: #000000; font-weight: bold;">/</span>sgconf<span style="color: #000000; font-weight: bold;">/</span>sgconf.log
&nbsp;
<span style="color: #000000; font-weight: bold;">fi</span></pre></div></div>

<p>Проверка условия производится с помощью конструкции <em>if — then — else — fi</em>. Если выполняется условие, заданное в квадратных скобках, то выполняем один код, если это условие не выполняется — другой, затем заканчиваем проверку.</p>
<p>Конструкция <em>[ -e /home/Admin/scripts/sgconf/sgconf.log ]</em><br />
  &#8211; это проверка существования файла /home/Admin/scripts/sgconf/sgconf.log, об этом говорит операция <strong>-e</strong>: если файл существует, она возвращает значение true и выполняется код  <em>echo $text &gt;&gt; /home/Admin/scripts/sgconf/sgconf.log</em>. Если он не существует — то код <em>echo $text &gt; /home/Admin/scripts/sgconf/sgconf.log</em> В первом случае мы добавляем значение переменной text в конец файла(это делается с помощью символа « <strong>&gt;&gt;</strong> »), во втором случае — мы записываем значение text в новый файл(« <strong>&gt;</strong> »).</p>
<p>Все, теперь завершаем наш скрипт командой <em>exit</em>.<br />
Сохраняем код в любое удобное место под именем «sgconf.sh» и пользуемся.</p>
<p>Полный код скрипта выглядит так:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!bin/bash</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#************************************************#</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#                  sgconf.sh                     #</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#           autor: Sergey Kondrashov             #</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#                 10 25, 2009                    #</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#                                                #</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#    how to use sgconfig without hemorrhoids     #</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#************************************************#</span>
&nbsp;
&nbsp;
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #660033;">--------</span> sgconf.sh v <span style="color: #000000;">0.1</span> <span style="color: #660033;">--------</span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;">echo</span> Имя пользователя:
&nbsp;
	<span style="color: #c20cb9; font-weight: bold;">read</span> user
&nbsp;
<span style="color: #7a0874; font-weight: bold;">echo</span> Сумма платежа:
&nbsp;
	<span style="color: #c20cb9; font-weight: bold;">read</span> cash
&nbsp;
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #660033;">---------------------------------</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>Admin<span style="color: #000000; font-weight: bold;">/</span>soft<span style="color: #000000; font-weight: bold;">/</span>sgconf<span style="color: #000000; font-weight: bold;">/</span>sgconf <span style="color: #660033;">-s</span> 10.10.10.1 <span style="color: #660033;">-p</span> <span style="color: #000000;">5555</span> <span style="color: #660033;">-a</span> Admin <span style="color: #660033;">-w</span> <span style="color: #000000;">112233</span> <span style="color: #660033;">-u</span> <span style="color: #007800;">$user</span> <span style="color: #660033;">-c</span> <span style="color: #007800;">$cash</span>
&nbsp;
<span style="color: #007800;">time</span>=<span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">date</span><span style="color: #000000; font-weight: bold;">`</span>
&nbsp;
<span style="color: #007800;">text</span>=<span style="color: #ff0000;">&quot;Баланс пользователя &quot;</span><span style="color: #007800;">$user</span><span style="color: #ff0000;">&quot; пополнен на &quot;</span><span style="color: #007800;">$cash</span><span style="color: #ff0000;">&quot; рублей в <span style="color: #007800;">$time</span>&quot;</span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #007800;">$text</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-e</span> <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>Admin<span style="color: #000000; font-weight: bold;">/</span>scripts<span style="color: #000000; font-weight: bold;">/</span>sgconf<span style="color: #000000; font-weight: bold;">/</span>sgconf.log <span style="color: #7a0874; font-weight: bold;">&#93;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">then</span> <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #007800;">$text</span> <span style="color: #000000; font-weight: bold;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;">&amp;</span>gt; <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>Admin<span style="color: #000000; font-weight: bold;">/</span>scripts<span style="color: #000000; font-weight: bold;">/</span>sgconf<span style="color: #000000; font-weight: bold;">/</span>sgconf.log 
&nbsp;
	<span style="color: #000000; font-weight: bold;">else</span> <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #007800;">$text</span> <span style="color: #000000; font-weight: bold;">&amp;</span>gt; <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>Admin<span style="color: #000000; font-weight: bold;">/</span>scripts<span style="color: #000000; font-weight: bold;">/</span>sgconf<span style="color: #000000; font-weight: bold;">/</span>sgconf.log
&nbsp;
<span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;">exit</span></pre></div></div>

<p>Теперь, когда нам нужно положить кому-нибудь денежку, мы запускаем скрипт командой «sh sgconf.sh», вводим имя плательщика и сумму платежа. Никаких длинных строчек, никакой головной боли с постоянным вводом одних и тех же значений.</p>
<p>Но на этом я не остановился. Мне показалось неудобным то, что функционал программы предусматривает гораздо больше операций, нежели просто пополнение баланса. Коды этих операций передаются программе так же с помощью параметров. А используя приведенный выше способ, мне пришлось бы писать отдельный скрипт под каждую операцию, что было бы не слишком удобно. Выход очевиден: запуск скрипта с параметрами, которые будут переданы программе. Делается это еще проще, чем то, что мы сделали раньше.</p>
<p>За считывание параметров запуска отвечает переменная &#8220;@&#8221;. То есть, если мы запускаем скрипт с параметрами, они будут сохранены в эту переменную:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sh</span> sgconf.sh <span style="color: #660033;">-u</span> user <span style="color: #660033;">-c</span> <span style="color: #000000;">100</span></pre></div></div>

<p>Теперь мы просто подставим значение этой переменной в команду, выполняемую скриптом:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>Admin<span style="color: #000000; font-weight: bold;">/</span>soft<span style="color: #000000; font-weight: bold;">/</span>sgconf<span style="color: #000000; font-weight: bold;">/</span>sgconf <span style="color: #660033;">-s</span> 10.10.10.1 <span style="color: #660033;">-p</span> <span style="color: #000000;">5555</span> <span style="color: #660033;">-a</span> Admin <span style="color: #660033;">-w</span> <span style="color: #000000;">112233</span> <span style="color: #ff0000;">&quot;$@&quot;</span></pre></div></div>

<p>Все! Согласитесь, это куда более удобно, чем то, что было раньше.</p>
<p>Дальше нам нужно подправить ведение логов. Для этого просто редактируем переменную text:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #007800;">text</span>=<span style="color: #ff0000;">&quot;$@&quot;</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$time</span>&quot;</span></pre></div></div>

<p>Таким образом, мы сможем в логах видеть не только имя плательщика, и сумму денег, внесенную им, но и код операции, будь то платеж или кредит и т.д.</p>
<p>Полный код второй версии скрипта выглядит так:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!bin/bash</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#************************************************#</span>
<span style="color: #666666; font-style: italic;">#                  sgconf.sh                     #</span>
<span style="color: #666666; font-style: italic;">#           autor: Sergey Kondrashov             #</span>
<span style="color: #666666; font-style: italic;">#                 10 25, 2009                    #</span>
<span style="color: #666666; font-style: italic;">#                                                #</span>
<span style="color: #666666; font-style: italic;">#    how to use sgconfig without hemorrhoids     #</span>
<span style="color: #666666; font-style: italic;">#************************************************#</span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;">echo</span> sgconf.sh v <span style="color: #000000;">0.2</span>
<span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>Admin<span style="color: #000000; font-weight: bold;">/</span>soft<span style="color: #000000; font-weight: bold;">/</span>sgconf<span style="color: #000000; font-weight: bold;">/</span>sgconf <span style="color: #660033;">-s</span> 10.10.10.1 <span style="color: #660033;">-p</span> <span style="color: #000000;">5555</span> <span style="color: #660033;">-a</span> Admin <span style="color: #660033;">-w</span> <span style="color: #000000;">112233</span> <span style="color: #ff0000;">&quot;$@&quot;</span>
<span style="color: #007800;">time</span>=<span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">date</span><span style="color: #000000; font-weight: bold;">`</span>
<span style="color: #007800;">text</span>=<span style="color: #ff0000;">&quot;$@&quot;</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$time</span>&quot;</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #007800;">$text</span>
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-e</span> <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>onion<span style="color: #000000; font-weight: bold;">/</span>scripts<span style="color: #000000; font-weight: bold;">/</span>sgconf<span style="color: #000000; font-weight: bold;">/</span>sgconf.log <span style="color: #7a0874; font-weight: bold;">&#93;</span>
	<span style="color: #000000; font-weight: bold;">then</span> <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #007800;">$text</span> <span style="color: #000000; font-weight: bold;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;">&amp;</span>gt; <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>onion<span style="color: #000000; font-weight: bold;">/</span>scripts<span style="color: #000000; font-weight: bold;">/</span>sgconf<span style="color: #000000; font-weight: bold;">/</span>sgconf.log 
	<span style="color: #000000; font-weight: bold;">else</span> <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #007800;">$text</span> <span style="color: #000000; font-weight: bold;">&amp;</span>gt; <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>onion<span style="color: #000000; font-weight: bold;">/</span>scripts<span style="color: #000000; font-weight: bold;">/</span>sgconf<span style="color: #000000; font-weight: bold;">/</span>sgconf.log
<span style="color: #000000; font-weight: bold;">fi</span>
<span style="color: #7a0874; font-weight: bold;">exit</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://snake.khd.ru/2009/10/binbash-dlya-chajnikov/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>

