<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Linux Forum &mdash; Запрос ввода из скрипта]]></title>
		<link>https://linuxforum.ru/viewtopic.php?id=30965</link>
		<atom:link href="https://linuxforum.ru/extern.php?action=feed&amp;tid=30965&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «Запрос ввода из скрипта».]]></description>
		<lastBuildDate>Wed, 16 Oct 2013 06:00:32 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: Запрос ввода из скрипта]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=370156#p370156</link>
			<description><![CDATA[<div class="quotebox"><cite>sotariz пишет:</cite><blockquote><p>Но вот все же как побороть вставку символа замены в конец?.. какого лешего он вообще туда попадает? 0_о</p></blockquote></div><p>вот так сделайте:<br /></p><div class="codebox"><pre><code>$ read -p&#039;Введите текст: &#039; VALUE; echo &quot;VALUE: &#039;$VALUE&#039;&quot;
Введите текст: aaa
VALUE: &#039;aaa&#039;</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (drBatty)]]></author>
			<pubDate>Wed, 16 Oct 2013 06:00:32 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=370156#p370156</guid>
		</item>
		<item>
			<title><![CDATA[Re: Запрос ввода из скрипта]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=370038#p370038</link>
			<description><![CDATA[<p><strong>bormant</strong>, ну то что это реакция на Enter я предполагал, сейчас попробую с -n</p>]]></description>
			<author><![CDATA[null@example.com (sotariz)]]></author>
			<pubDate>Tue, 15 Oct 2013 16:11:04 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=370038#p370038</guid>
		</item>
		<item>
			<title><![CDATA[Re: Запрос ввода из скрипта]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=370020#p370020</link>
			<description><![CDATA[<p>Вместо &quot;echo $VALUE ...&quot; нужно &quot;echo -n $VALUE ...&quot; поскольку echo добавляет в конец вывода перевод строки &quot;\n&quot;?</p>]]></description>
			<author><![CDATA[null@example.com (bormant)]]></author>
			<pubDate>Tue, 15 Oct 2013 13:29:44 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=370020#p370020</guid>
		</item>
		<item>
			<title><![CDATA[Re: Запрос ввода из скрипта]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=369989#p369989</link>
			<description><![CDATA[<p>Но вот все же как побороть вставку символа замены в конец?.. какого лешего он вообще туда попадает? 0_о</p>]]></description>
			<author><![CDATA[null@example.com (sotariz)]]></author>
			<pubDate>Tue, 15 Oct 2013 10:04:05 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=369989#p369989</guid>
		</item>
		<item>
			<title><![CDATA[Re: Запрос ввода из скрипта]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=369981#p369981</link>
			<description><![CDATA[<div class="quotebox"><cite>sotariz пишет:</cite><blockquote><p>Debian 7</p></blockquote></div><p>там вроде по дефолту в некоторых случаях более простенький <strong>dash</strong> <a href="http://ru.wikipedia.org/wiki/Debian_Almquist_shell">http://ru.wikipedia.org/wiki/Debian_Almquist_shell</a></p><div class="quotebox"><cite>sotariz пишет:</cite><blockquote><p>cp keys/&quot;$CLIENT_NAME&quot;.* ../../keys/</p></blockquote></div><p>тут не нужны кавычки ИМХО<br /></p><div class="quotebox"><cite>sotariz пишет:</cite><blockquote><p>echo &quot;client&quot; &gt;&gt; /home/sotariz/vpn-keys/$CLIENT_NAME/&quot;$CLIENT_NAME&quot;.conf</p></blockquote></div><p>что-бы так не мучится, используйте встроенные документы <a href="http://www.bash-scripting.ru/abs/chunks/ch18.html">http://www.bash-scripting.ru/abs/chunks/ch18.html</a></p><div class="quotebox"><cite>sotariz пишет:</cite><blockquote><p>но главное результат</p></blockquote></div><p>угу. Это же скрипт, а не программный продукт...</p>]]></description>
			<author><![CDATA[null@example.com (drBatty)]]></author>
			<pubDate>Tue, 15 Oct 2013 09:47:59 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=369981#p369981</guid>
		</item>
		<item>
			<title><![CDATA[Re: Запрос ввода из скрипта]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=369968#p369968</link>
			<description><![CDATA[<p>В целом выглядит так... топорно, но главное результат <img src="https://linuxforum.ru/img/smilies/ab.gif" alt="ab" /><br /></p><div class="codebox"><pre><code>cat keys-creater.sh
#!/bin/bash
name()
{
        echo &quot;Введи имя клиента:&quot;
        read VALUE
        CLIENT_NAME=$(echo $VALUE | tr &quot;[:cntrl:][:space:]/?~!@#$%^&amp;*()+=|\&quot;\&#039;\`\\,.&quot; &quot;-&quot;)
}

gen_key()
{
        echo &quot;Начинается генерация ключей, дождитесь завершения...&quot;
        cd /etc/openvpn/easy-rsa/2.0/
        source ./vars
        ./pkitool $CLIENT_NAME
        cp keys/&quot;$CLIENT_NAME&quot;.* ../../keys/
        cd /etc/openvpn/ccd/
        touch $CLIENT_NAME
        echo &quot;ifconfig-push 10.0.0.100 10.0.0.101&quot; &gt; $CLIENT_NAME
        cd /etc/openvpn/easy-rsa/2.0/
        mkdir -p /home/sotariz/vpn-keys/$CLIENT_NAME
        cp keys/&quot;$CLIENT_NAME&quot;.* /home/sotariz/vpn-keys/$CLIENT_NAME/
        cp keys/ca.crt ../../keys/ta.key keys/dh2048.pem /home/sotariz/vpn-keys/$CLIENT_NAME

        echo &quot;client&quot; &gt;&gt; /home/sotariz/vpn-keys/$CLIENT_NAME/&quot;$CLIENT_NAME&quot;.conf
        echo &quot;dev tun&quot; &gt;&gt; /home/sotariz/vpn-keys/$CLIENT_NAME/&quot;$CLIENT_NAME&quot;.conf
        echo &quot;remote xxx.xxx.xxx.xxx&quot; &gt;&gt; /home/sotariz/vpn-keys/$CLIENT_NAME/&quot;$CLIENT_NAME&quot;.conf
        echo &quot;resolv-retry infinite&quot; &gt;&gt; /home/sotariz/vpn-keys/$CLIENT_NAME/&quot;$CLIENT_NAME&quot;.conf
        echo &quot;nobind&quot; &gt;&gt; /home/sotariz/vpn-keys/$CLIENT_NAME/&quot;$CLIENT_NAME&quot;.conf
        echo &quot;persist-key&quot; &gt;&gt; /home/sotariz/vpn-keys/$CLIENT_NAME/&quot;$CLIENT_NAME&quot;.conf
        echo &quot;persist-tun&quot; &gt;&gt; /home/sotariz/vpn-keys/$CLIENT_NAME/&quot;$CLIENT_NAME&quot;.conf
        echo &quot;ca /etc/openvpn/ca.crt&quot; &gt;&gt; /home/sotariz/vpn-keys/$CLIENT_NAME/&quot;$CLIENT_NAME&quot;.conf  
        echo &quot;cert /etc/openvpn/$CLIENT_NAME.crt&quot; &gt;&gt; /home/sotariz/vpn-keys/$CLIENT_NAME/&quot;$CLIENT_NAME&quot;.conf
        echo &quot;key /etc/openvpn/$CLIENT_NAME.key&quot; &gt;&gt; /home/sotariz/vpn-keys/$CLIENT_NAME/&quot;$CLIENT_NAME&quot;.conf 
        echo &quot;comp-lzo&quot; &gt;&gt; /home/sotariz/vpn-keys/$CLIENT_NAME/&quot;$CLIENT_NAME&quot;.conf
        echo &quot;float&quot; &gt;&gt; /home/sotariz/vpn-keys/$CLIENT_NAME/&quot;$CLIENT_NAME&quot;.conf   
        echo &quot;verb 3&quot; &gt;&gt; /home/sotariz/vpn-keys/$CLIENT_NAME/&quot;$CLIENT_NAME&quot;.conf  
        echo &quot;script-security 2&quot; &gt;&gt; /home/sotariz/vpn-keys/$CLIENT_NAME/&quot;$CLIENT_NAME&quot;.conf
        echo &quot;tls-client&quot; &gt;&gt; /home/sotariz/vpn-keys/$CLIENT_NAME/&quot;$CLIENT_NAME&quot;.conf
        echo &quot;tls-auth /etc/openvpn/ta.key 1&quot; &gt;&gt; /home/sotariz/vpn-keys/$CLIENT_NAME/&quot;$CLIENT_NAME&quot;.conf
        echo &quot;auth MD5&quot; &gt;&gt; /home/sotariz/vpn-keys/$CLIENT_NAME/&quot;$CLIENT_NAME&quot;.conf
        echo &quot;cipher BF-CBC&quot; &gt;&gt; /home/sotariz/vpn-keys/$CLIENT_NAME/&quot;$CLIENT_NAME&quot;.conf
        echo &quot;ns-cert-type server&quot; &gt;&gt; /home/sotariz/vpn-keys/$CLIENT_NAME/&quot;$CLIENT_NAME&quot;.conf

        sleep 5
        echo &quot;...done!&quot;
}

name

if [ &quot;$VALUE&quot; == &quot;$CLIENT_NAME&quot; ]
        then
                gen_key
        else
                echo &quot;Была допущена ошибка ввода, имя преобразовано в:&quot;
                echo $CLIENT_NAME
                echo &quot;Использовать это имя для генерации ключей?(y/n)&quot;
                read ANSWER
                if [ &quot;$ANSWER&quot; == &quot;Y&quot; ] || [ &quot;$ANSWER&quot; == &quot;y&quot; ] || [ &quot;$ANSWER&quot; == &quot;N&quot; ] || [ &quot;$ANSWER&quot; == &quot;n&quot; ]
                        then
                                if [ &quot;$ANSWER&quot; == &quot;Y&quot; ] || [ &quot;$ANSWER&quot; == &quot;y&quot; ]
                                        then
                                                gen_key
                                        else
                                                name
                                fi
                        else
                                echo &quot;Ошибка ввода!&quot;
                                echo &quot;Операция прервана!&quot;
                fi
fi</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (sotariz)]]></author>
			<pubDate>Tue, 15 Oct 2013 09:06:15 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=369968#p369968</guid>
		</item>
		<item>
			<title><![CDATA[Re: Запрос ввода из скрипта]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=369965#p369965</link>
			<description><![CDATA[<div class="quotebox"><cite>drBatty пишет:</cite><blockquote><p>первая строка с интерпретатором</p></blockquote></div><p>#!/bin/bash<br /></p><div class="quotebox"><cite>drBatty пишет:</cite><blockquote><p>Во вторых вашей ОС</p></blockquote></div><p>Debian 7</p>]]></description>
			<author><![CDATA[null@example.com (sotariz)]]></author>
			<pubDate>Tue, 15 Oct 2013 09:03:01 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=369965#p369965</guid>
		</item>
		<item>
			<title><![CDATA[Re: Запрос ввода из скрипта]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=369961#p369961</link>
			<description><![CDATA[<p><strong>sotariz</strong>, первая строка с интерпретатором вопервых мне нужна, ибо сложно понять, ЧТО вы тут написали, вот так с ходу. Во вторых вашей ОС. Ей тоже так проще. Не всегда bash === /bin/sh.</p>]]></description>
			<author><![CDATA[null@example.com (drBatty)]]></author>
			<pubDate>Tue, 15 Oct 2013 08:57:29 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=369961#p369961</guid>
		</item>
		<item>
			<title><![CDATA[Re: Запрос ввода из скрипта]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=369959#p369959</link>
			<description><![CDATA[<p><strong>drBatty</strong>, про первую строку понятно, я просто передавал примерную структуру<br />суть уловил, буду пробовать дальше. Спасибо! <img src="https://linuxforum.ru/img/smilies/ab.gif" alt="ab" /></p><p><strong>UPD</strong><br />При проверке имени добавляется лишний символ замены в конец имени, от чего это?<br /></p><div class="codebox"><pre><code>./keys-creater.sh
Введи имя клиента:
test&amp;key%ovpn
Была допущена ошибка ввода, имя преобразовано в:
test-key-ovpn-
Использовать это имя для генерации ключей?(y/n)
n
Введи имя клиента:
^C</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (sotariz)]]></author>
			<pubDate>Tue, 15 Oct 2013 08:45:53 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=369959#p369959</guid>
		</item>
		<item>
			<title><![CDATA[Re: Запрос ввода из скрипта]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=369949#p369949</link>
			<description><![CDATA[<p><strong>sotariz</strong>, </p><p>1. у вас синтаксически неверная функция внутри блока if/then/fi с именем gen-key</p><p>Кроме того, не советую писать имя функции через &quot;минус&quot; (-). Используйте подчерк, gen_key.</p><p>2. функция в bash НЕ выполняется в первый раз. Это её описание. Например:</p><div class="codebox"><pre><code>#!/bin/bash
# не забываем в первой строке указывать ЯП, их много, и у них разный синтаксис!

пожарить_рыбу()
{
 кинуть рыбу на сковородку, и жарить 5 минут
 рыба готова
}

if мы_поймали_рыбу
then
  пожарить_рыбу
fi</code></pre></div><p>в этом коде сначала выполняется функция(её мне лень писать) <strong>мы_поймали_рыбу</strong>, и если она удачно выполнилась, то выполняется функция <strong>пожарить_рыбу</strong>.</p>]]></description>
			<author><![CDATA[null@example.com (drBatty)]]></author>
			<pubDate>Tue, 15 Oct 2013 07:24:57 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=369949#p369949</guid>
		</item>
		<item>
			<title><![CDATA[Re: Запрос ввода из скрипта]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=369730#p369730</link>
			<description><![CDATA[<p>Спасибо всем за участие! Но ребята, почти весь этот спор не имеет смысла.... все что я хотел бы сделать так это проверку случайного нажатия shift при вводе чисел, более чем достаточно.<br />А вот в продолжение реализации сего чудо-действенного скрипта возник вопрос...<br />Как же правильно разложить все это в скрипте.<br />1. Спрашиваем значение переменной (имя ключа)<br />2. Проверяем ввод и при необходимости заменяем<br />3. Если замены не было выполняем генерацию<br />4. Если замена была выводим что вышло и спрашиваем пользователя продолжать или нет<br />5. Пользователь ответил ДА - выполняем пункт 3<br />6. Если пользователь ответил НЕТ - выполняем пункт 1<br /></p><div class="codebox"><pre><code>name()
{
        echo &quot;имя?&quot;
        read VALUE
        CLIENT_NAME=$(echo $VALUE | tr &quot;[:cntrl:][:space:]/?~!@#$%^&amp;*()+=|\&quot;\&#039;\`\\,.&quot; &quot;-&quot;)
}
if [ &quot;$VALUE&quot; == &quot;$CLIENT_NAME&quot; ]
        then
                gen-key ()
                {
                        генерируем ключ и выполняем все что задумали
                }
        else
                echo &quot;Ошибка&quot;
                echo $CLIENT_NAME
                echo &quot;Использовать это?(y/n)&quot;
                read ANSWER
                if [ &quot;$ANSWER&quot; == &quot;Y&quot; ] || [ &quot;$ANSWER&quot; == &quot;y&quot; ] || [ &quot;$ANSWER&quot; == &quot;N&quot; ] || [ &quot;$ANSWER&quot; == &quot;n&quot; ]
                        then
                                 if [ &quot;$ANSWER&quot; == &quot;Y&quot; ] || [ &quot;$ANSWER&quot; == &quot;y&quot; ]
                                        then
                                                gen-key (использовал while do done, как правильно?)
                                        else
                                                name
                                fi
                        else
                                echo &quot;Операция прервана!&quot;
                fi
fi</code></pre></div><p>Так не выполняется, точнее ничего не запрашивает. Если выполнять от обычного пользователя ругается что нет доступа (логично), а если от рута то просто спустя секунду я снова в консоли.</p>]]></description>
			<author><![CDATA[null@example.com (sotariz)]]></author>
			<pubDate>Sun, 13 Oct 2013 14:01:02 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=369730#p369730</guid>
		</item>
		<item>
			<title><![CDATA[Re: Запрос ввода из скрипта]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=369395#p369395</link>
			<description><![CDATA[<p><strong>drBatty</strong>, это была не придирка, а вопрос о том, нужно ли вдаваться в особенности utf8 в части невстречаемости кодов верхней половины ASCII в составе&nbsp; 2+ байтовых комбинаций символов в utf8.<br />А про bash/не-bash в исходном сообщении не было. Да и не в том дело, как правило аналогичные задачи уже имеют решение, не требующие посимвольного перебора строк (о чём выше уже говорил), а использование расширенных возможностей bash -- поминания о них. Впрочем, шебанг вполне можно считать таковым поминанием.</p>]]></description>
			<author><![CDATA[null@example.com (bormant)]]></author>
			<pubDate>Fri, 11 Oct 2013 16:00:18 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=369395#p369395</guid>
		</item>
		<item>
			<title><![CDATA[Re: Запрос ввода из скрипта]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=369360#p369360</link>
			<description><![CDATA[<div class="quotebox"><cite>bormant пишет:</cite><blockquote><p>Верите?</p></blockquote></div><p>а у ТСа bash. Верите? Да, я тоже умею придираться к словам <img src="https://linuxforum.ru/img/smilies/bx.gif" alt="bx" /></p>]]></description>
			<author><![CDATA[null@example.com (drBatty)]]></author>
			<pubDate>Fri, 11 Oct 2013 14:18:05 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=369360#p369360</guid>
		</item>
		<item>
			<title><![CDATA[Re: Запрос ввода из скрипта]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=369329#p369329</link>
			<description><![CDATA[<div class="quotebox"><cite>drBatty пишет:</cite><blockquote><p> А $() не башизм, не?</p></blockquote></div><p>Нет. <a href="http://www.opennet.ru/man.shtml?topic=sh&amp;russian=2&amp;category=&amp;submit=%F0%CF%CB%C1%DA%C1%D4%D8+man#lbBI">http://www.opennet.ru/man.shtml?topic=s … 8+man#lbBI</a><br /></p><div class="quotebox"><blockquote><p><strong>Command Substitution</strong><br />&nbsp; &nbsp; &nbsp;Command substitution allows the output of a command to be substituted in place of the command name itself.&nbsp; Command substitution occurs when the command is enclosed as follows:</p><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$(command)</p><p>&nbsp; &nbsp; &nbsp;or (“backquoted” version):</p><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;`command`</p></blockquote></div><br /><div class="quotebox"><cite>drBatty пишет:</cite><blockquote><p>Про совместимость. Эта ваша tr (как и perl по дефолту) не умеет работать с utf-8.</p></blockquote></div><p>Угу. Не здорово. Вот только с точки зрения примера этого топика (замена на &quot;-&quot; или &quot;_&quot; символов &quot;пробела и спец символов (всех окромя дефиса и подчеркивания, в том числе точки, запятой и т.д.)&quot;) это не имеет никакого значения (так устроена utf8). Верите?<br />Ах да, если к спецсимволам относится что-то не из ASCII, то tr действительно не подойдет.<br />И да, поскольку правильный вопрос должен завсегда содержать более половины ответа, целесообразнее определить, не что удалять, а что оставлять, заменяя всё остальное -- не останется возможности для разночтений.</p>]]></description>
			<author><![CDATA[null@example.com (bormant)]]></author>
			<pubDate>Fri, 11 Oct 2013 11:11:01 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=369329#p369329</guid>
		</item>
		<item>
			<title><![CDATA[Re: Запрос ввода из скрипта]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=369326#p369326</link>
			<description><![CDATA[<p><strong>bormant</strong>, да, кстати. Про совместимость. Эта ваша tr (как и perl по дефолту) не умеет работать с utf-8.<br /></p><div class="codebox"><pre><code>$ echo &quot;☢-☢-☢-☢&quot; | tr &#039;-☢&#039; &#039;+☣&#039;
tr: неверный ключ — «�»
По команде «tr --help» можно получить дополнительную информацию.
$ echo &quot;☢-☢-☢-☢&quot; | sed &#039;y/-☢/+☣/&#039;
☣+☣+☣+☣</code></pre></div><p>т.е. про русский язык можно смело забыть...</p>]]></description>
			<author><![CDATA[null@example.com (drBatty)]]></author>
			<pubDate>Fri, 11 Oct 2013 11:04:22 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=369326#p369326</guid>
		</item>
	</channel>
</rss>
