<?xml version="1.0"?>
<rss version="2.0">
  <channel>
    <title>sanych.nnov.ru</title>
    <link>http://sanych.nnov.ru/</link>
    <description>sanych.nnov.ru</description>
    <language>ru-ru</language>
    <pubDate>Thu, 05 Jan 2012 04:00:00 GMT</pubDate>
 
    <lastBuildDate>Thu, 05 Jan 2012 17:09:46 GMT</lastBuildDate>
    <docs>http://beshenov.ru/rss2.html</docs>
    <generator>SANYCH.NNOV.RU v0.6.1alpha от 13 июня 2011 года</generator>
    <managingEditor>sanych@sanych.nnov.ru (SanSanych)</managingEditor>
    <webMaster>webmaster@sanych.nnov.ru ()</webMaster>
    <item>
      <title><![CDATA[Бутерброды]]></title>
      <link>http://sanych.nnov.ru/content/Buterbrody</link>
      <description><![CDATA[Буду складывать сюда рецепты бутеров, которые сам сочинил, а также неординарные. <br>
<ol><br>
<li> Армейский: Белый хлеб, масло, желток вареного яйца, соль. Употреблять утром с кофе или крепким чаем - хорошо бодрит.</li><br>
<li> Серый хлеб, несоленый зрелый сыр ("Король Артур"), красный болгарский перец, соль, черный молотый перец. Свежий аромат, черный перец подчеркивает вкус сыра. </li> <br>
<li> Серый хлеб с поджаренными семенами подсолнечника, сгущенка. Сгущенка делает вкус такого хлеба очень ярким. </li><br>
</ol>
]]></description>
      <pubDate>Thu, 05 Jan 2012 17:09:46 GMT</pubDate>
      <guid>http://sanych.nnov.ru/content/Buterbrody</guid>
    </item>

    <item>
      <title><![CDATA[Настройки grub2 для флэшки]]></title>
      <link>http://sanych.nnov.ru/content/Nastrojki_grub2_dlja_fljeshki</link>
      <description><![CDATA[Здесь кусок конфига grub2 на флэшке, касающейся загрузки лайфсиди с убунтой и с <a href="http://www.antiwinlocker.ru/download.html">AntiWinLocker</a><br>
<pre>menuentry "Lubuntu my persistent mode" {
   loopback loop /lubuntu.iso
   linux (loop)/casper/vmlinuz boot=casper persistent iso-scan/filename=/lubuntu.iso locale=ru_RU.UTF-8 console-setup/layoutcode=ru noprompt splash --
   initrd (loop)/casper/initrd.gz
}

menuentry "AntiWinLocker" {
   ntldr /bootmgr
}
</pre><br>
опции: <br>
<em>loopback loop /lubuntu.iso</em> - монтирует образ в "виртуальный" привод<br>
<em>(loop)/casper/vmlinuz</em> - ядро<br>
<em>boot=casper</em> - режим "живого" диска<br>
<em>persistent</em> - в корне диска расположен файл casper-rw, подготовленный так:<br>
<!-- Generator: GNU source-highlight 3.1.3
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
<pre><tt><span class="normal">dd </span><span class="keyword">if</span><span class="symbol">=</span><span class="normal">/dev/zero </span><span class="variable">of</span><span class="symbol">=</span><span class="normal">/media/Transcend/casper-rw </span><span class="variable">bs</span><span class="symbol">=</span><span class="normal">1M </span><span class="variable">count</span><span class="symbol">=</span><span class="number">256</span>
<span class="normal">mkfs</span><span class="symbol">.</span><span class="normal">ext3 /media/Transcend/casper-rw</span></tt></pre><br>
в нем сохраняются измененные файлы во время работы в livecd<br>
<em>iso-scan/filename=/lubuntu.iso</em> - где лежит образ<br>
<em>locale=ru_RU.UTF-8 console-setup/layoutcode=ru</em> - локаль, русский в консоли<br>
<em>ntldr /bootmgr</em> - опция для  загрузки AWL, сам образ распаковывается в корень флешки<br>

]]></description>
      <pubDate>Thu, 29 Sep 2011 19:09:13 GMT</pubDate>
      <guid>http://sanych.nnov.ru/content/Nastrojki_grub2_dlja_fljeshki</guid>
    </item>

    <item>
      <title><![CDATA[скрипт server-install]]></title>
      <link>http://sanych.nnov.ru/content/skript_server-install</link>
      <description><![CDATA[<!-- pagebreak --><!-- Generator: GNU source-highlight 3.1.3
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
<pre><tt><span class="comment">#! /bin/bash</span>
<span class="comment"># create server</span>
<span class="variable">version</span><span class="symbol">=</span><span class="string">"v0.7.5"</span>
<span class="variable">dirt</span><span class="symbol">=</span><span class="normal">`dirname </span><span class="variable">$0</span><span class="normal">`</span>
<span class="comment"># colors</span>
<span class="variable">green</span><span class="symbol">=</span><span class="string">"</span><span class="specialchar">\0</span><span class="string">33[01;32m"</span>
<span class="variable">black</span><span class="symbol">=</span><span class="string">"</span><span class="specialchar">\0</span><span class="string">33[00m"</span>
<span class="variable">redy</span><span class="symbol">=</span><span class="string">"</span><span class="specialchar">\0</span><span class="string">33[01;31m"</span>

<span class="comment"># question вопрос (переменная знач_по_умолчанию)</span>
<span class="function">question()</span><span class="normal"> {</span>
<span class="normal">    echo -en </span><span class="string">"$1 [$3] "</span><span class="normal"> </span><span class="symbol">;</span><span class="normal"> </span><span class="keyword">read</span><span class="normal"> var</span>
<span class="normal">    </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">[</span><span class="normal"> </span><span class="string">"t$var"</span><span class="normal"> </span><span class="symbol">=</span><span class="normal"> </span><span class="string">"t"</span><span class="normal"> </span><span class="symbol">]</span><span class="normal"> </span><span class="symbol">;</span><span class="normal"> </span><span class="keyword">then</span>
<span class="normal">        </span><span class="keyword">eval</span><span class="normal"> </span><span class="variable">$2</span><span class="symbol">=</span><span class="variable">$3</span>
<span class="normal">    </span><span class="keyword">else</span>
<span class="normal">        </span><span class="keyword">eval</span><span class="normal"> </span><span class="variable">$2</span><span class="symbol">=</span><span class="variable">$var</span>
<span class="normal">    </span><span class="keyword">fi</span>
<span class="normal">}</span>

<span class="comment"># somethingh wrong (message)</span>
<span class="function">error()</span><span class="normal"> {</span>
<span class="normal">    echo -e </span><span class="string">"$1"</span>
<span class="normal">    clean</span>
<span class="normal">    </span><span class="keyword">exit</span><span class="normal"> </span><span class="number">1</span>
<span class="normal">}</span>

<span class="comment"># read parameters</span>
<span class="function">read_params()</span><span class="normal"> {</span>
<span class="normal">    </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">[</span><span class="normal"> -f </span><span class="variable">$dirt</span><span class="normal">/server-install</span><span class="symbol">.</span><span class="normal">conf </span><span class="symbol">]</span><span class="normal"> </span><span class="symbol">;</span><span class="normal"> </span><span class="keyword">then</span>
<span class="normal">        </span><span class="symbol">.</span><span class="normal"> </span><span class="variable">$dirt</span><span class="normal">/server-install</span><span class="symbol">.</span><span class="normal">conf</span>
<span class="normal">    </span><span class="keyword">else</span>
<span class="normal">        </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">[</span><span class="normal"> -f /root/server-install</span><span class="symbol">.</span><span class="normal">conf </span><span class="symbol">]</span><span class="normal"> </span><span class="symbol">;</span><span class="normal"> </span><span class="keyword">then</span>
<span class="normal">                </span><span class="symbol">.</span><span class="normal"> /root/server-install</span><span class="symbol">.</span><span class="normal">conf</span>
<span class="normal">        </span><span class="keyword">else</span>
<span class="normal">        error </span><span class="string">"${redy}Нет конфига!!!${black}"</span>
<span class="normal">        </span><span class="keyword">fi</span>
<span class="normal">    </span><span class="keyword">fi</span>
<span class="normal">    </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">[</span><span class="normal"> -f /root/server-install</span><span class="symbol">.</span><span class="normal">conf </span><span class="symbol">]</span><span class="normal"> </span><span class="symbol">;</span><span class="normal"> </span><span class="keyword">then</span>
<span class="normal">        </span><span class="symbol">.</span><span class="normal"> /root/server-install</span><span class="symbol">.</span><span class="normal">conf</span>
<span class="normal">    </span><span class="keyword">fi</span>
<span class="normal">}</span>

<span class="comment"># usage</span>
<span class="function">usage()</span><span class="normal"> {</span>
<span class="normal">echo -ne </span><span class="string">"Этот скрипт $version устанавливает серверную версию линукса на жесткий диск компьютера.</span>
<span class="string">${green}Первый интерфейс смотрит в интернет, второй в локалку.${black}</span>
<span class="string">На обоих интерфейсах ${green}статика${black}.</span>
<span class="string">Состав ПО: dnsmasq, squid, sarg, shorewall, apache2, netams, logwatch, postfix${black}</span>
<span class="string">конфиг смотрится сначала ${dirt}/server-install.conf затем /root/server-install.conf</span><span class="specialchar">\n</span>
<span class="string">Опции: `basename $0` [ install | grub | fstab | network | admin ]</span><span class="specialchar">\n\n</span><span class="string">"</span>
<span class="normal">}</span>

<span class="comment"># check limitations of disk</span>
<span class="function">limita()</span><span class="normal"> {</span>
<span class="keyword">if</span><span class="normal"> </span><span class="symbol">[</span><span class="normal"> </span><span class="string">"d$disk"</span><span class="normal"> </span><span class="symbol">=</span><span class="normal"> </span><span class="string">"d"</span><span class="normal"> </span><span class="symbol">]</span><span class="normal"> </span><span class="symbol">;</span><span class="normal"> </span><span class="keyword">then</span>
<span class="normal">    echo -e </span><span class="string">"${redy}НЕТ ДИСКА!!!${black}"</span>
<span class="normal">    </span><span class="keyword">exit</span><span class="normal"> </span><span class="number">1</span>

<span class="keyword">fi</span>
<span class="variable">size</span><span class="symbol">=</span><span class="normal">`fdisk -l /dev</span><span class="symbol">/</span><span class="variable">${disk}</span><span class="symbol">|</span><span class="normal">grep /dev</span><span class="symbol">/</span><span class="variable">${disk}</span><span class="symbol">:|</span><span class="normal">awk </span><span class="string">'{print $5}'</span><span class="normal">`</span>
<span class="comment"># in Mb</span>
<span class="variable">size</span><span class="symbol">=</span><span class="variable">$[$size</span><span class="symbol">/</span><span class="number">1000</span><span class="symbol">/</span><span class="number">1000</span><span class="symbol">]</span>
<span class="keyword">if</span><span class="normal"> </span><span class="symbol">[</span><span class="normal"> </span><span class="variable">$size</span><span class="normal"> -lt </span><span class="variable">$mindiskspace</span><span class="normal"> </span><span class="symbol">]</span><span class="normal"> </span><span class="symbol">;</span><span class="normal"> </span><span class="keyword">then</span>
<span class="normal">    echo -e </span><span class="string">"${redy}Мало места на диске!!!${black}"</span>
<span class="normal">    </span><span class="keyword">exit</span><span class="normal"> </span><span class="number">1</span>
<span class="keyword">fi</span>
<span class="normal">}</span>

<span class="comment"># count swap &amp; home</span>
<span class="function">count_sizes()</span><span class="normal"> {</span>
<span class="keyword">if</span><span class="normal"> </span><span class="symbol">[</span><span class="normal"> </span><span class="variable">$size</span><span class="normal"> -lt </span><span class="variable">$disksizehome</span><span class="normal"> </span><span class="symbol">]</span><span class="normal"> </span><span class="symbol">;</span><span class="normal"> </span><span class="keyword">then</span>
<span class="normal">    </span><span class="variable">home</span><span class="symbol">=</span><span class="number">0</span>
<span class="normal">    </span><span class="variable">swap</span><span class="symbol">=</span><span class="variable">$[$size</span><span class="symbol">/</span><span class="number">10</span><span class="symbol">]</span>
<span class="normal">    </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">[</span><span class="normal"> </span><span class="variable">$swap</span><span class="normal"> -lt </span><span class="variable">$minswap</span><span class="normal"> </span><span class="symbol">]</span><span class="normal"> </span><span class="symbol">;</span><span class="normal"> </span><span class="keyword">then</span>
<span class="normal">        </span><span class="comment"># min swap</span>
<span class="normal">        </span><span class="variable">swap</span><span class="symbol">=</span><span class="variable">$minswap</span>
<span class="normal">    </span><span class="keyword">fi</span>
<span class="normal">    </span><span class="variable">root</span><span class="symbol">=</span><span class="variable">$[$size</span><span class="normal">-</span><span class="variable">$swap</span><span class="symbol">]</span>
<span class="keyword">else</span>
<span class="normal">    </span><span class="variable">swap</span><span class="symbol">=</span><span class="variable">$maxswap</span>
<span class="normal">    </span><span class="variable">root</span><span class="symbol">=</span><span class="variable">$maxroot</span>
<span class="normal">    </span><span class="variable">home</span><span class="symbol">=</span><span class="variable">$[$size</span><span class="normal">-</span><span class="variable">$root</span><span class="normal">-</span><span class="variable">$swap</span><span class="symbol">]</span>
<span class="keyword">fi</span>
<span class="normal">}</span>

<span class="comment"># remove partitions</span>
<span class="function">rm_parts()</span><span class="normal">{</span>
<span class="keyword">for</span><span class="normal"> i </span><span class="keyword">in</span><span class="normal"> `parted /dev</span><span class="symbol">/</span><span class="variable">$disk</span><span class="normal"> print</span><span class="symbol">|</span><span class="normal">awk </span><span class="string">'{print $1}'</span><span class="symbol">|</span><span class="normal">egrep </span><span class="string">'[[:digit:]]'</span><span class="normal">` </span><span class="symbol">;</span><span class="normal"> </span><span class="keyword">do</span>
<span class="normal">    swapoff /dev</span><span class="symbol">/</span><span class="variable">${disk}$i</span><span class="normal"> </span><span class="symbol">&gt;</span><span class="normal"> /dev/null </span><span class="number">2</span><span class="symbol">&gt;&amp;</span><span class="number">1</span>
<span class="normal">    sleep </span><span class="number">3</span>
<span class="normal">    umount -l -f /dev</span><span class="symbol">/</span><span class="variable">${disk}$i</span><span class="normal"> </span><span class="symbol">&gt;</span><span class="normal"> /dev/null </span><span class="number">2</span><span class="symbol">&gt;&amp;</span><span class="number">1</span>
<span class="normal">    sleep </span><span class="number">3</span>
<span class="normal">    parted -s /dev</span><span class="symbol">/</span><span class="variable">$disk</span><span class="normal"> rm </span><span class="variable">$i</span><span class="normal"> </span><span class="symbol">||</span><span class="normal"> error </span><span class="string">"${redy}Не смогла я почистить диск :(${black}"</span>
<span class="keyword">done</span>
<span class="normal">}</span>

<span class="function">mk_parts()</span><span class="normal"> {</span>
<span class="normal">echo -e </span><span class="string">"${green}Создаем разделы...${black}"</span>
<span class="normal">parted -s /dev</span><span class="symbol">/</span><span class="variable">$disk</span><span class="normal"> mklabel msdos</span>
<span class="normal">parted -s /dev</span><span class="symbol">/</span><span class="variable">$disk</span><span class="normal"> mkpart primary </span><span class="number">0.0</span><span class="normal"> </span><span class="variable">${root}</span><span class="symbol">.</span><span class="number">0</span><span class="normal"> </span><span class="symbol">||</span><span class="normal"> error </span><span class="string">"${redy}Не смогла я создать партицию 1 на диске :(${black}"</span>
<span class="normal">parted -s /dev</span><span class="symbol">/</span><span class="variable">$disk</span><span class="normal"> </span><span class="keyword">set</span><span class="normal"> </span><span class="number">1</span><span class="normal"> boot on</span>
<span class="normal">parted -s /dev</span><span class="symbol">/</span><span class="variable">$disk</span><span class="normal"> mkpartfs primary linux-swap </span><span class="variable">${root}</span><span class="symbol">.</span><span class="number">1</span><span class="normal"> </span><span class="variable">$[$root</span><span class="symbol">+</span><span class="variable">$swap</span><span class="symbol">].</span><span class="number">0</span><span class="normal"> </span><span class="symbol">||</span><span class="normal"> error </span><span class="string">"${redy}Не смогла я создать партицию 2 на диске :(${black}"</span>
<span class="normal">sleep </span><span class="number">3</span>
<span class="normal">mkfs</span><span class="symbol">.</span><span class="normal">ext3 /dev</span><span class="symbol">/</span><span class="variable">${disk}</span><span class="number">1</span><span class="normal"> </span><span class="symbol">&gt;</span><span class="normal">/dev/null </span><span class="number">2</span><span class="symbol">&gt;&amp;</span><span class="number">1</span><span class="normal"> </span><span class="symbol">||</span><span class="normal"> error </span><span class="string">"${redy}Не смогла я отформатировать партицию 1 на диске :(${black}"</span>
<span class="keyword">if</span><span class="normal"> </span><span class="symbol">[</span><span class="normal"> </span><span class="variable">$home</span><span class="normal"> -gt </span><span class="number">0</span><span class="normal"> </span><span class="symbol">]</span><span class="normal"> </span><span class="symbol">;</span><span class="normal"> </span><span class="keyword">then</span>
<span class="normal">    parted -s /dev</span><span class="symbol">/</span><span class="variable">$disk</span><span class="normal"> mkpart primary </span><span class="variable">$[$root</span><span class="symbol">+</span><span class="variable">$swap</span><span class="symbol">].</span><span class="number">1</span><span class="normal"> </span><span class="variable">$[$root</span><span class="symbol">+</span><span class="variable">$swap</span><span class="symbol">+</span><span class="variable">$home</span><span class="symbol">].</span><span class="number">0</span><span class="normal"> </span><span class="symbol">||</span><span class="normal"> error </span><span class="string">"${redy}Не смогла я создать партицию 3 на диске :(${black}"</span>
<span class="normal">    sleep </span><span class="number">3</span>
<span class="normal">    mkfs</span><span class="symbol">.</span><span class="normal">ext3 /dev</span><span class="symbol">/</span><span class="variable">${disk}</span><span class="number">3</span><span class="normal"> </span><span class="symbol">&gt;</span><span class="normal">/dev/null </span><span class="number">2</span><span class="symbol">&gt;&amp;</span><span class="number">1</span><span class="normal"> </span><span class="symbol">||</span><span class="normal"> error </span><span class="string">"${redy}Не смогла я отформатировать партицию 3 на диске :(${black}"</span>
<span class="keyword">fi</span>
<span class="normal">parted -s /dev</span><span class="symbol">/</span><span class="variable">$disk</span><span class="normal"> print</span>
<span class="normal">}</span>

<span class="comment"># unpack</span>
<span class="function">unpack_sys()</span><span class="normal"> {</span>
<span class="normal">echo -e </span><span class="string">"${green}Распаковываем систему на диск...${black}"</span>

<span class="normal">cd /mnt</span><span class="variable">$$</span>
<span class="keyword">if</span><span class="normal"> </span><span class="symbol">[</span><span class="normal"> -f </span><span class="variable">$dirt</span><span class="normal">/server</span><span class="symbol">.</span><span class="normal">tar</span><span class="symbol">.</span><span class="normal">gz </span><span class="symbol">]</span><span class="normal"> </span><span class="symbol">;</span><span class="normal"> </span><span class="keyword">then</span>
<span class="normal">    tar xfz </span><span class="variable">$dirt</span><span class="normal">/server</span><span class="symbol">.</span><span class="normal">tar</span><span class="symbol">.</span><span class="normal">gz </span><span class="symbol">||</span><span class="normal"> error </span><span class="string">"${redy}Не смогла я распаковать систему :(${black}"</span>
<span class="keyword">else</span>
<span class="normal">    error </span><span class="string">"${redy}Нет файла $dirt/server.tar.gz!!!${black}"</span>
<span class="keyword">fi</span>
<span class="normal">}</span>

<span class="comment"># unpack configs</span>
<span class="function">unpack_configs()</span><span class="normal"> {</span>
<span class="normal">cd /mnt</span><span class="variable">$$</span>
<span class="keyword">if</span><span class="normal"> </span><span class="symbol">[</span><span class="normal"> -f </span><span class="variable">$dirt</span><span class="normal">/server_configs</span><span class="symbol">.</span><span class="normal">tar</span><span class="symbol">.</span><span class="normal">gz </span><span class="symbol">]</span><span class="normal"> </span><span class="symbol">;</span><span class="normal"> </span><span class="keyword">then</span>
<span class="normal">    tar xfz </span><span class="variable">$dirt</span><span class="normal">/server_configs</span><span class="symbol">.</span><span class="normal">tar</span><span class="symbol">.</span><span class="normal">gz </span><span class="symbol">||</span><span class="normal"> error </span><span class="string">"${redy}Не смогла я распаковать конфиги :(${black}"</span>
<span class="keyword">else</span>
<span class="normal">    error </span><span class="string">"${redy}Нет файла $dirt/server_configs.tar.gz!!!${black}"</span>
<span class="keyword">fi</span>
<span class="normal">}</span>

<span class="comment"># mount home</span>
<span class="function">mount_home()</span><span class="normal"> {</span>
<span class="keyword">if</span><span class="normal"> egrep </span><span class="string">"${disk}3</span><span class="specialchar">\&gt;</span><span class="string">"</span><span class="normal"> /proc/partitions </span><span class="symbol">&gt;</span><span class="normal"> /dev/null </span><span class="symbol">;</span><span class="normal"> </span><span class="keyword">then</span>
<span class="normal">    mount /dev</span><span class="symbol">/</span><span class="variable">${disk}</span><span class="number">3</span><span class="normal"> /mnt</span><span class="variable">$$</span><span class="normal">/home </span><span class="symbol">||</span><span class="normal"> error </span><span class="string">"${redy}Не смогла я смонтировать home :(${black}"</span>
<span class="normal">    mkdir /mnt</span><span class="variable">$$</span><span class="normal">/home/ftp</span>
<span class="normal">    mkdir /mnt</span><span class="variable">$$</span><span class="normal">/home/netams</span>
<span class="normal">    chown root</span><span class="symbol">:</span><span class="normal">nogroup /mnt</span><span class="variable">$$</span><span class="normal">/home/ftp</span>
<span class="keyword">fi</span>
<span class="normal">}</span>

<span class="comment"># mount root</span>
<span class="function">mount_root()</span><span class="normal"> {</span>
<span class="normal">mkdir /mnt</span><span class="variable">$$</span>
<span class="normal">mount /dev</span><span class="symbol">/</span><span class="variable">${disk}</span><span class="number">1</span><span class="normal"> /mnt</span><span class="variable">$$</span><span class="normal"> </span><span class="symbol">||</span><span class="normal"> error </span><span class="string">"${redy}Не смогла я смонтировать root :(${black}"</span>
<span class="normal">}</span>

<span class="function">mount_dev()</span><span class="normal"> {</span>
<span class="normal">sleep </span><span class="number">1</span>
<span class="normal">mount --bind /dev</span><span class="symbol">/</span><span class="normal"> /mnt</span><span class="variable">$$</span><span class="normal">/dev</span>
<span class="normal">sleep </span><span class="number">1</span>
<span class="normal">chroot /mnt</span><span class="variable">$$</span><span class="normal"> mount -t proc none /proc</span>
<span class="normal">}</span>

<span class="comment"># fstab</span>
<span class="function">mk_fstab()</span><span class="normal"> {</span>
<span class="normal">cat </span><span class="symbol">&gt;</span><span class="normal"> /mnt</span><span class="variable">$$</span><span class="normal">/etc/fstab </span><span class="symbol">&lt;&lt;</span><span class="normal">EOF1</span>
<span class="comment"># &lt;file system&gt; &lt;mount point&gt;   &lt;type&gt;  &lt;options&gt;       &lt;dump&gt;  &lt;pass&gt;</span>
<span class="normal">proc            /proc           proc    defaults        </span><span class="number">0</span><span class="normal">       </span><span class="number">0</span>
<span class="comment"># /dev/sda1</span>
<span class="normal">`blkid -sUUID /dev</span><span class="symbol">/</span><span class="variable">${disk}</span><span class="number">1</span><span class="symbol">|</span><span class="normal">awk </span><span class="string">'{print $2}'</span><span class="symbol">|</span><span class="normal">sed </span><span class="string">"s#</span><span class="specialchar">\"</span><span class="string">##g"</span><span class="normal">`     </span><span class="symbol">/</span><span class="normal">       ext3    defaults</span><span class="symbol">,</span><span class="normal">noatime</span><span class="symbol">,</span><span class="normal">nodiratime</span><span class="symbol">,</span><span class="variable">errors</span><span class="symbol">=</span><span class="normal">remount-ro   </span><span class="number">0</span><span class="normal">       </span><span class="number">0</span>
<span class="comment"># /dev/sda2</span>
<span class="normal">`blkid -sUUID /dev</span><span class="symbol">/</span><span class="variable">${disk}</span><span class="number">2</span><span class="symbol">|</span><span class="normal">awk </span><span class="string">'{print $2}'</span><span class="symbol">|</span><span class="normal">sed </span><span class="string">"s#</span><span class="specialchar">\"</span><span class="string">##g"</span><span class="normal">`     none    swap    defaults        </span><span class="number">0</span><span class="normal">       </span><span class="number">0</span>
<span class="comment">#/dev/scd0       /media/cdrom0   udf,iso9660 user,noauto,exec 0       0</span>
<span class="comment"># /dev/sda3</span>
<span class="normal">EOF1</span>
<span class="keyword">if</span><span class="normal"> egrep </span><span class="string">"${disk}3</span><span class="specialchar">\&gt;</span><span class="string">"</span><span class="normal"> /proc/partitions </span><span class="symbol">&gt;</span><span class="normal"> /dev/null </span><span class="symbol">;</span><span class="normal"> </span><span class="keyword">then</span>
<span class="normal">    </span><span class="variable">homeid</span><span class="symbol">=</span><span class="normal">`blkid -sUUID /dev</span><span class="symbol">/</span><span class="variable">${disk}</span><span class="number">3</span><span class="symbol">|</span><span class="normal">awk </span><span class="string">'{print $2}'</span><span class="symbol">|</span><span class="normal">sed </span><span class="string">"s#</span><span class="specialchar">\"</span><span class="string">##g"</span><span class="normal">`</span>
<span class="normal">    echo </span><span class="string">"$homeid       /home       ext3    defaults,noatime,nodiratime,errors=remount-ro   0       0"</span><span class="normal"> </span><span class="symbol">&gt;&gt;</span><span class="normal"> /mnt</span><span class="variable">$$</span><span class="normal">/etc/fstab</span>
<span class="keyword">fi</span>

<span class="normal">}</span>

<span class="comment"># grub</span>
<span class="function">mk_grub()</span><span class="normal"> {</span>
<span class="normal">grub-install --recheck --no-floppy --root-directory</span><span class="symbol">=</span><span class="normal">/mnt</span><span class="variable">$$</span><span class="normal"> /dev</span><span class="symbol">/</span><span class="variable">$disk</span><span class="normal"> </span><span class="symbol">&gt;</span><span class="normal">/dev/null </span><span class="number">2</span><span class="symbol">&gt;&amp;</span><span class="number">1</span><span class="normal"> </span><span class="symbol">||</span><span class="normal"> error </span><span class="string">"${redy}Не смогла я по поставить grub :(${black}"</span>
<span class="normal">chroot /mnt</span><span class="variable">$$</span><span class="normal"> update-grub -y </span><span class="symbol">&gt;</span><span class="normal">/dev/null </span><span class="number">2</span><span class="symbol">&gt;&amp;</span><span class="number">1</span><span class="normal"> </span><span class="symbol">||</span><span class="normal"> error </span><span class="string">"${redy}Не смогла я по поставить grub/menu.lst :(${black}"</span>
<span class="normal">sed -i </span><span class="string">"s|#color|color|"</span><span class="normal"> /mnt</span><span class="variable">$$</span><span class="normal">/boot/grub/menu</span><span class="symbol">.</span><span class="normal">lst</span>
<span class="normal">sed -i </span><span class="string">"s|quiet splash|nosplash locale=ru_RU vga=0x303|g"</span><span class="normal"> /mnt</span><span class="variable">$$</span><span class="normal">/boot/grub/menu</span><span class="symbol">.</span><span class="normal">lst</span>
<span class="normal">}</span>

<span class="comment"># network</span>
<span class="function">mk_netw()</span><span class="normal"> {</span>
<span class="normal">question </span><span class="string">"${green}Имя сервера?${black}"</span><span class="normal"> hostn </span><span class="variable">$def_name</span>
<span class="normal">echo </span><span class="variable">$hostn</span><span class="normal"> </span><span class="symbol">&gt;</span><span class="normal"> /mnt</span><span class="variable">$$</span><span class="normal">/etc/hostname</span>
<span class="normal">echo </span><span class="string">"127.0.0.1 localhost"</span><span class="normal"> </span><span class="symbol">&gt;</span><span class="normal"> /mnt</span><span class="variable">$$</span><span class="normal">/etc/hosts</span>
<span class="normal">echo </span><span class="string">"127.0.1.1 $hostn"</span><span class="normal"> </span><span class="symbol">&gt;&gt;</span><span class="normal"> /mnt</span><span class="variable">$$</span><span class="normal">/etc/hosts</span>

<span class="normal">question </span><span class="string">"${green}Домен?${black}"</span><span class="normal"> domen </span><span class="variable">$hostn</span>
<span class="normal">echo </span><span class="variable">$domen</span><span class="normal"> </span><span class="symbol">&gt;</span><span class="normal"> /mnt</span><span class="variable">$$</span><span class="normal">/etc/mailname</span>

<span class="normal">question </span><span class="string">"${green}Внешний интерфейс?${black}"</span><span class="normal"> net_iface </span><span class="variable">$def_net_iface</span>
<span class="normal">question </span><span class="string">"${green}Внутрений интерфейс?${black}"</span><span class="normal"> lan_iface </span><span class="variable">$def_lan_iface</span>

<span class="normal">question </span><span class="string">"${green}Внешний ip-адрес на $net_iface?${black}"</span><span class="normal"> ip_netm </span><span class="variable">$def_net</span>
<span class="variable">ip_gw</span><span class="symbol">=</span><span class="normal">`ipcalc </span><span class="variable">$ip_netm</span><span class="symbol">|</span><span class="normal">grep HostMin</span><span class="symbol">:|</span><span class="normal">awk </span><span class="string">'{print $2}'</span><span class="normal">`</span>

<span class="normal">question </span><span class="string">"${green}Шлюз?${black}"</span><span class="normal"> ip_gw1 </span><span class="variable">$ip_gw</span>

<span class="normal">question </span><span class="string">"${green}Внутренний ip-адрес на $lan_iface?${black}"</span><span class="normal"> ip_locm </span><span class="variable">$def_lan</span>

<span class="variable">ip_net</span><span class="symbol">=</span><span class="normal">`ipcalc </span><span class="variable">$ip_netm</span><span class="symbol">|</span><span class="normal">grep Address</span><span class="symbol">:|</span><span class="normal">awk </span><span class="string">'{print $2}'</span><span class="normal">`</span>
<span class="variable">net_mask</span><span class="symbol">=</span><span class="normal">`ipcalc </span><span class="variable">$ip_netm</span><span class="symbol">|</span><span class="normal">grep Netmask</span><span class="symbol">:|</span><span class="normal">awk </span><span class="string">'{print $2}'</span><span class="normal">`</span>
<span class="variable">ip_loc</span><span class="symbol">=</span><span class="normal">`ipcalc </span><span class="variable">$ip_locm</span><span class="symbol">|</span><span class="normal">grep Address</span><span class="symbol">:|</span><span class="normal">awk </span><span class="string">'{print $2}'</span><span class="normal">`</span>
<span class="variable">loc_mask</span><span class="symbol">=</span><span class="normal">`ipcalc </span><span class="variable">$ip_locm</span><span class="symbol">|</span><span class="normal">grep Netmask</span><span class="symbol">:|</span><span class="normal">awk </span><span class="string">'{print $2}'</span><span class="normal">`</span>
<span class="variable">loc_net</span><span class="symbol">=</span><span class="normal">`ipcalc </span><span class="variable">$ip_locm</span><span class="symbol">|</span><span class="normal">grep Network</span><span class="symbol">:|</span><span class="normal">awk </span><span class="string">'{print $2}'</span><span class="normal">`</span>

<span class="normal">cat </span><span class="symbol">&gt;</span><span class="normal"> /mnt</span><span class="variable">$$</span><span class="normal">/etc/network/interfaces </span><span class="symbol">&lt;&lt;</span><span class="normal">EOF3</span>
<span class="normal">auto lo</span>
<span class="normal">iface lo inet loopback</span>

<span class="normal">auto </span><span class="variable">$net_iface</span>
<span class="normal">iface </span><span class="variable">$net_iface</span><span class="normal"> inet static</span>
<span class="normal">address </span><span class="variable">$ip_net</span>
<span class="normal">netmask </span><span class="variable">$net_mask</span>
<span class="normal">gateway </span><span class="variable">$ip_gw1</span>

<span class="normal">auto </span><span class="variable">$lan_iface</span>
<span class="normal">iface </span><span class="variable">$lan_iface</span><span class="normal"> inet static</span>
<span class="normal">address </span><span class="variable">$ip_loc</span>
<span class="normal">netmask </span><span class="variable">$loc_mask</span>
<span class="normal">EOF3</span>

<span class="normal">cat </span><span class="symbol">&gt;</span><span class="normal"> /mnt</span><span class="variable">$$</span><span class="normal">/etc/dnsmasq</span><span class="symbol">.</span><span class="normal">conf </span><span class="symbol">&lt;&lt;</span><span class="normal">EOFDNMAQ</span>
<span class="variable">interface</span><span class="symbol">=</span><span class="variable">$lan_iface</span>
<span class="normal">expand-hosts</span>
<span class="variable">domain</span><span class="symbol">=</span><span class="variable">$domen</span>
<span class="normal">dhcp-range</span><span class="symbol">=</span><span class="normal">`ipcalc </span><span class="variable">$ip_locm</span><span class="symbol">|</span><span class="normal">grep Address</span><span class="symbol">:|</span><span class="normal">awk </span><span class="string">'{print $2}'</span><span class="symbol">|</span><span class="normal">cut -f</span><span class="number">1</span><span class="normal">-</span><span class="number">3</span><span class="normal"> -d</span><span class="symbol">.</span><span class="normal">`</span><span class="symbol">.</span><span class="number">110</span><span class="symbol">,</span><span class="normal">`ipcalc </span><span class="variable">$ip_locm</span><span class="symbol">|</span><span class="normal">grep HostMax</span><span class="symbol">:|</span><span class="normal">awk </span><span class="string">'{print $2}'</span><span class="normal">`</span><span class="symbol">,</span><span class="variable">$loc_mask</span><span class="symbol">,</span><span class="normal">12h</span>

<span class="normal">dhcp-leasefile</span><span class="symbol">=</span><span class="normal">/var/lib/misc/dnsmasq</span><span class="symbol">.</span><span class="normal">leases</span>
<span class="normal">conf-file</span><span class="symbol">=</span><span class="normal">/etc/dnsmasq</span><span class="symbol">.</span><span class="normal">hosts</span>
<span class="normal">EOFDNMAQ</span>

<span class="normal">echo </span><span class="string">"nameserver 127.0.0.1"</span><span class="normal"> </span><span class="symbol">&gt;</span><span class="normal"> /mnt</span><span class="variable">$$</span><span class="normal">/etc/resolv</span><span class="symbol">.</span><span class="normal">conf</span>
<span class="normal">question </span><span class="string">"${green}ip-адрес 1 DNS-servera?${black}"</span><span class="normal"> dns1 </span><span class="variable">$def_dns1</span>
<span class="normal">echo </span><span class="string">"nameserver $dns1"</span><span class="normal"> </span><span class="symbol">&gt;&gt;</span><span class="normal"> /mnt</span><span class="variable">$$</span><span class="normal">/etc/resolv</span><span class="symbol">.</span><span class="normal">conf</span>
<span class="normal">question </span><span class="string">"${green}ip-адрес 2 DNS-servera?${black}"</span><span class="normal"> dns2 </span><span class="variable">$def_dns2</span>
<span class="normal">echo </span><span class="string">"nameserver $dns2"</span><span class="normal"> </span><span class="symbol">&gt;&gt;</span><span class="normal"> /mnt</span><span class="variable">$$</span><span class="normal">/etc/resolv</span><span class="symbol">.</span><span class="normal">conf</span>
<span class="normal">}</span>

<span class="comment"># add admin</span>
<span class="function">mk_admin()</span><span class="normal"> {</span>
<span class="normal">question </span><span class="string">"${green}Имя администратора системы?${black}"</span><span class="normal"> user </span><span class="variable">$def_admin</span>
<span class="normal">chroot /mnt</span><span class="variable">$$</span><span class="normal"> useradd -g admin -m -k /etc/skel -s /bin/bash </span><span class="variable">$user</span>
<span class="keyword">printf</span><span class="normal"> </span><span class="string">"${green}Введите пароль администратора системы ${black}</span><span class="specialchar">\n</span><span class="string">"</span>
<span class="normal">chroot /mnt</span><span class="variable">$$</span><span class="normal"> passwd </span><span class="variable">$user</span>
<span class="normal">}</span>

<span class="function">ch_configs()</span><span class="normal"> {</span>
<span class="comment"># squid</span>
<span class="normal">sed -i </span><span class="string">"s#REPLACEHOT#$ip_loc#"</span><span class="normal"> /mnt</span><span class="variable">$$</span><span class="normal">/etc/squid/squid</span><span class="symbol">.</span><span class="normal">conf</span>
<span class="normal">sed -i </span><span class="string">"s#REPLACENET#$loc_net#"</span><span class="normal"> /mnt</span><span class="variable">$$</span><span class="normal">/etc/squid/squid</span><span class="symbol">.</span><span class="normal">conf</span>

<span class="comment"># netams</span>
<span class="normal">sed -i </span><span class="string">"s#REPLACEHOST#$ip_loc#"</span><span class="normal"> /mnt</span><span class="variable">$$</span><span class="normal">/etc/netams/netams</span><span class="symbol">.</span><span class="normal">cfg</span>
<span class="normal">sed -i </span><span class="string">"s#REPLACELAN#$loc_net#"</span><span class="normal"> /mnt</span><span class="variable">$$</span><span class="normal">/etc/netams/netams</span><span class="symbol">.</span><span class="normal">cfg</span>
<span class="normal">sed -i </span><span class="string">"s#REPLACEIFACE#$lan_iface#"</span><span class="normal"> /mnt</span><span class="variable">$$</span><span class="normal">/etc/netams/netams</span><span class="symbol">.</span><span class="normal">cfg</span>
<span class="normal">sed -i </span><span class="string">"s#REPLACELNET#`echo $loc_net|cut -f1 -d/`#"</span><span class="normal"> /mnt</span><span class="variable">$$</span><span class="normal">/etc/netams/netams</span><span class="symbol">.</span><span class="normal">cfg</span>
<span class="normal">sed -i </span><span class="string">"s#REPLACEMASK#$loc_mask#"</span><span class="normal"> /mnt</span><span class="variable">$$</span><span class="normal">/etc/netams/netams</span><span class="symbol">.</span><span class="normal">cfg</span>

<span class="comment">#shorewall</span>
<span class="normal">sed -i </span><span class="string">"s#REPLACEHOST#$ip_loc#"</span><span class="normal"> /mnt</span><span class="variable">$$</span><span class="normal">/etc/shorewall/rules</span>
<span class="normal">sed -i </span><span class="string">"s#REPLACEIFACEINET#$net_iface#"</span><span class="normal"> /mnt</span><span class="variable">$$</span><span class="normal">/etc/shorewall</span><span class="symbol">/*</span>
<span class="normal">sed -i </span><span class="string">"s#REPLACEIFACELAN#$lan_iface#"</span><span class="normal"> /mnt</span><span class="variable">$$</span><span class="normal">/etc/shorewall</span><span class="symbol">/*</span>

<span class="comment">#screen</span>
<span class="normal">sed -i </span><span class="string">"s#SERVER#$hostn#"</span><span class="normal"> /mnt</span><span class="variable">$$</span><span class="normal">/etc/skel</span><span class="symbol">/.</span><span class="normal">screenrc</span>

<span class="comment">#postfix</span>
<span class="normal">sed -i </span><span class="string">"s#DOMAIN#$domen#"</span><span class="normal"> /mnt</span><span class="variable">$$</span><span class="normal">/etc/postfix/main</span><span class="symbol">.</span><span class="normal">cf</span>
<span class="normal">sed -i </span><span class="string">"s#LAN#$loc_net#"</span><span class="normal"> /mnt</span><span class="variable">$$</span><span class="normal">/etc/postfix/main</span><span class="symbol">.</span><span class="normal">cf</span>
<span class="normal">}</span>

<span class="comment">#umount &amp; clear</span>
<span class="function">clean()</span><span class="normal"> {</span>
<span class="normal">umount -l -f /mnt</span><span class="variable">$$</span><span class="normal">/dev </span><span class="number">2</span><span class="symbol">&gt;</span><span class="normal">/dev/null</span>
<span class="normal">sleep </span><span class="number">3</span>
<span class="normal">chroot /mnt</span><span class="variable">$$</span><span class="normal"> umount -l -f /proc </span><span class="number">2</span><span class="symbol">&gt;</span><span class="normal">/dev/null</span>
<span class="normal">sleep </span><span class="number">3</span>
<span class="normal">umount -l -f /mnt</span><span class="variable">$$</span>
<span class="normal">sleep </span><span class="number">3</span>
<span class="normal">rm -r /mnt</span><span class="variable">$$</span>
<span class="normal">}</span>

<span class="comment">################################################################################</span>
<span class="comment"># begin</span>

<span class="comment">################################################################################</span>
<span class="keyword">if</span><span class="normal"> </span><span class="symbol">[</span><span class="normal"> </span><span class="variable">$UID</span><span class="normal"> -ne </span><span class="number">0</span><span class="normal"> </span><span class="symbol">]</span><span class="normal"> </span><span class="symbol">;</span><span class="normal"> </span><span class="keyword">then</span>
<span class="normal">    echo </span><span class="string">'run this script whith SUDO'</span><span class="normal"> </span><span class="symbol">;</span><span class="normal"> </span><span class="keyword">exit</span><span class="normal"> </span><span class="number">1</span>
<span class="keyword">fi</span>

<span class="keyword">case</span><span class="normal"> </span><span class="variable">$1</span><span class="normal"> </span><span class="keyword">in</span>
<span class="normal">    install</span><span class="symbol">)</span>
<span class="normal">        read_params</span>
<span class="normal">        sfdisk -s</span>
<span class="normal">        question </span><span class="string">"${green}На какой диск будем устанавливать?${black}"</span><span class="normal"> dsk </span><span class="variable">$def_disk</span>
<span class="normal">        </span><span class="variable">disk</span><span class="symbol">=</span><span class="normal">`cat /proc/partitions</span><span class="symbol">|</span><span class="normal">egrep </span><span class="string">"${dsk}</span><span class="specialchar">\&gt;</span><span class="string">"</span><span class="symbol">|</span><span class="normal">awk </span><span class="string">'{print $4}'</span><span class="normal">`</span>
<span class="normal">        limita</span>
<span class="normal">        question </span><span class="string">"${redy}Диск $disk будет отформатирован!!! Продолжить? (NO/yes)${black} "</span><span class="normal"> answ NO</span>
<span class="normal">        </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">[</span><span class="normal"> </span><span class="variable">$answ</span><span class="normal"> </span><span class="symbol">!=</span><span class="normal"> </span><span class="string">"yes"</span><span class="normal"> </span><span class="symbol">]</span><span class="normal"> </span><span class="symbol">;</span><span class="normal"> </span><span class="keyword">then</span>
<span class="normal">            echo </span><span class="string">"Выход"</span>
<span class="normal">            </span><span class="keyword">exit</span><span class="normal"> </span><span class="number">0</span>
<span class="normal">        </span><span class="keyword">fi</span>
<span class="normal">        count_sizes</span>
<span class="normal">        rm_parts</span>
<span class="normal">        mk_parts</span>
<span class="normal">        mount_root</span>
<span class="normal">        unpack_sys</span>
<span class="normal">        mount_home</span>
<span class="normal">        mount_dev</span>
<span class="normal">        mk_fstab</span>
<span class="normal">        mk_grub</span>
<span class="normal">        mk_netw</span>
<span class="normal">        mk_admin</span>
<span class="normal">        ch_configs</span>
<span class="normal">        clean</span>
<span class="normal">        </span><span class="symbol">;;</span>
<span class="normal">    grub</span><span class="symbol">)</span>
<span class="normal">        echo -e </span><span class="string">"${green}Обновляем grub...${black}"</span>
<span class="normal">        read_params</span>
<span class="normal">        question </span><span class="string">"${green}Какой диск?${black}"</span><span class="normal"> disk </span><span class="variable">$def_disk</span>
<span class="normal">        mount_root</span>
<span class="normal">        mount_dev</span>
<span class="normal">        mk_grub</span>
<span class="normal">        clean</span>
<span class="normal">        </span><span class="symbol">;;</span>
<span class="normal">    fstab</span><span class="symbol">)</span>
<span class="normal">        echo -e </span><span class="string">"${green}Обновляем /etc/fstab...${black}"</span>
<span class="normal">        read_params</span>
<span class="normal">        question </span><span class="string">"${green}Какой диск?${black}"</span><span class="normal"> disk </span><span class="variable">$def_disk</span>
<span class="normal">        mount_root</span>
<span class="normal">        mk_fstab</span>
<span class="normal">        clean</span>
<span class="normal">        </span><span class="symbol">;;</span>
<span class="normal">    network</span><span class="symbol">)</span>
<span class="normal">        echo -e </span><span class="string">"${green}Обновляем сетевые настройки...${black}"</span>
<span class="normal">        read_params</span>
<span class="normal">        question </span><span class="string">"${green}Какой диск?${black}"</span><span class="normal"> disk </span><span class="variable">$def_disk</span>
<span class="normal">        mount_root</span>
<span class="normal">        mk_netw</span>
<span class="normal">        unpack_configs</span>
<span class="normal">        ch_configs</span>
<span class="normal">        clean</span>

<span class="normal">        </span><span class="symbol">;;</span>
<span class="normal">    admin</span><span class="symbol">)</span>
<span class="normal">        echo -e </span><span class="string">"${green}Добавляем админа...${black}"</span>
<span class="normal">        read_params</span>
<span class="normal">        question </span><span class="string">"${green}Какой диск?${black}"</span><span class="normal"> disk </span><span class="variable">$def_disk</span>
<span class="normal">        mount_root</span>
<span class="normal">        mount_home</span>
<span class="normal">        mk_admin</span>
<span class="normal">        clean</span>
<span class="normal">        </span><span class="symbol">;;</span>
<span class="normal">    </span><span class="symbol">*)</span>
<span class="normal">        usage</span>
<span class="normal">        </span><span class="symbol">;;</span>
<span class="keyword">esac</span>
</tt></pre>
]]></description>
      <pubDate>Fri, 09 Sep 2011 06:02:19 GMT</pubDate>
      <guid>http://sanych.nnov.ru/content/skript_server-install</guid>
    </item>

    <item>
      <title><![CDATA[скрипты для копирования музыки на mp3 плеер]]></title>
      <link>http://sanych.nnov.ru/content/skripty_dlja_kopirovanija_muzyki_na_mp3_pleer</link>
      <description><![CDATA[Я не очень люблю слушать музыку альбомами песню за песней - утомляем быстро и надоедает. А тут приобрел плеер самый простой из-за вечной экономии - Digma Mp600, а он не умеет shuffle. Да и в машину FM-трансмиттер купил с той-же проблемой (правда надо сказать что там можно с пульта случайную композицию включать, но это же не безопасно на дороге - особенно если ездишь один). Вот и написал в свободные полчаса пару скриптов:<br>
<!-- pagebreak --><br>
Это для создания и обновления базы  с музыкой updatemuzbase.tcl:<br>
<!-- Generator: GNU source-highlight 3.1.3
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
<pre><tt><span class="comment">#! /usr/bin/tclsh</span>
<span class="comment"># откуда по умолчанию берем музыку</span>
<span class="keyword">set</span><span class="normal"> from </span><span class="symbol">/</span><span class="normal">mnt</span><span class="symbol">/</span><span class="normal">dva</span><span class="symbol">/</span><span class="normal">music</span>
<span class="comment"># где у нас база музыки</span>
<span class="keyword">set</span><span class="normal"> dbase </span><span class="symbol">~/</span><span class="normal">muzic</span><span class="symbol">.</span><span class="normal">db</span>
<span class="comment"># вынужденная глобальная переменная для рекурсивного glob</span>
<span class="keyword">set</span><span class="normal"> </span><span class="symbol">::</span><span class="normal">dirs </span><span class="string">""</span>
<span class="comment">############# рекурсивный glob для создания списка директорий   ###############</span>
<span class="keyword">proc</span><span class="normal"> globdir </span><span class="cbracket">{{</span><span class="normal">name </span><span class="symbol">.</span><span class="cbracket">}}</span><span class="normal"> </span><span class="cbracket">{</span>
<span class="normal">    </span><span class="keyword">lappend</span><span class="normal"> </span><span class="symbol">::</span><span class="normal">dirs </span><span class="variable">$name</span>
<span class="normal">    </span><span class="keyword">foreach</span><span class="normal"> subdir </span><span class="symbol">[</span><span class="keyword">glob</span><span class="normal"> </span><span class="symbol">-</span><span class="normal">nocomplain </span><span class="symbol">-</span><span class="normal">directory </span><span class="variable">$name</span><span class="normal"> </span><span class="symbol">-</span><span class="normal">type d </span><span class="symbol">*]</span><span class="normal"> </span><span class="cbracket">{</span>
<span class="normal">       globdir </span><span class="variable">$subdir</span>
<span class="normal">    </span><span class="cbracket">}</span>
<span class="cbracket">}</span>
<span class="comment"># если есть аргументы, берем музыку оттуда</span>
<span class="keyword">if</span><span class="normal"> </span><span class="cbracket">{</span><span class="variable">$argc</span><span class="normal"> </span><span class="symbol">&gt;</span><span class="normal"> </span><span class="number">0</span><span class="cbracket">}</span><span class="normal"> </span><span class="cbracket">{</span><span class="keyword">set</span><span class="normal"> from </span><span class="variable">$argv</span><span class="cbracket">}</span>
<span class="keyword">package</span><span class="normal"> require sqlite3</span>
<span class="normal">sqlite3 db </span><span class="variable">$dbase</span>
<span class="comment"># если таблица не существует, создаем id-номер, name-имя файла, use-копировался уже на флэшку или нет</span>
<span class="keyword">if</span><span class="normal"> </span><span class="symbol">![</span><span class="normal">db exists </span><span class="string">"select name from sqlite_master where type='table' and tbl_name='muz';"</span><span class="symbol">]</span><span class="normal"> </span><span class="cbracket">{</span>
<span class="normal">    db </span><span class="keyword">eval</span><span class="normal"> </span><span class="string">"CREATE TABLE muz (id integer primary key, name text, use integer);"</span>
<span class="cbracket">}</span>
<span class="comment"># мой костыль для подмонтирования NAS с музыкой</span>
<span class="keyword">exec</span><span class="normal"> sudo mount </span><span class="symbol">-</span><span class="normal">t cifs </span><span class="symbol">//</span><span class="number">192.168</span><span class="symbol">.</span><span class="number">0.2</span><span class="symbol">/</span><span class="keyword">public</span><span class="normal"> </span><span class="symbol">/</span><span class="normal">mnt </span><span class="symbol">-</span><span class="normal">o users</span><span class="symbol">,</span><span class="normal">iocharset</span><span class="symbol">=</span><span class="normal">utf8</span><span class="symbol">,</span><span class="normal">username</span><span class="symbol">=</span><span class="normal">guest</span><span class="symbol">,</span><span class="normal">password</span><span class="symbol">=</span>

<span class="keyword">puts</span><span class="normal"> </span><span class="string">"Стираем ссылки на несуществующие файлы......"</span>
<span class="normal">db </span><span class="keyword">eval</span><span class="normal"> </span><span class="string">"select * from muz;"</span><span class="normal"> </span><span class="cbracket">{</span>
<span class="normal">    </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">![</span><span class="keyword">file</span><span class="normal"> exists </span><span class="variable">$name</span><span class="symbol">]</span><span class="normal"> </span><span class="cbracket">{</span>
<span class="normal">        </span><span class="keyword">puts</span><span class="normal"> </span><span class="variable">$name</span>
<span class="normal">        db </span><span class="keyword">eval</span><span class="normal"> </span><span class="string">"delete from muz where id='$id';"</span>
<span class="normal">    </span><span class="cbracket">}</span>
<span class="cbracket">}</span>

<span class="keyword">puts</span><span class="normal"> </span><span class="string">"Заносим в базу новые файлы......."</span>
<span class="normal">globdir </span><span class="variable">$from</span>
<span class="keyword">foreach</span><span class="normal"> d $</span><span class="symbol">::</span><span class="normal">dirs </span><span class="cbracket">{</span>
<span class="normal">    </span><span class="keyword">foreach</span><span class="normal"> f </span><span class="symbol">[</span><span class="keyword">glob</span><span class="normal"> </span><span class="symbol">-</span><span class="normal">nocomplain </span><span class="symbol">-</span><span class="normal">directory </span><span class="variable">$d</span><span class="normal"> </span><span class="symbol">-</span><span class="normal">type f </span><span class="symbol">*.</span><span class="cbracket">{</span><span class="normal">mp</span><span class="symbol">,</span><span class="normal">MP</span><span class="symbol">,</span><span class="normal">Mp</span><span class="cbracket">}</span><span class="number">3</span><span class="symbol">]</span><span class="normal"> </span><span class="cbracket">{</span>
<span class="normal">        </span><span class="keyword">regsub</span><span class="normal"> </span><span class="symbol">-</span><span class="normal">all </span><span class="cbracket">{</span><span class="string">'} $f {''} f</span>
<span class="string">#'</span>
<span class="normal">        </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">![</span><span class="normal">db exists </span><span class="string">"select id from muz where name='$f';"</span><span class="symbol">]</span><span class="normal"> </span><span class="cbracket">{</span>
<span class="normal">            </span><span class="keyword">puts</span><span class="normal"> </span><span class="variable">$f</span>
<span class="normal">            db </span><span class="keyword">eval</span><span class="normal"> </span><span class="string">"insert into muz values (NULL, '$f' ,0);"</span>
<span class="normal">        </span><span class="cbracket">}</span>
<span class="normal">    </span><span class="cbracket">}</span>
<span class="cbracket">}</span>

<span class="comment"># отмонтируем NAS</span>
<span class="keyword">exec</span><span class="normal"> sudo umount </span><span class="symbol">/</span><span class="normal">mnt</span></tt></pre><br>
А это для копирования на флэшку в случайном порядке randommuz.tcl:<br>
<!-- Generator: GNU source-highlight 3.1.3
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
<pre><tt><span class="comment">#! /usr/bin/tclsh</span>
<span class="comment"># база с музыкой</span>
<span class="keyword">set</span><span class="normal"> dbase </span><span class="symbol">~/</span><span class="normal">muzic</span><span class="symbol">.</span><span class="normal">db</span>
<span class="comment"># куда копируем по умолчанию </span>
<span class="keyword">set</span><span class="normal"> path </span><span class="symbol">/</span><span class="normal">media</span><span class="symbol">/</span><span class="normal">Transcend</span>
<span class="comment"># меняем путь при наличии аргументов</span>
<span class="keyword">if</span><span class="normal"> </span><span class="cbracket">{</span><span class="variable">$argc</span><span class="normal"> </span><span class="symbol">&gt;</span><span class="normal"> </span><span class="number">0</span><span class="cbracket">}</span><span class="normal"> </span><span class="cbracket">{</span><span class="keyword">set</span><span class="normal"> path </span><span class="variable">$argv</span><span class="cbracket">}</span>
<span class="keyword">puts</span><span class="normal"> </span><span class="variable">$path</span>

<span class="comment"># мой костыль для NAS</span>
<span class="keyword">exec</span><span class="normal"> sudo mount </span><span class="symbol">-</span><span class="normal">t cifs </span><span class="symbol">//</span><span class="number">192.168</span><span class="symbol">.</span><span class="number">0.2</span><span class="symbol">/</span><span class="keyword">public</span><span class="normal"> </span><span class="symbol">/</span><span class="normal">mnt </span><span class="symbol">-</span><span class="normal">o users</span><span class="symbol">,</span><span class="normal">iocharset</span><span class="symbol">=</span><span class="normal">utf8</span><span class="symbol">,</span><span class="normal">username</span><span class="symbol">=</span><span class="normal">guest</span><span class="symbol">,</span><span class="normal">password</span><span class="symbol">=</span>
<span class="keyword">package</span><span class="normal"> require sqlite3</span>
<span class="normal">sqlite3 db </span><span class="variable">$dbase</span>
<span class="comment"># начальный номер композиции, они берутся в случайном порядке для тупых китайских плейеров не умеющих shuffle</span>
<span class="keyword">set</span><span class="normal"> num </span><span class="number">1000</span>
<span class="comment"># для того чтоб выходило когда кончится место на флэшке</span>
<span class="keyword">catch</span><span class="normal"> </span><span class="cbracket">{</span>
<span class="normal">  </span><span class="keyword">while</span><span class="normal"> </span><span class="cbracket">{</span><span class="number">1</span><span class="cbracket">}</span><span class="normal"> </span><span class="cbracket">{</span>
<span class="normal">    db </span><span class="keyword">eval</span><span class="normal"> </span><span class="string">"select id,name from muz where use='0' order by random() limit 1;"</span><span class="normal"> </span><span class="cbracket">{</span>
<span class="normal">        </span><span class="keyword">file</span><span class="normal"> copy </span><span class="variable">$name</span><span class="normal"> $</span><span class="cbracket">{</span><span class="normal">path</span><span class="cbracket">}</span><span class="symbol">/</span><span class="normal">$</span><span class="cbracket">{</span><span class="normal">num</span><span class="cbracket">}</span><span class="symbol">.</span><span class="normal">mp3  </span>
<span class="normal">        </span><span class="keyword">puts</span><span class="normal"> </span><span class="string">"$num      $name"</span>
<span class="comment"># помечаем что копировали для того чтоб избегнуть повторов</span>
<span class="normal">        db </span><span class="keyword">eval</span><span class="normal"> </span><span class="string">"update muz set use='1' where id='$id';"</span>
<span class="normal">        </span><span class="keyword">incr</span><span class="normal"> num</span>
<span class="normal">    </span><span class="cbracket">}</span>
<span class="normal">  </span><span class="cbracket">}</span>
<span class="cbracket">}</span>
<span class="comment"># отмонтируем NAS</span>
<span class="keyword">exec</span><span class="normal"> sudo umount </span><span class="symbol">/</span><span class="normal">mnt</span></tt></pre>
]]></description>
      <pubDate>Wed, 17 Aug 2011 18:40:25 GMT</pubDate>
      <guid>http://sanych.nnov.ru/content/skripty_dlja_kopirovanija_muzyki_na_mp3_pleer</guid>
    </item>

    <item>
      <title><![CDATA[Таймауты чтения-записи с жесткого диска]]></title>
      <link>http://sanych.nnov.ru/content/Tajmauty_chtenija-zapisi_s_zhestkogo_diska</link>
      <description><![CDATA[From <a href="http://habrahabr.ru/blogs/hardware/92701">http://habrahabr.ru/blogs/hardware/92701</a><br>
Посмотреть, поддерживает ли жёсткий диск управление ошибками можно с помощью команды <!-- Generator: GNU source-highlight 3.1.3
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
<pre><tt><span class="normal">smartctl -a /dev/sda</span></tt></pre> строчка SCT capabilities:<br>
<pre>SCT capabilities:  (0x303f) SCT Status supported.
			SCT Error Recovery Control supported.  *****
			SCT Feature Control supported.</pre><br>
<br>
Если строчки нет — диск их (команды) не поддерживает.<br>
<br>
Чтобы посмотреть таймауты используем команду smartctl -l scterc /dev/sda. Вывод выглядит так:<br>
<!-- Generator: GNU source-highlight 3.1.3
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
<pre><tt><span class="comment"># smartctl -l scterc /dev/sda</span></tt></pre><pre>SCT Error Recovery Control:
           Read:     70 (7.0 seconds)
          Write:     70 (7.0 seconds)</pre><br>
Для установки, соответственно, указываем значения через запятую после scterc: <!-- Generator: GNU source-highlight 3.1.3
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
<pre><tt><span class="normal">smartctl -l scterc</span><span class="symbol">,</span><span class="number">120</span><span class="symbol">,</span><span class="number">60</span><span class="normal"> /dev/sde</span></tt></pre> (величина указывается в десятых долях секунды, то есть 120 соотвествует 12 секундам, первое число — чтение, второе — запись). 0 означает «до победного конца», то есть неограниченно долго.
]]></description>
      <pubDate>Thu, 11 Aug 2011 16:44:30 GMT</pubDate>
      <guid>http://sanych.nnov.ru/content/Tajmauty_chtenija-zapisi_s_zhestkogo_diska</guid>
    </item>

    <item>
      <title><![CDATA[генератор html-кода на tcl ]]></title>
      <link>http://sanych.nnov.ru/content/generator_html-koda_na_tcl_</link>
      <description><![CDATA[Данная библиотека появилась пару лет назад на <a href="http://geomapx.blogspot.com/2009/01/html-tcl.html">примерах Печникова</a>. Под себя я правда переписал...<br>
Вот пример кода:<br>
<!-- Generator: GNU source-highlight 3.1.3
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
<pre><tt><span class="comment">#! /usr/bin/tclsh</span>
<span class="keyword">source</span><span class="normal"> config</span><span class="symbol">/</span><span class="normal">cfg</span><span class="symbol">.</span><span class="normal">cfg</span>
<span class="normal">test_cookie</span>
<span class="normal">doctype</span>
<span class="normal">html </span><span class="cbracket">{</span>
<span class="normal"> siteheader </span><span class="string">"Iconez"</span><span class="normal"> lite</span>
<span class="normal"> body </span><span class="cbracket">{</span>
<span class="normal">  cms</span><span class="symbol">-</span><span class="normal">menu</span>
<span class="normal">  sidebar</span>
<span class="normal">  </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">![</span><span class="normal">guest</span><span class="symbol">]</span><span class="normal"> </span><span class="cbracket">{</span>
<span class="normal">    div </span><span class="symbol">-</span><span class="normal">class main </span><span class="symbol">-</span><span class="normal">style text</span><span class="symbol">-</span><span class="normal">align</span><span class="symbol">:</span><span class="normal">center </span><span class="cbracket">{</span>
<span class="normal">      h3 </span><span class="cbracket">{</span><span class="keyword">puts</span><span class="normal"> </span><span class="string">"Прикрепленные ярлычки:"</span><span class="cbracket">}</span>
<span class="normal">      hr</span>
<span class="normal">      table </span><span class="cbracket">{</span>
<span class="normal">        </span><span class="keyword">foreach</span><span class="normal"> lin </span><span class="symbol">[</span><span class="keyword">exec</span><span class="normal"> ls images</span><span class="symbol">/</span><span class="normal"> </span><span class="symbol">|</span><span class="normal"> grep </span><span class="string">"16x16.png$"</span><span class="symbol">]</span><span class="normal"> </span><span class="cbracket">{</span>
<span class="normal">          tr </span><span class="cbracket">{</span><span class="normal">td </span><span class="cbracket">{</span><span class="normal">img </span><span class="symbol">-</span><span class="normal">src </span><span class="symbol">/</span><span class="normal">images</span><span class="symbol">/</span><span class="variable">$lin</span><span class="normal"> </span><span class="symbol">-</span><span class="normal">width 32px </span><span class="symbol">-</span><span class="normal">height 32px</span><span class="cbracket">}</span>
<span class="normal">            td </span><span class="cbracket">{</span><span class="keyword">puts</span><span class="normal"> </span><span class="symbol">/</span><span class="normal">images</span><span class="symbol">/</span><span class="variable">$lin</span><span class="cbracket">}</span>
<span class="normal">          </span><span class="cbracket">}</span>
<span class="normal">        </span><span class="cbracket">}</span>
<span class="normal">      </span><span class="cbracket">}</span>
<span class="normal">    </span><span class="cbracket">}</span>
<span class="normal">  </span><span class="cbracket">}</span>
<span class="normal">  sitefooter lite</span>
<span class="normal">  </span><span class="cbracket">}</span>
<span class="cbracket">}</span></tt></pre><br>
А вот библиотека:<br>
<!-- Generator: GNU source-highlight 3.1.3
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
<pre><tt><span class="keyword">package</span><span class="normal"> provide html2 </span><span class="number">1.0</span>
<span class="keyword">namespace</span><span class="normal"> </span><span class="keyword">eval</span><span class="normal"> </span><span class="symbol">::</span><span class="normal">html2</span><span class="symbol">::</span><span class="normal"> </span><span class="cbracket">{</span>
<span class="normal">    </span><span class="keyword">namespace</span><span class="normal"> export </span><span class="symbol">*</span>
<span class="cbracket">}</span>

<span class="comment"># шаблон для генерации стандартного html-тэга</span>
<span class="keyword">proc</span><span class="normal"> </span><span class="symbol">::</span><span class="normal">html2</span><span class="symbol">::</span><span class="normal">tag </span><span class="cbracket">{</span><span class="normal">name args</span><span class="cbracket">}</span><span class="normal"> </span><span class="cbracket">{</span>
<span class="normal">  </span><span class="keyword">set</span><span class="normal"> name </span><span class="symbol">[</span><span class="keyword">string</span><span class="normal"> range </span><span class="variable">$name</span><span class="normal"> </span><span class="symbol">[</span><span class="keyword">expr</span><span class="normal"> </span><span class="symbol">[</span><span class="keyword">string</span><span class="normal"> last </span><span class="symbol">:</span><span class="normal"> </span><span class="variable">$name</span><span class="symbol">]+</span><span class="number">1</span><span class="symbol">]</span><span class="normal"> end</span><span class="symbol">]</span>
<span class="normal">  </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">[</span><span class="keyword">expr</span><span class="normal"> </span><span class="symbol">[</span><span class="keyword">llength</span><span class="normal"> </span><span class="variable">$args</span><span class="symbol">]%</span><span class="number">2</span><span class="symbol">]</span><span class="normal"> </span><span class="cbracket">{</span>
<span class="normal">    </span><span class="keyword">set</span><span class="normal"> opts </span><span class="symbol">[</span><span class="keyword">lrange</span><span class="normal"> </span><span class="variable">$args</span><span class="normal"> </span><span class="number">0</span><span class="normal"> end</span><span class="symbol">-</span><span class="number">1</span><span class="symbol">]</span>
<span class="normal">    </span><span class="keyword">set</span><span class="normal"> b </span><span class="symbol">[</span><span class="keyword">lindex</span><span class="normal"> </span><span class="variable">$args</span><span class="normal"> end</span><span class="symbol">]</span>
<span class="normal">  </span><span class="cbracket">}</span><span class="normal"> </span><span class="keyword">else</span><span class="normal"> </span><span class="cbracket">{</span>
<span class="normal">    </span><span class="keyword">set</span><span class="normal"> opts </span><span class="variable">$args</span>
<span class="normal">    </span><span class="keyword">set</span><span class="normal"> b </span><span class="string">""</span>
<span class="normal">  </span><span class="cbracket">}</span>
<span class="normal">  </span><span class="keyword">puts</span><span class="normal"> </span><span class="symbol">-</span><span class="normal">nonewline </span><span class="string">"&lt;$name"</span>
<span class="normal">  </span><span class="keyword">foreach</span><span class="normal"> </span><span class="cbracket">{</span><span class="normal">argname argvalue</span><span class="cbracket">}</span><span class="normal"> </span><span class="variable">$opts</span><span class="normal"> </span><span class="cbracket">{</span>
<span class="normal">    </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">[</span><span class="keyword">regexp</span><span class="normal"> </span><span class="string">" $argname "</span><span class="normal"> </span><span class="string">" -checked -hidden -readonly "</span><span class="symbol">]</span><span class="normal"> </span><span class="cbracket">{</span>
<span class="normal">      </span><span class="keyword">if</span><span class="normal"> </span><span class="cbracket">{</span><span class="variable">$argvalue</span><span class="normal"> ne </span><span class="string">"0"</span><span class="cbracket">}</span><span class="normal"> </span><span class="cbracket">{</span><span class="keyword">puts</span><span class="normal"> </span><span class="symbol">-</span><span class="normal">nonewline </span><span class="string">" [string range $argname 1 end]"</span><span class="cbracket">}</span>
<span class="normal">    </span><span class="cbracket">}</span><span class="normal"> </span><span class="keyword">else</span><span class="normal"> </span><span class="cbracket">{</span><span class="keyword">puts</span><span class="normal"> </span><span class="symbol">-</span><span class="normal">nonewline </span><span class="string">" [string range $argname 1 end]=</span><span class="specialchar">\"</span><span class="string">$argvalue</span><span class="specialchar">\"</span><span class="string">"</span><span class="cbracket">}</span>
<span class="normal">  </span><span class="cbracket">}</span>
<span class="normal">  </span><span class="comment">### для незакрывающихся тегов</span>
<span class="normal">  </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">![</span><span class="keyword">regexp</span><span class="normal"> </span><span class="string">" $name "</span><span class="normal"> </span><span class="string">" area base basefont col frame param meta link img input hr br "</span><span class="symbol">]</span><span class="normal"> </span><span class="cbracket">{</span>
<span class="normal">    </span><span class="keyword">puts</span><span class="normal"> </span><span class="symbol">-</span><span class="normal">nonewline </span><span class="string">"&gt;"</span>
<span class="normal">    </span><span class="keyword">uplevel</span><span class="normal"> </span><span class="number">1</span><span class="normal"> </span><span class="variable">$b</span>
<span class="normal">    </span><span class="keyword">puts</span><span class="normal"> </span><span class="symbol">-</span><span class="normal">nonewline </span><span class="string">"&lt;/$name&gt;"</span>
<span class="normal">  </span><span class="cbracket">}</span><span class="normal"> </span><span class="keyword">else</span><span class="normal"> </span><span class="cbracket">{</span>
<span class="normal">    </span><span class="keyword">if</span><span class="normal"> </span><span class="cbracket">{</span><span class="variable">$name</span><span class="normal"> eq </span><span class="string">"img"</span><span class="normal"> </span><span class="symbol">&amp;&amp;</span><span class="normal"> </span><span class="symbol">![</span><span class="keyword">regexp</span><span class="normal"> </span><span class="symbol">--</span><span class="normal"> </span><span class="string">"-alt"</span><span class="normal"> </span><span class="variable">$opts</span><span class="symbol">]</span><span class="cbracket">}</span><span class="normal"> </span><span class="cbracket">{</span>

<span class="normal">      </span><span class="keyword">puts</span><span class="normal"> </span><span class="symbol">-</span><span class="normal">nonewline </span><span class="string">" alt=</span><span class="specialchar">\"\"</span><span class="string">"</span>
<span class="normal">    </span><span class="cbracket">}</span>
<span class="normal">    </span><span class="keyword">puts</span><span class="normal"> </span><span class="symbol">-</span><span class="normal">nonewline </span><span class="string">"&gt;"</span>
<span class="normal">  </span><span class="cbracket">}</span>
<span class="cbracket">}</span>

<span class="keyword">foreach</span><span class="normal"> name </span><span class="cbracket">{</span><span class="normal">html meta title body head style link script form textarea input table thead tfoot tbody tr td th</span>
<span class="normal">  center a font button div span p img label ol ul li b i u s strong em h1 h2 h3 h4 h5 h6</span>
<span class="normal">  br hr var code kbd tt samp pre acronym embed header footer dd dt video audio</span><span class="cbracket">}</span><span class="normal"> </span><span class="cbracket">{</span>
<span class="normal">  </span><span class="keyword">proc</span><span class="normal"> </span><span class="symbol">::</span><span class="normal">html2</span><span class="symbol">::</span><span class="variable">$name</span><span class="normal"> args </span><span class="cbracket">{</span>
<span class="normal">    </span><span class="keyword">set</span><span class="normal"> name </span><span class="symbol">[</span><span class="keyword">lindex</span><span class="normal"> </span><span class="symbol">[</span><span class="keyword">info</span><span class="normal"> level </span><span class="number">0</span><span class="symbol">]</span><span class="normal"> </span><span class="number">0</span><span class="symbol">]</span>
<span class="normal">    </span><span class="keyword">uplevel</span><span class="normal"> </span><span class="number">1</span><span class="normal"> html2</span><span class="symbol">::</span><span class="normal">tag </span><span class="variable">$name</span><span class="normal"> </span><span class="variable">$args</span>
<span class="normal">  </span><span class="cbracket">}</span>
<span class="cbracket">}</span>

<span class="keyword">proc</span><span class="normal"> </span><span class="symbol">::</span><span class="normal">html2</span><span class="symbol">::</span><span class="normal">doctype </span><span class="cbracket">{}</span><span class="normal"> </span><span class="cbracket">{</span>
<span class="normal">  </span><span class="keyword">puts</span><span class="normal"> </span><span class="cbracket">{</span><span class="normal">Content</span><span class="symbol">-</span><span class="normal">Type</span><span class="symbol">:</span><span class="normal"> text</span><span class="symbol">/</span><span class="normal">html</span><span class="symbol">;</span><span class="normal"> charset</span><span class="symbol">=</span><span class="normal">utf</span><span class="symbol">-</span><span class="number">8</span>

<span class="symbol">&lt;!</span><span class="normal">DOCTYPE HTML PUBLIC </span><span class="string">"-//W3C//DTD HTML 4.01 Transitional//EN"</span><span class="normal"> </span><span class="string">"http://www.w3.org/TR/html4/loose.dtd"</span><span class="symbol">&gt;</span><span class="cbracket">}</span>
<span class="cbracket">}</span>

<span class="keyword">proc</span><span class="normal"> </span><span class="symbol">::</span><span class="normal">html2</span><span class="symbol">::</span><span class="normal">html5 </span><span class="cbracket">{}</span><span class="normal"> </span><span class="cbracket">{</span>
<span class="normal">  </span><span class="keyword">puts</span><span class="normal"> </span><span class="cbracket">{</span><span class="normal">Content</span><span class="symbol">-</span><span class="normal">Type</span><span class="symbol">:</span><span class="normal"> text</span><span class="symbol">/</span><span class="normal">html</span><span class="symbol">;</span><span class="normal"> charset</span><span class="symbol">=</span><span class="normal">utf</span><span class="symbol">-</span><span class="number">8</span>

<span class="symbol">&lt;!</span><span class="normal">DOCTYPE html</span><span class="symbol">&gt;</span><span class="cbracket">}</span>
<span class="cbracket">}</span></tt></pre><br>

]]></description>
      <pubDate>Mon, 01 Aug 2011 20:00:09 GMT</pubDate>
      <guid>http://sanych.nnov.ru/content/generator_html-koda_na_tcl_</guid>
    </item>

    <item>
      <title><![CDATA[Как сделать из ноутбука с GNU/Linux точку доступа]]></title>
      <link>http://sanych.nnov.ru/content/Kak_sdelat`_iz_noutbuka_s_GNU_Linux_tochku_dostupa</link>
      <description><![CDATA[Вводная: есть ноутбук/нетбук и 3G модем, надо дать доступ в интернет еще некоторым устройствам. Способ подключения к интернету модема опускаем, это может быть wvdial или network-manager.<br>
Ставим пакеты:<br>
aptitude install hostapd dnsmasq<br>
Если dnsmasq не будет использоваться как кэширующий днс-сервер отключаем запуск в /etc/default/dnsmasq.<br>
Скрипт запуска ~/bin/shareinet:<br>
<!-- Generator: GNU source-highlight 3.1.3
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
<pre><tt><span class="comment">#! /bin/bash</span>
<span class="comment"># у меня network-manager - разрываем связь если есть </span>
<span class="normal">nmcli dev disconnect iface wlan0</span>
<span class="normal">ip l </span><span class="keyword">set</span><span class="normal"> wlan0 up</span>
<span class="normal">ip a a </span><span class="number">10.3</span><span class="symbol">.</span><span class="number">4.1</span><span class="symbol">/</span><span class="number">24</span><span class="normal"> dev wlan0 brd </span><span class="symbol">+</span>
<span class="normal">hostapd -B </span><span class="symbol">~</span><span class="normal">/bin/hostapd</span><span class="symbol">.</span><span class="normal">conf</span>
<span class="normal">dnsmasq -i wlan0 -F </span><span class="number">10.3</span><span class="symbol">.</span><span class="number">4.2</span><span class="symbol">,</span><span class="number">10.3</span><span class="symbol">.</span><span class="number">4.20</span><span class="symbol">,</span><span class="normal">1h</span>
<span class="normal">echo </span><span class="number">1</span><span class="normal"> </span><span class="symbol">&gt;</span><span class="normal"> /proc/sys/net/ipv</span><span class="number">4</span><span class="normal">/ip_forward</span>
<span class="normal">iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE</span></tt></pre><br>
~/bin/hostapd.conf:<br>
<pre>wpa=2
rsn_pairwise=CCMP
wpa_passphrase=PASSWPANET
driver=nl80211
interface=wlan0
hw_mode=g
channel=1
ssid=ESSID</pre><br>
Скрипт остановки ~/bin/killinet:<br>
<!-- Generator: GNU source-highlight 3.1.3
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
<pre><tt><span class="comment">#! /bin/bash</span>
<span class="normal">iptables -t nat -D POSTROUTING -o ppp0 -j MASQUERADE</span>
<span class="normal">ip  a d </span><span class="number">10.3</span><span class="symbol">.</span><span class="number">4.1</span><span class="symbol">/</span><span class="number">24</span><span class="normal"> dev wlan0</span>
<span class="normal">killall dnsmasq</span>
<span class="normal">killall hostapd</span>
<span class="normal">ip l </span><span class="keyword">set</span><span class="normal"> wlan0 down</span></tt></pre><br>

]]></description>
      <pubDate>Mon, 01 Aug 2011 19:27:49 GMT</pubDate>
      <guid>http://sanych.nnov.ru/content/Kak_sdelat`_iz_noutbuka_s_GNU_Linux_tochku_dostupa</guid>
    </item>

    <item>
      <title><![CDATA[Windows не удается загрузить программу для установки Volume]]></title>
      <link>http://sanych.nnov.ru/content/Windows_ne_udaetsja_zagruzit`_programmu_dlja_ustanovki_Volume</link>
      <description><![CDATA[При вставке флэшки выводится сообщение "Windows не удается загрузить программу для установки Volume"<br>
Чаще всего такое случается когда вирус пожрал файлы в папке windows\system32 <br>
sfc.dll <br>
sfc_os.dll <br>
sfcfiles.dll 
]]></description>
      <pubDate>Fri, 22 Jul 2011 19:24:20 GMT</pubDate>
      <guid>http://sanych.nnov.ru/content/Windows_ne_udaetsja_zagruzit`_programmu_dlja_ustanovki_Volume</guid>
    </item>

    <item>
      <title><![CDATA[Скрипт проверки баланса для 3G модема Huawey/ZTE]]></title>
      <link>http://sanych.nnov.ru/content/Skript_proverki_balansa_dlja_3G_modema_Huawey_ZTE</link>
      <description><![CDATA[Была поставлена задача проверять баланс 3G модема Huawey без использования Mobile Partner. После прочесывания инета было выяснено:<br>
1) АТ команду нужно посылать в закодированном виде<br>
2) Ответ модем также присылает в закодированном виде<br>
<!-- pagebreak --><br>
АТ команда имеет общий вид AT+CUSD=1,*102#,15 . Вот в ней USSD-запрос *102# и надо кодировать в вид понятный модему.<br>
Примерно так:<br>
<!-- Generator: GNU source-highlight 3.1.3
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
<pre><tt><span class="normal">perl -e </span><span class="string">'@a=split(//,unpack("b*","*102#")); for ($i=7; $i &lt; $#a; $i+=8) { $a[$i]="" } print uc(unpack("H*", pack("b*", join("", @a))))."</span><span class="specialchar">\n</span><span class="string">"'</span>
<span class="normal">AA184C3602</span></tt></pre><br>
Ответ от модема приходит примерно такой:<br>
<pre>AT+CUSD=1,AA184C3602,15
OK

+CUSD: 0,"04110430043B0430043D04410020003500370039002E003600300440002E00200422044004300
4440438043A002000300020041A0431002E0414043504420430043B0438003A002000680074007400700073
003A002F002F00750073006C007500670069002E006200650065006C0069006E0065002E00720075",72</pre><br>
Декодировать его можно так:<br>
<!-- Generator: GNU source-highlight 3.1.3
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
<pre><tt><span class="normal">echo </span><span class="string">"04110430043B0430043D04410020003500370039002E003600300440002E0</span>
<span class="string">02004220440043004440438043A002000300020041A0431002E0414043504420430043B0438003A0020</span>
<span class="string">00680074007400700073003A002F002F00750073006C007500670069002E006200650065006C0069006</span>
<span class="string">E0065002E00720075"</span><span class="normal"> </span><span class="symbol">\</span>
<span class="symbol">|</span><span class="normal"> perl -ne </span><span class="string">'@a = m/([0-9A-F]{4})/g; map { eval "print </span><span class="specialchar">\"\\</span><span class="string">x{$_}</span><span class="specialchar">\"</span><span class="string">"; } @a;'</span><span class="normal"> </span><span class="number">2</span><span class="symbol">&gt;</span><span class="normal">/dev/null</span>

<span class="normal">Баланс </span><span class="number">579.60</span><span class="normal">р</span><span class="symbol">.</span><span class="normal"> Трафик </span><span class="number">0</span><span class="normal"> Кб</span><span class="symbol">.</span><span class="normal">Детали</span><span class="symbol">:</span><span class="normal"> https</span><span class="symbol">:</span><span class="normal">//uslugi</span><span class="symbol">.</span><span class="normal">beeline</span><span class="symbol">.</span><span class="normal">ru</span></tt></pre><br>
Поскольку с перлом у меня туго, а тут попался скрипт на питоне, я слегка адаптировал его под себя:<br>
<!-- Generator: GNU source-highlight 3.1.3
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
<pre><tt><span class="comment">#!/usr/bin/env python</span>
<span class="comment"># -*- coding: utf-8 -*-</span>
<span class="comment">#</span>
<span class="comment"># This script send 'get balance' request to the Beeline </span>
<span class="comment"># from Huawei E219/E220 USB-GPRS modem.</span>
<span class="comment">#</span>
<span class="comment"># IDima (c) 2008</span>
<span class="comment">#</span>
<span class="preproc">import</span><span class="normal"> serial</span>
<span class="preproc">import</span><span class="normal"> string</span>
<span class="preproc">import</span><span class="normal"> os</span>
<span class="comment">#</span>
<span class="comment"># Decode string from Beeline to current charset</span>
<span class="comment">#</span>
<span class="keyword">def</span><span class="normal"> </span><span class="function">str2byte</span><span class="symbol">(</span><span class="normal">a</span><span class="symbol">):</span>
<span class="normal">    b</span><span class="symbol">=</span><span class="string">''</span>
<span class="normal">    </span><span class="keyword">for</span><span class="normal"> i </span><span class="keyword">in</span><span class="normal"> </span><span class="function">range</span><span class="symbol">(</span><span class="function">len</span><span class="symbol">(</span><span class="normal">a</span><span class="symbol">)/</span><span class="number">4</span><span class="symbol">):</span>
<span class="normal">        b</span><span class="symbol">+=</span><span class="function">chr</span><span class="symbol">(</span><span class="function">eval</span><span class="symbol">(</span><span class="string">'0x'</span><span class="symbol">+</span><span class="normal">a</span><span class="symbol">[</span><span class="normal">i</span><span class="symbol">*</span><span class="number">4</span><span class="symbol">+</span><span class="number">2</span><span class="symbol">:</span><span class="normal">i</span><span class="symbol">*</span><span class="number">4</span><span class="symbol">+</span><span class="number">4</span><span class="symbol">]))+</span><span class="function">chr</span><span class="symbol">(</span><span class="function">eval</span><span class="symbol">(</span><span class="string">'0x'</span><span class="symbol">+</span><span class="normal">a</span><span class="symbol">[</span><span class="normal">i</span><span class="symbol">*</span><span class="number">4</span><span class="symbol">:</span><span class="normal">i</span><span class="symbol">*</span><span class="number">4</span><span class="symbol">+</span><span class="number">2</span><span class="symbol">]))</span>
<span class="normal">    </span><span class="keyword">return</span><span class="normal"> </span><span class="function">unicode</span><span class="symbol">(</span><span class="normal">b</span><span class="symbol">,</span><span class="normal"> </span><span class="string">'utf16'</span><span class="symbol">)</span>
<span class="comment">#</span>
<span class="comment"># Definitions</span>
<span class="comment">#</span>
<span class="normal">USBPORT</span><span class="symbol">=</span><span class="string">'/dev/ttyUSB2'</span>
<span class="normal">USBSPEED</span><span class="symbol">=</span><span class="number">460800</span>
<span class="normal">MAXSTRINGLENGTH</span><span class="symbol">=</span><span class="number">300</span>

<span class="comment">#print "Wait a USSD request ... "</span>
<span class="normal">s</span><span class="symbol">=</span><span class="normal">serial</span><span class="symbol">.</span><span class="function">Serial</span><span class="symbol">(</span><span class="normal">USBPORT</span><span class="symbol">,</span><span class="normal">USBSPEED</span><span class="symbol">,</span><span class="normal">timeout</span><span class="symbol">=</span><span class="number">5</span><span class="symbol">)</span>
<span class="normal">s</span><span class="symbol">.</span><span class="function">write</span><span class="symbol">(</span><span class="string">'ATZ \015'</span><span class="symbol">)</span>
<span class="normal">s</span><span class="symbol">.</span><span class="function">write</span><span class="symbol">(</span><span class="string">'AT+CUSD=1,AA184C3602,15 \015'</span><span class="symbol">)</span>
<span class="normal">line</span><span class="symbol">=</span><span class="string">''</span>
<span class="keyword">while</span><span class="normal"> line</span><span class="symbol">[</span><span class="number">0</span><span class="symbol">:</span><span class="number">6</span><span class="symbol">]</span><span class="normal"> </span><span class="symbol">!=</span><span class="normal"> </span><span class="string">'+CUSD:'</span><span class="symbol">:</span><span class="normal">            </span>
<span class="normal">    line</span><span class="symbol">=</span><span class="normal">s</span><span class="symbol">.</span><span class="function">readline</span><span class="symbol">(</span><span class="normal">MAXSTRINGLENGTH</span><span class="symbol">)</span>
<span class="normal">s</span><span class="symbol">.</span><span class="function">close</span><span class="symbol">()</span>

<span class="normal">line2</span><span class="symbol">=</span><span class="normal">line</span><span class="symbol">.</span><span class="function">split</span><span class="symbol">(</span><span class="string">','</span><span class="symbol">)[</span><span class="number">1</span><span class="symbol">]</span>
<span class="normal">line3</span><span class="symbol">=</span><span class="normal">string</span><span class="symbol">.</span><span class="function">replace</span><span class="symbol">(</span><span class="normal">line2</span><span class="symbol">,</span><span class="string">'"'</span><span class="symbol">,</span><span class="string">''</span><span class="symbol">)</span>
<span class="normal">line4</span><span class="symbol">=</span><span class="function">str2byte</span><span class="symbol">(</span><span class="normal">line3</span><span class="symbol">)</span>
<span class="normal">result</span><span class="symbol">=</span><span class="normal">line4</span><span class="symbol">.</span><span class="function">encode</span><span class="symbol">(</span><span class="string">'utf8'</span><span class="symbol">)</span>
<span class="comment">#result=line3</span>
<span class="comment"># вывод в консоль</span>
<span class="keyword">print</span><span class="normal"> result</span>
<span class="comment"># вывод в нотификатор</span>
<span class="normal">os</span><span class="symbol">.</span><span class="function">system</span><span class="symbol">(</span><span class="string">'echo "message:'</span><span class="normal"> </span><span class="symbol">+</span><span class="normal"> result </span><span class="symbol">+</span><span class="normal"> </span><span class="string">'" | /usr/bin/zenity --notification --listen --timeout 5'</span><span class="symbol">)</span>
<span class="comment">#os.system('notify-send -i info -t 5000 "Запрос баланса" "' + result +'"')</span>
</tt></pre><br>
У меня запрос и ответ пересылаются через /dev/ttyUSB2, в некоторых случаях порты ввода и вывода как я понял могут отличаться. Вызов скрипта повесил на горячую клавишу, поскольку стоит unity нотификатором служит zenity, в случае другого DE возможно нужно будет поменять последнюю строчку.<br>
Update:<br>
Для сравнения написал почти тоже самое на tcl:<br>
<!-- Generator: GNU source-highlight 3.1.3
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
<pre><tt><span class="comment">#! /usr/bin/tclsh</span>
<span class="comment"># порт</span>
<span class="keyword">set</span><span class="normal"> port </span><span class="symbol">/</span><span class="normal">dev</span><span class="symbol">/</span><span class="normal">ttyUSB2</span>
<span class="comment"># запрос баланса</span>
<span class="keyword">set</span><span class="normal"> req AT</span><span class="symbol">+</span><span class="normal">CUSD</span><span class="symbol">=</span><span class="number">1</span><span class="symbol">,</span><span class="normal">AA184C3602</span><span class="symbol">,</span><span class="number">15</span>

<span class="comment"># вывод в нотификатор</span>
<span class="comment">#proc mess m {</span>
<span class="comment">#    puts $m</span>
<span class="comment">#}</span>

<span class="keyword">proc</span><span class="normal"> mess m </span><span class="cbracket">{</span>
<span class="normal">    </span><span class="keyword">exec</span><span class="normal"> notify</span><span class="symbol">-</span><span class="normal">send </span><span class="symbol">-</span><span class="normal">i </span><span class="keyword">info</span><span class="normal"> </span><span class="symbol">-</span><span class="normal">t </span><span class="number">5000</span><span class="normal"> </span><span class="string">"Запрос баланса"</span><span class="normal"> </span><span class="variable">$m</span>
<span class="cbracket">}</span>


<span class="keyword">if</span><span class="normal"> </span><span class="cbracket">{</span><span class="symbol">![</span><span class="keyword">file</span><span class="normal"> exists </span><span class="variable">$port</span><span class="symbol">]</span><span class="cbracket">}</span><span class="normal"> </span><span class="cbracket">{</span>
<span class="normal">    mess </span><span class="string">"Модем не подключен?"</span>
<span class="normal">    </span><span class="keyword">exit</span><span class="normal"> </span><span class="number">1</span>
<span class="cbracket">}</span>
<span class="keyword">if</span><span class="normal"> </span><span class="symbol">[</span><span class="keyword">catch</span><span class="normal"> </span><span class="cbracket">{</span><span class="keyword">set</span><span class="normal"> f </span><span class="symbol">[</span><span class="keyword">open</span><span class="normal"> </span><span class="variable">$port</span><span class="normal"> w</span><span class="symbol">+]</span><span class="cbracket">}</span><span class="symbol">]</span><span class="normal"> </span><span class="cbracket">{</span>
<span class="normal">    mess </span><span class="string">"Нет прав на открытие $port"</span>
<span class="normal">    </span><span class="keyword">exit</span><span class="normal"> </span><span class="number">1</span>
<span class="cbracket">}</span>
<span class="keyword">fconfigure</span><span class="normal"> </span><span class="variable">$f</span><span class="normal"> </span><span class="symbol">-</span><span class="normal">mode </span><span class="number">19200</span><span class="symbol">,</span><span class="normal">n</span><span class="symbol">,</span><span class="number">8</span><span class="symbol">,</span><span class="number">1</span><span class="normal"> </span><span class="symbol">-</span><span class="normal">blocking </span><span class="number">0</span><span class="normal"> </span><span class="symbol">-</span><span class="normal">buffering none</span>
<span class="comment"># сброс модема</span>
<span class="keyword">puts</span><span class="normal"> </span><span class="variable">$f</span><span class="normal"> ATZ</span>
<span class="normal">after </span><span class="number">100</span>
<span class="keyword">puts</span><span class="normal"> </span><span class="variable">$f</span><span class="normal"> </span><span class="variable">$req</span>
<span class="keyword">set</span><span class="normal"> a </span><span class="string">""</span>
<span class="keyword">set</span><span class="normal"> timeout </span><span class="number">300</span>
<span class="comment"># читаем из порта до ответа</span>
<span class="keyword">while</span><span class="normal"> </span><span class="cbracket">{</span><span class="symbol">![</span><span class="keyword">regexp</span><span class="normal"> </span><span class="cbracket">{</span><span class="symbol">\+</span><span class="normal">CUSD</span><span class="symbol">\:</span><span class="cbracket">}</span><span class="normal"> </span><span class="variable">$a</span><span class="symbol">]</span><span class="cbracket">}</span><span class="normal"> </span><span class="cbracket">{</span>
<span class="normal">    after </span><span class="number">100</span>
<span class="normal">    </span><span class="keyword">set</span><span class="normal"> a </span><span class="symbol">[</span><span class="keyword">read</span><span class="normal"> </span><span class="variable">$f</span><span class="symbol">]</span>
<span class="normal">    </span><span class="keyword">incr</span><span class="normal"> timeout </span><span class="symbol">-</span><span class="number">1</span>
<span class="normal">    </span><span class="keyword">if</span><span class="normal"> </span><span class="cbracket">{</span><span class="symbol">!</span><span class="variable">$timeout</span><span class="cbracket">}</span><span class="normal"> </span><span class="cbracket">{</span>
<span class="normal">        mess </span><span class="string">"Нет ответа от модема"</span>
<span class="normal">        </span><span class="keyword">exit</span><span class="normal"> </span><span class="number">1</span>
<span class="normal">    </span><span class="cbracket">}</span>
<span class="cbracket">}</span>
<span class="keyword">close</span><span class="normal"> </span><span class="variable">$f</span>
<span class="comment"># вырезаем ответ</span>
<span class="keyword">regexp</span><span class="normal"> </span><span class="cbracket">{</span><span class="string">"([[:xdigit:]]*)"</span><span class="cbracket">}</span><span class="normal"> </span><span class="variable">$a</span><span class="normal"> </span><span class="symbol">=&gt;</span><span class="normal"> a</span>
<span class="keyword">set</span><span class="normal"> c </span><span class="number">0</span><span class="normal"> </span><span class="symbol">;</span><span class="normal"> </span><span class="keyword">set</span><span class="normal"> str </span><span class="string">""</span>
<span class="comment"># декодируем ответ</span>
<span class="keyword">while</span><span class="normal"> </span><span class="cbracket">{</span><span class="variable">$c</span><span class="normal"> </span><span class="symbol">&lt;</span><span class="normal"> </span><span class="symbol">[</span><span class="keyword">string</span><span class="normal"> length </span><span class="variable">$a</span><span class="symbol">]</span><span class="cbracket">}</span><span class="normal"> </span><span class="cbracket">{</span>
<span class="normal">    </span><span class="keyword">set</span><span class="normal"> str </span><span class="variable">$str</span><span class="symbol">[</span><span class="keyword">format</span><span class="normal"> </span><span class="string">"%c"</span><span class="normal"> </span><span class="string">"0x[string range $a $c [expr $c+3]]"</span><span class="symbol">]</span>
<span class="normal">    </span><span class="keyword">incr</span><span class="normal"> c </span><span class="number">4</span>
<span class="cbracket">}</span>
<span class="normal">mess </span><span class="variable">$str</span>
</tt></pre><br>
<b>UPDATE:</b>Для модема ZTE MF100 строчки конфигурации выглядят так:<br>
<!-- Generator: GNU source-highlight 3.1.3
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
<pre><tt><span class="comment"># порт</span>
<span class="keyword">set</span><span class="normal"> port </span><span class="symbol">/</span><span class="normal">dev</span><span class="symbol">/</span><span class="normal">ttyUSB1</span>
<span class="comment"># запрос баланса</span>
<span class="keyword">set</span><span class="normal"> req AT</span><span class="symbol">+</span><span class="normal">CUSD</span><span class="symbol">=</span><span class="number">1</span><span class="symbol">,</span><span class="comment">#102#,15</span>
</tt></pre>
]]></description>
      <pubDate>Sun, 19 Jun 2011 17:44:25 GMT</pubDate>
      <guid>http://sanych.nnov.ru/content/Skript_proverki_balansa_dlja_3G_modema_Huawey_ZTE</guid>
    </item>

    <item>
      <title><![CDATA[Свежая версия легкого LiveCD на основе Ubuntu]]></title>
      <link>http://sanych.nnov.ru/content/Cvezhaja_versija_legkogo_LiveCD_na_osnove_Ubuntu</link>
      <description><![CDATA[В 2009 году я собирал для старой флэшки <a href="http://sanych.nnov.ru/content/live_usb_na_openbox">небольшой дистрибутив</a> для работы/восстановления данных/административных нужд и т.д. На новой работе тоже иногда такой дистрибутив нужен, однако я его собирал на 8.04 lts и оно уже морально устарело да и в chrome новые плюшки появились. Решил перебрать на 11.04 и с lx de вместо голого openbox. Не думал что это вызовет такие трудности - очень многое в убунте за эти годы изменилось, да и размер пакетов довольно сильно раздулся. Из трудностей которые на свежей памяти:<br>
1) casper по умолчанию лайфсидишного пользователя не добавляет в группы netdev и audio. Из-за этого не работал wicd-client и звук. Для исправления надо править файл var/cache/debconf/templates.dat:<br>
<pre>Name: passwd/user-default-groups                                                                                             
Default: adm cdrom dialout audio lpadmin netdev plugdev sambashare                                                           
Description: for internal use only                                                                                           
Type: string                                                                                                                 
Owners: passwd/user-default-groups</pre><br>
2) для того чтоб умять в 250 Мб пришлось:<br>
а) очищать кэш пакетов (комментируем все в etc/apt/sources.list и aptitude update) - экономия около 20 Мб в сквоше<br>
б) довольно спорный момент - очистил usr/share/doc - это позволило сэкономить около 10 Мб  <br>
в) ставил localepurge для удаления всех локальных языковых файлов кроме ru_RU и en_US<br>
3) важно пересобрать initrd с подключенными /proc /sys и /dev/pts (update-initramfs -c -k all)<br>
это избавляет от некоторых подземных стуков после сборки<br>
4) отмонировать все специальные файловые системы перед сборкой и посмотреть чтоб /etc/mtab был пуст<br>
<a href="/files/natty-livecd.png" class="highslide" onclick="return hs.expand(this)"><img src="/files/thumbs/natty-livecd.png"></a><br>
что в составе диска:<br>
testdisk<br>
ddrescue<br>
gddrescue<br>
gparted<br>
mplayer<br>
google-chrome unstable<br>
remmina (freerdp)<br>
кучка всяких сетевых утилит, smbfs, русские маны.<br>
Вот вывод <a href="http://sanych.nnov.ru/files/dpkg-natty">dpkg --get-selections</a><br>
Даже не пытался засунуть в диск почтовик, джаббер, офис, аську, пдф-читалку - большую часть всего этого заменяет chrome.<br>
Да не ставил DM поэтому запуск иксов через startx.<br>
<a href="http://sanych.nnov.ru/files/natty.iso">ISO 235 Mb</a>
]]></description>
      <pubDate>Sun, 12 Jun 2011 18:10:49 GMT</pubDate>
      <guid>http://sanych.nnov.ru/content/Cvezhaja_versija_legkogo_LiveCD_na_osnove_Ubuntu</guid>
    </item>


  </channel>
</rss>

