<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
					xmlns:content="http://purl.org/rss/1.0/modules/content/"
					xmlns:wfw="http://wellformedweb.org/CommentAPI/"
					xmlns:atom="http://www.w3.org/2005/Atom"
				  >
<channel>
<atom:link rel="self"  type="application/rss+xml"  href="http://rulinux.net/rss_from_sect_4_subsect_1_thread_42957"  />
<title>rulinux.net - Форум - General - flash-writer.sh</title>
<link>http://rulinux.net/</link>
<description><![CDATA[Портал о GNU/Linux и не только]]></description>
<image><title>rulinux.net - Форум - General - flash-writer.sh</title>
<link>http://rulinux.net/</link>
<url>http://rulinux.net/rss_icon.png</url>
</image>
<item>
<title>flash-writer.sh v0.2</title>
<link>https://rulinux.net/message.php?newsid=42957&amp;page=1#221181</link>
<guid>https://rulinux.net/message.php?newsid=42957&amp;page=1#221181</guid>
<pubDate>Fri, 08 Sep 2017 09:56:09 +0300</pubDate>
<description><![CDATA[<p>v0.2 Добавлена обработка файлов /dev/zero, /dev/urandom<br><br>После использования забить флешку случайным мусором/нулями (и лучше не один раз) - обязательное условие! А то мало ли что там у тебя в карманах найдут - обрывки федоры или зеркало рулина - посодют в любом случае.<br><br><a href="http://pastebin.com/raw/PZjeQ29B">Патч</a><br><br><fieldset><legend>diff</legend><div class="highlight diff"><br />
<span class="re3">--- flash-writer.sh.orig&nbsp; &nbsp; &nbsp; &nbsp; <span class="nu0">2017</span>-09-08 <span class="nu0">12</span>:<span class="nu0">40</span>:<span class="nu0">25.522768514</span> +0300</span><br />
<span class="re4">+++ flash-writer.sh &nbsp; &nbsp; <span class="nu0">2017</span>-09-08 <span class="nu0">12</span>:<span class="nu0">36</span>:<span class="nu0">07.253790563</span> +0300</span><br />
<span class="re6">@@ -<span class="nu0">1</span>,<span class="nu0">11</span> +<span class="nu0">1</span>,<span class="nu0">16</span> @@</span><br />
&nbsp;#!/bin/sh<br />
&nbsp;<br />
&nbsp;# Утилита для копирования файлов-образов <span class="br0">&#40;</span>*.iso<span class="br0">&#41;</span> на диск /dev/sd* <span class="br0">&#40;</span>чаще USB<span class="br0">&#41;</span><br />
<span class="re8">+# v0.1</span><br />
<span class="re8">+# v0.2 Добавлена обработка файлов /dev/zero, /dev/urandom</span><br />
<span class="re8">+# TODO: все сообщения либо по-русски, либо нет</span><br />
&nbsp;<br />
&nbsp;ERROR_USAGE=1<br />
<span class="re7">-ERROR_FILE_NOT_FOUND=2</span><br />
<span class="re7">-ERROR_DEVICE_NOT_FOUND=3</span><br />
<span class="re7">-ERROR_UNKNOWN_ENVIRONMENT=4</span><br />
<span class="re8">+ERROR_FILE_NOT_FOUND=21</span><br />
<span class="re8">+ERROR_FILE_NOT_ALLOWED=22</span><br />
<span class="re8">+ERROR_FILE_TOO_BIG=23</span><br />
<span class="re8">+ERROR_DEVICE_NOT_FOUND=31</span><br />
<span class="re8">+ERROR_UNKNOWN_ENVIRONMENT=91</span><br />
&nbsp;<br />
&nbsp;if <span class="br0">&#91;</span> $# -ne 2 <span class="br0">&#93;</span>; then<br />
&nbsp; &nbsp; &nbsp; &nbsp; echo &quot;Usage: $0 &lt;file&gt; &lt;disk&gt;&quot;<br />
<span class="re6">@@ -<span class="nu0">28</span>,<span class="nu0">6</span> +<span class="nu0">33</span>,<span class="nu0">22</span> @@</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; exit $<span class="br0">&#123;</span>ERROR_FILE_NOT_FOUND<span class="br0">&#125;</span><br />
&nbsp;fi<br />
&nbsp;<br />
<span class="re8">+# проверка на специальные файлы и определение размера файла</span><br />
<span class="re8">+case &quot;$<span class="br0">&#123;</span>FILE<span class="br0">&#125;</span>&quot; in</span><br />
<span class="re8">+ &nbsp; &nbsp; &nbsp; &quot;/dev/zero&quot; | \</span><br />
<span class="re8">+ &nbsp; &nbsp; &nbsp; &quot;/dev/urandom&quot;<span class="br0">&#41;</span></span><br />
<span class="re8">+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; echo &quot;Используется специальный файл $<span class="br0">&#123;</span>FILE<span class="br0">&#125;</span>&quot;</span><br />
<span class="re8">+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; FILE_SIZE=-1</span><br />
<span class="re8">+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ;;</span><br />
<span class="re8">+ &nbsp; &nbsp; &nbsp; &quot;/dev/&quot;*<span class="br0">&#41;</span></span><br />
<span class="re8">+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; echo &quot;Специальный файл $<span class="br0">&#123;</span>FILE<span class="br0">&#125;</span> недопустим&quot;</span><br />
<span class="re8">+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; exit $<span class="br0">&#123;</span>ERROR_FILE_NOT_ALLOWED<span class="br0">&#125;</span></span><br />
<span class="re8">+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ;;</span><br />
<span class="re8">+ &nbsp; &nbsp; &nbsp; *<span class="br0">&#41;</span></span><br />
<span class="re8">+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; FILE_SIZE=$<span class="br0">&#40;</span>stat --printf=&quot;%s&quot; &quot;$<span class="br0">&#123;</span>FILE<span class="br0">&#125;</span>&quot;<span class="br0">&#41;</span></span><br />
<span class="re8">+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ;;</span><br />
<span class="re8">+esac</span><br />
<span class="re8">+</span><br />
&nbsp;# проверка устройства<br />
&nbsp;# файл устройства существует<br />
&nbsp;if <span class="br0">&#91;</span> ! -e &quot;$<span class="br0">&#123;</span>DEV<span class="br0">&#125;</span>&quot; <span class="br0">&#93;</span>; then<br />
<span class="re6">@@ -<span class="nu0">39</span>,<span class="nu0">7</span> +<span class="nu0">60</span>,<span class="nu0">7</span> @@</span><br />
&nbsp;if <span class="br0">&#91;</span> ! -b &quot;$<span class="br0">&#123;</span>DEV<span class="br0">&#125;</span>&quot; -a &quot;$<span class="br0">&#123;</span>DEV<span class="br0">&#125;</span>&quot; != &quot;/dev/null&quot; <span class="br0">&#93;</span>; then<br />
&nbsp; &nbsp; &nbsp; &nbsp; echo &quot;Device is not special block device&quot;<br />
&nbsp; &nbsp; &nbsp; &nbsp; exit $<span class="br0">&#123;</span>ERROR_DEVICE_NOT_FOUND<span class="br0">&#125;</span><br />
<span class="re7">-fi &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><br />
<span class="re8">+fi</span><br />
&nbsp;<br />
&nbsp;#TODO: проверка на removable и USB<br />
&nbsp;case &quot;$<span class="br0">&#123;</span>DEV<span class="br0">&#125;</span>&quot; in<br />
<span class="re6">@@ -<span class="nu0">57</span>,<span class="nu0">18</span> +<span class="nu0">78</span>,<span class="nu0">36</span> @@</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ;;<br />
&nbsp;esac<br />
&nbsp;<br />
<span class="re8">+# определение размера блочного устройства</span><br />
<span class="re8">+DEV_SIZE=$<span class="br0">&#40;</span>blockdev --getsize64 &quot;$<span class="br0">&#123;</span>DEV<span class="br0">&#125;</span>&quot;<span class="br0">&#41;</span></span><br />
<span class="re8">+</span><br />
<span class="re8">+# а влезет ли файл?</span><br />
<span class="re8">+if <span class="br0">&#91;</span> $<span class="br0">&#123;</span>FILE_SIZE<span class="br0">&#125;</span> -gt $<span class="br0">&#123;</span>DEV_SIZE<span class="br0">&#125;</span> <span class="br0">&#93;</span>; then</span><br />
<span class="re8">+ &nbsp; &nbsp; &nbsp; echo &quot;This file does not fit to this device&quot;</span><br />
<span class="re8">+ &nbsp; &nbsp; &nbsp; echo &quot;<span class="br0">&#40;</span>filesize=$<span class="br0">&#123;</span>FILE_SIZE<span class="br0">&#125;</span>, devsize=$<span class="br0">&#123;</span>DEV_SIZE<span class="br0">&#125;</span><span class="br0">&#41;</span>&quot;</span><br />
<span class="re8">+ &nbsp; &nbsp; &nbsp; exit $<span class="br0">&#123;</span>ERROR_FILE_TOO_BIG<span class="br0">&#125;</span></span><br />
<span class="re8">+fi</span><br />
<span class="re8">+</span><br />
<span class="re8">+# для специальных файлов размер определяется через размер блочного устройства</span><br />
<span class="re8">+if <span class="br0">&#91;</span> $<span class="br0">&#123;</span>FILE_SIZE<span class="br0">&#125;</span> -eq -1 <span class="br0">&#93;</span>; then</span><br />
<span class="re8">+ &nbsp; &nbsp; &nbsp; echo &quot;Special file has no size, use device size instead&quot;</span><br />
<span class="re8">+ &nbsp; &nbsp; &nbsp; FILE_SIZE=$<span class="br0">&#123;</span>DEV_SIZE<span class="br0">&#125;</span></span><br />
<span class="re8">+fi</span><br />
<span class="re8">+</span><br />
&nbsp;TEXT=&quot;Copy '$<span class="br0">&#123;</span>FILE<span class="br0">&#125;</span>' to $<span class="br0">&#123;</span>DEV<span class="br0">&#125;</span>, please wait...&quot;<br />
&nbsp;<br />
&nbsp;# определения окружения - мы в консоли или в X-ах<br />
&nbsp;case &quot;$<span class="br0">&#123;</span>TERM<span class="br0">&#125;</span>&quot; in<br />
&nbsp; &nbsp; &nbsp; &nbsp; &quot;linux&quot;<span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; echo &quot;Console edition...&quot;<br />
<span class="re7">- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#40;</span>pv -n &quot;$<span class="br0">&#123;</span>FILE<span class="br0">&#125;</span>&quot; | dd of=$<span class="br0">&#123;</span>DEV<span class="br0">&#125;</span> bs=1M conv=notrunc,noerror<span class="br0">&#41;</span> 2&gt;&amp;1 |</span><br />
<span class="re8">+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#40;</span>pv -n -s $<span class="br0">&#123;</span>FILE_SIZE<span class="br0">&#125;</span> &quot;$<span class="br0">&#123;</span>FILE<span class="br0">&#125;</span>&quot; | </span><br />
<span class="re8">+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dd of=$<span class="br0">&#123;</span>DEV<span class="br0">&#125;</span> bs=1M conv=notrunc,noerror<span class="br0">&#41;</span> 2&gt;&amp;1 |</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dialog --gauge &quot;$<span class="br0">&#123;</span>TEXT<span class="br0">&#125;</span>&quot; 10 70 0<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ;;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &quot;xterm&quot;<span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; echo &quot;X Server edition...&quot;<br />
<span class="re7">- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#40;</span>pv -n &quot;$<span class="br0">&#123;</span>FILE<span class="br0">&#125;</span>&quot; | dd of=$<span class="br0">&#123;</span>DEV<span class="br0">&#125;</span> bs=1M conv=notrunc,noerror<span class="br0">&#41;</span> 2&gt;&amp;1 |</span><br />
<span class="re8">+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#40;</span>pv -n -s $<span class="br0">&#123;</span>FILE_SIZE<span class="br0">&#125;</span> &quot;$<span class="br0">&#123;</span>FILE<span class="br0">&#125;</span>&quot; |</span><br />
<span class="re8">+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dd of=$<span class="br0">&#123;</span>DEV<span class="br0">&#125;</span> bs=1M conv=notrunc,noerror<span class="br0">&#41;</span> 2&gt;&amp;1 |</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; zenity --progress --auto-kill --auto-close --text=&quot;$<span class="br0">&#123;</span>TEXT<span class="br0">&#125;</span>&quot;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ;;<br />
&nbsp; &nbsp; &nbsp; &nbsp; *<span class="br0">&#41;</span><br />
<span class="re6">@@ -<span class="nu0">81</span>,<span class="nu0">4</span> +<span class="nu0">120</span>,<span class="nu0">4</span> @@</span><br />
&nbsp;echo &quot;Sync... &quot;<br />
&nbsp;sync<br />
&nbsp;# пауза на всякий случай<br />
<span class="re7">-sleep 3</span><br />
\ В конце файла нет новой строки<br />
<span class="re8">+sleep 3</span><br />
&nbsp;</div></fieldset><br><br><b>NB!</b> Сценарий не совместим с предыдущей версией по возвращаемым кодам ошибок.</p>]]></description>
</item>
<item>
<title>Re:flash-writer.sh</title>
<link>https://rulinux.net/message.php?newsid=42957&amp;page=1#220917</link>
<guid>https://rulinux.net/message.php?newsid=42957&amp;page=1#220917</guid>
<pubDate>Fri, 04 Aug 2017 10:49:27 +0300</pubDate>
<description><![CDATA[<p><i>> Не знаю где ты &quot;равно&quot; это подцепил.</i><br>У тебя там nbsp затесался. А при копировании туда-сюда он стал =, в консоли я никакого символа не увидел, только когда открыл строку в редакторе смог понять в чём дело. <i>Движок сжирает nbsp, поэтому пришлось его последним седом поменять.</i><br><br><fieldset><legend>bash</legend><div class="highlight bash"><br />
<span class="kw2">wget</span> <span class="re5">-q</span> http:<span class="sy0">//</span>rulinux.net<span class="sy0">/</span>thread_42957_comment_220912 <span class="re5">-O</span> - <span class="sy0">|</span> <span class="kw2">grep</span> <span class="re5">-m1</span> <span class="kw2">mount</span> <span class="sy0">|</span> <span class="kw2">sed</span> <span class="re5">-e</span> <span class="st_h">'s@.*fi@fi@'</span> <span class="sy0">|</span> <span class="kw2">sed</span> <span class="re5">-e</span> <span class="st_h">'s/ /nbsp/'</span><br />
<span class="kw1">fi</span><span class="sy0">&lt;/</span>span<span class="sy0">&gt;</span>; nbsp<span class="sy0">&lt;</span>span <span class="re2">class</span>=<span class="st0">&quot;kw1&quot;</span><span class="sy0">&gt;</span><span class="kw1">done</span><span class="sy0">&lt;/</span>span<span class="sy0">&gt;&lt;</span>br <span class="sy0">/&gt;</span><br />
&nbsp;</div></fieldset><br><br>У меня какой-то неправильный readlink и так, как у тебя, не умеет:<br><br><fieldset><legend>bash</legend><div class="highlight bash"><br />
~<span class="sy0">&gt;</span><span class="kw2">ls</span> <span class="re5">-ld</span> <span class="sy0">/</span>sys<span class="sy0">/</span>block<span class="sy0">/*/</span>device<br />
lrwxrwxrwx 1 root root 0 Авг &nbsp;4 13:28 <span class="sy0">/</span>sys<span class="sy0">/</span>block<span class="sy0">/</span>sda<span class="sy0">/</span>device -<span class="sy0">&gt;</span> ..<span class="sy0">/</span>..<span class="sy0">/</span>..<span class="sy0">/</span>2:0:0:0<br />
lrwxrwxrwx 1 root root 0 Авг &nbsp;4 13:28 <span class="sy0">/</span>sys<span class="sy0">/</span>block<span class="sy0">/</span>sr0<span class="sy0">/</span>device -<span class="sy0">&gt;</span> ..<span class="sy0">/</span>..<span class="sy0">/</span>..<span class="sy0">/</span>0:0:0:0<br />
~<span class="sy0">&gt;</span><span class="kw2">readlink</span> <span class="re5">-f</span> <span class="sy0">/</span>sys<span class="sy0">/</span>block<span class="sy0">/*/</span>device <br />
<span class="kw2">readlink</span>: лишний операнд <span class="sy0">&lt;&lt;/</span>sys<span class="sy0">/</span>block<span class="sy0">/</span>sr0<span class="sy0">/</span>device<span class="sy0">&gt;&gt;</span><br />
Попробуйте <span class="sy0">`</span><span class="kw2">readlink</span> <span class="re5">--help</span><span class="st_h">' для получения более подробного описания.<br />
</span></div></fieldset></p>]]></description>
</item>
<item>
<title>Re:flash-writer.sh</title>
<link>https://rulinux.net/message.php?newsid=42957&amp;page=1#220912</link>
<guid>https://rulinux.net/message.php?newsid=42957&amp;page=1#220912</guid>
<pubDate>Thu, 03 Aug 2017 23:20:18 +0300</pubDate>
<description><![CDATA[<p>Не знаю где ты &quot;равно&quot; это подцепил.
<br><br>
У меня блочные девайсы выглядят так:
<br><br>
<fieldset><legend>bash</legend><div class="highlight bash"><br />
$ <span class="kw2">ls</span> <span class="re5">-ld</span> <span class="sy0">/</span>sys<span class="sy0">/</span>block<span class="sy0">/*/</span>device<br />
lrwxrwxrwx. <span class="nu0">1</span> root root <span class="nu0">0</span> Aug &nbsp;<span class="nu0">3</span> 07:<span class="nu0">56</span> <span class="sy0">/</span>sys<span class="sy0">/</span>block<span class="sy0">/</span>sda<span class="sy0">/</span>device -<span class="sy0">&gt;</span> ..<span class="sy0">/</span>..<span class="sy0">/</span>..<span class="sy0">/</span><span class="nu0">0</span>:<span class="nu0">0</span>:<span class="nu0">0</span>:<span class="nu0">0</span><br />
lrwxrwxrwx. <span class="nu0">1</span> root root <span class="nu0">0</span> Aug &nbsp;<span class="nu0">4</span> 00:05 <span class="sy0">/</span>sys<span class="sy0">/</span>block<span class="sy0">/</span>sdb<span class="sy0">/</span>device -<span class="sy0">&gt;</span> ..<span class="sy0">/</span>..<span class="sy0">/</span>..<span class="sy0">/</span><span class="nu0">4</span>:<span class="nu0">0</span>:<span class="nu0">0</span>:<span class="nu0">0</span><br />
&nbsp;</div></fieldset>
<br>
Соотв. readlink выдаёт:
<br>
<fieldset><legend>bash</legend><div class="highlight bash"><br />
<span class="kw2">readlink</span> <span class="re5">-f</span> <span class="sy0">/</span>sys<span class="sy0">/</span>block<span class="sy0">/*/</span>device <br />
<span class="sy0">/</span>sys<span class="sy0">/</span>devices<span class="sy0">/</span>pci0000:00<span class="sy0">/</span>0000:00:1f.2<span class="sy0">/</span>ata1<span class="sy0">/</span>host0<span class="sy0">/</span>target0:<span class="nu0">0</span>:<span class="nu0">0</span><span class="sy0">/</span><span class="nu0">0</span>:<span class="nu0">0</span>:<span class="nu0">0</span>:<span class="nu0">0</span><br />
<span class="sy0">/</span>sys<span class="sy0">/</span>devices<span class="sy0">/</span>pci0000:00<span class="sy0">/</span>0000:00:1d.7<span class="sy0">/</span>usb1<span class="sy0">/</span><span class="nu0">1</span>-<span class="nu0">7</span><span class="sy0">/</span><span class="nu0">1</span>-<span class="nu0">7</span>:<span class="nu0">1.0</span><span class="sy0">/</span>host4<span class="sy0">/</span>target4:<span class="nu0">0</span>:<span class="nu0">0</span><span class="sy0">/</span><span class="nu0">4</span>:<span class="nu0">0</span>:<span class="nu0">0</span>:<span class="nu0">0</span><br />
&nbsp;</div></fieldset>
<br>
Грепом выгреповываем только USB-устройства и смотрим что у них там в /block находится:
<br>
<fieldset><legend>bash</legend><div class="highlight bash"><br />
<span class="kw2">ls</span> <span class="re5">-1</span> <span class="sy0">`</span><span class="kw2">readlink</span> <span class="re5">-f</span> <span class="sy0">/</span>sys<span class="sy0">/</span>block<span class="sy0">/*/</span>device <span class="sy0">|</span> <span class="kw2">grep</span> usb<span class="sy0">`/</span>block<br />
sdb<br />
&nbsp;</div></fieldset>
<br>
Остальное там для не очень корректной проверки нет ли такого устройства в выхлопе маунта (мы же не хотим писать в смонтированный диск).
<br>
<br>
Хотя, конечно, любое другое решение было бы лучше..</p>]]></description>
</item>
<item>
<title>Re:flash-writer.sh</title>
<link>https://rulinux.net/message.php?newsid=42957&amp;page=1#220904</link>
<guid>https://rulinux.net/message.php?newsid=42957&amp;page=1#220904</guid>
<pubDate>Thu, 03 Aug 2017 14:31:27 +0300</pubDate>
<description><![CDATA[<p>1. У тебя какой-то неуставной символ затесался между fi; и done, отчего bash впадает в фрустрацию:<br><br><div class="quote"><pre>&gt;for i in $(ls -1 `readlink -f /sys/block/*/device | grep usb`/block); do X=$(mount | grep -c &quot;$i&quot;) &gt;/dev/null; if [ $X -eq 0 ]; then echo &quot;$i&quot;; fi; ═done<br /> <i>> <br /></i><br><i>> bash: ошибка синтаксиса: неожиданный конец файла</pre></div></i><br> 2. readlink-у тоже чего-то не нравится: <br><br><div class="quote"><pre>readlink: лишний операнд &lt;&lt;/sys/block/sr0/device&gt;&gt;<br /> Попробуйте `readlink --help' для получения более подробного описания.</pre></div></p>]]></description>
</item>
<item>
<title>Re:flash-writer.sh</title>
<link>https://rulinux.net/message.php?newsid=42957&amp;page=1#220903</link>
<guid>https://rulinux.net/message.php?newsid=42957&amp;page=1#220903</guid>
<pubDate>Thu, 03 Aug 2017 14:06:17 +0300</pubDate>
<description><![CDATA[<p>Список допустимых устройств:
<br><br>
<fieldset><legend>bash</legend><div class="highlight bash"><br />
<span class="kw1">for</span> i <span class="kw1">in</span> $<span class="br0">&#40;</span><span class="kw2">ls</span> <span class="re5">-1</span> <span class="sy0">`</span><span class="kw2">readlink</span> <span class="re5">-f</span> <span class="sy0">/</span>sys<span class="sy0">/</span>block<span class="sy0">/*/</span>device <span class="sy0">|</span> <span class="kw2">grep</span> usb<span class="sy0">`/</span>block<span class="br0">&#41;</span>; <span class="kw1">do</span> <span class="re2">X</span>=$<span class="br0">&#40;</span><span class="kw2">mount</span> <span class="sy0">|</span> <span class="kw2">grep</span> <span class="re5">-c</span> <span class="st0">&quot;<span class="es2">$i</span>&quot;</span><span class="br0">&#41;</span> <span class="sy0">&gt;/</span>dev<span class="sy0">/</span>null; <span class="kw1">if</span> <span class="br0">&#91;</span> <span class="re1">$X</span> <span class="re5">-eq</span> 0 <span class="br0">&#93;</span>; <span class="kw1">then</span> <span class="kw3">echo</span> <span class="st0">&quot;<span class="es2">$i</span>&quot;</span>; <span class="kw1">fi</span>; &nbsp;<span class="kw1">done</span><br />
&nbsp;</div></fieldset></p>]]></description>
</item>
<item>
<title>flash-writer.sh</title>
<link>https://rulinux.net/message.php?newsid=42957&amp;page=1#220899</link>
<guid>https://rulinux.net/message.php?newsid=42957&amp;page=1#220899</guid>
<pubDate>Thu, 03 Aug 2017 10:54:22 +0300</pubDate>
<description><![CDATA[<p>По материалам, представленным в <a href="http://rulinux.net/thread_42814_page_1">статье</a> п. 2.2.3 накатал башевский сценарий, который показывает прогресс выполнения копирования образа на флешку. Сценарий адаптировал под себя, под другие системы, возможно, потребуется правка. Если запускать в голой консоли - используется dialog; в X-ах - zenity.<br><br><fieldset><legend>bash</legend><div class="highlight bash"><br />
<span class="co0">#!/bin/sh</span><br />
<br />
<span class="co0"># Утилита для копирования файлов-образов (*.iso) на диск /dev/sd* (чаще USB)</span><br />
<br />
<span class="re2">ERROR_USAGE</span>=1<br />
<span class="re2">ERROR_FILE_NOT_FOUND</span>=2<br />
<span class="re2">ERROR_DEVICE_NOT_FOUND</span>=3<br />
<span class="re2">ERROR_UNKNOWN_ENVIRONMENT</span>=4<br />
<br />
<span class="kw1">if</span> <span class="br0">&#91;</span> <span class="re4">$#</span> <span class="re5">-ne</span> 2 <span class="br0">&#93;</span>; <span class="kw1">then</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="st0">&quot;Usage: $0 &lt;file&gt; &lt;disk&gt;&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">exit</span> <span class="co1">${ERROR_USAGE}</span><br />
<span class="kw1">fi</span><br />
<br />
<span class="re2">FILE</span>=<span class="st0">&quot;$1&quot;</span><br />
<span class="re2">DEV</span>=<span class="st0">&quot;$2&quot;</span><br />
<br />
<span class="co0"># проверка корректности имени файла;</span><br />
<span class="co0"># файл существует и доступен для чтения</span><br />
<span class="kw1">if</span> <span class="br0">&#91;</span> <span class="sy0">!</span> <span class="re5">-r</span> <span class="st0">&quot;<span class="es3">${FILE}</span>&quot;</span> <span class="br0">&#93;</span>; <span class="kw1">then</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="st0">&quot;File not exist or it is not readable by user&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">exit</span> <span class="co1">${ERROR_FILE_NOT_FOUND}</span><br />
<span class="kw1">fi</span><br />
<br />
<span class="co0"># это не директория</span><br />
<span class="kw1">if</span> <span class="br0">&#91;</span> <span class="re5">-d</span> <span class="st0">&quot;<span class="es3">${FILE}</span>&quot;</span> <span class="br0">&#93;</span>; <span class="kw1">then</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="st0">&quot;<span class="es3">${FILE}</span> is a directory&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">exit</span> <span class="co1">${ERROR_FILE_NOT_FOUND}</span><br />
<br />
<span class="kw1">fi</span><br />
<br />
<span class="co0"># проверка устройства</span><br />
<span class="co0"># файл устройства существует</span><br />
<span class="kw1">if</span> <span class="br0">&#91;</span> <span class="sy0">!</span> <span class="re5">-e</span> <span class="st0">&quot;<span class="es3">${DEV}</span>&quot;</span> <span class="br0">&#93;</span>; <span class="kw1">then</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="st0">&quot;Device not found&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">exit</span> <span class="co1">${ERROR_DEVICE_NOT_FOUND}</span><br />
<span class="kw1">fi</span><br />
<br />
<span class="co0"># -b is block special</span><br />
<span class="kw1">if</span> <span class="br0">&#91;</span> <span class="sy0">!</span> <span class="re5">-b</span> <span class="st0">&quot;<span class="es3">${DEV}</span>&quot;</span> <span class="re5">-a</span> <span class="st0">&quot;<span class="es3">${DEV}</span>&quot;</span> <span class="sy0">!</span>= <span class="st0">&quot;/dev/null&quot;</span> <span class="br0">&#93;</span>; <span class="kw1">then</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="st0">&quot;Device is not special block device&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">exit</span> <span class="co1">${ERROR_DEVICE_NOT_FOUND}</span><br />
<span class="kw1">fi</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />
<br />
<span class="co0">#TODO: проверка на removable и USB</span><br />
<span class="kw1">case</span> <span class="st0">&quot;<span class="es3">${DEV}</span>&quot;</span> <span class="kw1">in</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&quot;/dev/sda&quot;</span><span class="sy0">*</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="re5">-e</span> <span class="st0">&quot;\033[41;37;5;1mДУРАК! ТЫ ЧУТЬ НЕ УНИЧТОЖИЛ ВСЮ СИСТЕМУ!\033[0m&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">exit</span> <span class="co1">${ERROR_USAGE}</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">;;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&quot;/dev/sdb&quot;</span><span class="sy0">*</span> <span class="sy0">|</span> \<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&quot;/dev/null&quot;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="st0">&quot;<span class="es3">${DEV}</span> находится в списке допустимых устройств, продолжаем&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">;;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">*</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="st0">&quot;Недопустимое устройство <span class="es3">${DEV}</span>&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">exit</span> <span class="co1">${ERROR_USAGE}</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">;;</span><br />
<span class="kw1">esac</span><br />
<br />
<span class="re2">TEXT</span>=<span class="st0">&quot;Copy '<span class="es3">${FILE}</span>' to <span class="es3">${DEV}</span>, please wait...&quot;</span><br />
<br />
<span class="co0"># определения окружения - мы в консоли или в X-ах</span><br />
<span class="kw1">case</span> <span class="st0">&quot;<span class="es3">${TERM}</span>&quot;</span> <span class="kw1">in</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&quot;linux&quot;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="st0">&quot;Console edition...&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#40;</span>pv <span class="re5">-n</span> <span class="st0">&quot;<span class="es3">${FILE}</span>&quot;</span> <span class="sy0">|</span> <span class="kw2">dd</span> <span class="re2">of</span>=<span class="co1">${DEV}</span> <span class="re2">bs</span>=1M <span class="re2">conv</span>=notrunc,noerror<span class="br0">&#41;</span> 2<span class="sy0">&gt;&amp;</span>1 <span class="sy0">|</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">dialog</span> <span class="re5">--gauge</span> <span class="st0">&quot;<span class="es3">${TEXT}</span>&quot;</span> 10 70 0<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">;;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&quot;xterm&quot;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="st0">&quot;X Server edition...&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#40;</span>pv <span class="re5">-n</span> <span class="st0">&quot;<span class="es3">${FILE}</span>&quot;</span> <span class="sy0">|</span> <span class="kw2">dd</span> <span class="re2">of</span>=<span class="co1">${DEV}</span> <span class="re2">bs</span>=1M <span class="re2">conv</span>=notrunc,noerror<span class="br0">&#41;</span> 2<span class="sy0">&gt;&amp;</span>1 <span class="sy0">|</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; zenity <span class="re5">--progress</span> <span class="re5">--auto-kill</span> <span class="re5">--auto-close</span> <span class="re5">--text</span>=<span class="st0">&quot;<span class="es3">${TEXT}</span>&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">;;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">*</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="st0">&quot;Unknown environment (TERM=<span class="es3">${TERM}</span>)&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">exit</span> <span class="co1">${ERROR_UNKNOWN_ENVIRONMENT}</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">;;</span><br />
<span class="kw1">esac</span><br />
<br />
<span class="co0"># синхронизуем диски</span><br />
<span class="kw3">echo</span> <span class="st0">&quot;Sync... &quot;</span><br />
<span class="kw2">sync</span><br />
<span class="co0"># пауза на всякий случай</span><br />
<span class="kw2">sleep</span> <span class="nu0">3</span><br />
&nbsp;</div></fieldset><br><br><a href="http://pastebin.com/raw/mf2yH7zY">Ссалка на pastebin</a></p>]]></description>
</item>
</channel>
</rss>