<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: expect скрипт</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/9671.html</link>
    <description>задача, по логам автоматизировать добавление правил блокировки доступа.&lt;br&gt;&lt;br&gt;придумал такую штуку:&lt;br&gt;&lt;br&gt;~/ttt.sh&lt;br&gt;&lt;br&gt;#/bin/sh&lt;br&gt;ip=$( cat 1.txt )&lt;br&gt;./t $ip&lt;br&gt;&lt;br&gt;~/t&lt;br&gt;#!/usr/bin/expect -f&lt;br&gt;set a &quot;*&quot;&lt;br&gt;set b &quot;*&quot;&lt;br&gt;set c &quot;*&quot;&lt;br&gt;set tt &#091;lindex $argv 0&#093;&lt;br&gt;spawn ssh -T $c&#064;192.168.1.1;&lt;br&gt;expect &quot;password:&quot;&lt;br&gt;send &quot;$a&#092;r&quot;&lt;br&gt;expect &quot;&amp;gt;&quot;&lt;br&gt;send &quot;en&#092;r&quot;&lt;br&gt;expect &quot;password:&quot;&lt;br&gt;send &quot;$b&#092;r&quot;&lt;br&gt;expect &quot;#&quot;&lt;br&gt;send &quot;conf t&#092;r&quot;&lt;br&gt;expect &quot;#&quot;&lt;br&gt;send &quot;$tt&quot;&lt;br&gt;expect &quot;#&quot;&lt;br&gt;send &quot;exit&#092;r&quot;&lt;br&gt;send &quot;exit&#092;r&quot;&lt;br&gt;expect eof&lt;br&gt;&lt;br&gt;&lt;br&gt;~/1.txt&lt;br&gt;access-list inside_access_in extended permit ip host 192.168.1.4 any i&#092;r&lt;br&gt;&lt;br&gt;первый скрипт присваивает содержимое файла переменной, которая передается скрипту.&lt;br&gt;в этом скрипте так сказать ключевая строчка:&lt;br&gt;&lt;br&gt; send &quot;$tt&quot;&lt;br&gt;&lt;br&gt;однако, в консоле я вижу, что скармливается не все содержимое файле а лишь &quot;access-list&quot; то есть до первого пробела.&lt;br&gt;&lt;br&gt;переменную $tt проверял, содержит всю строку целиком.&lt;br&gt;&lt;br&gt;тогда в чем может быть проблема? почему строка урезается? &lt;br&gt;</description>

<item>
    <title>expect скрипт (anonymous)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/9671.html#5</link>
    <pubDate>Tue, 30 Apr 2013 05:36:34 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt; в конце строки стоит &quot;&#092;r&quot; в файле, и он не исполняется send-ом. &lt;br&gt;&amp;gt; получается его наружу за переменную надо выносить.&lt;br&gt;&amp;gt; а это не есть хорошо, так как файл 1.txt надо будет скармливать &lt;br&gt;&amp;gt; построчно.&lt;br&gt;&amp;gt; получится что для ввода одного блокирующего правила, надо подключиться ввести правило, &lt;br&gt;&amp;gt; отключится. и так для каждого правила. а если их будет сотня? &lt;br&gt;&amp;gt; как то кривовато.&lt;br&gt;&amp;gt; удобней было бы один раз подключиться, скормить сотню правил, отключиться. как я &lt;br&gt;&amp;gt; собственно изначально и планировал.&lt;br&gt;&amp;gt; может что то порекомендуете?&lt;br&gt;&lt;br&gt;Во-первых, раз уж вы используете ssh, сделайте авторизацию по ключу. Желательно так же привязать это дело к tacacs+/radius, чтобы сразу попадать в привилегированный режим.&lt;br&gt;Во-вторых, так (за один раз все правила без &quot;&#092;r&quot;) не бывает. После каждой строчки должен быть &quot;&#092;r&quot;, в случае работы через Expect.&lt;br&gt;Либо загружайте на циску кусок конфига и применяйте к текущему running-config, тогда будет за один раз. Или tcl скрипт на циске запускайте...&lt;br&gt;Рекомендую кн</description>
</item>

<item>
    <title>expect скрипт (михалыч)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/9671.html#4</link>
    <pubDate>Mon, 29 Apr 2013 19:42:29 GMT</pubDate>
    <description>Тут чистым expect наверное не прокатит.&lt;br&gt;perl ?&lt;br&gt;&lt;br&gt;#!/usr/bin/perl&lt;br&gt;&lt;br&gt;use Expect;&lt;br&gt;&lt;br&gt;$Expect::Log_Stdout = 1;&lt;br&gt;&lt;br&gt;$file = &apos;/tmp/1.txt&apos;;&lt;br&gt;&lt;br&gt;open ( FILE, &quot;$file&quot; );&lt;br&gt;&#064;acclist = &amp;lt;FILE&amp;gt;;&lt;br&gt;close ( FILE );&lt;br&gt;&lt;br&gt;my $exp = Expect-&amp;gt;spawn(&quot;ssh user&#092;&#064;192.168.1.1&quot;);&lt;br&gt;$exp-&amp;gt;stty(qw(-echo));&lt;br&gt;$exp-&amp;gt;expect($timeout,&lt;br&gt;  &#091;&apos;Password:&apos; =&amp;gt; sub &#123;&lt;br&gt;    $exp-&amp;gt;send(&quot;password&#092;n&quot;);&lt;br&gt;    exp_continue; &#125;&lt;br&gt;  &#093;,&lt;br&gt;  &#091;&apos;&#092;$&apos; =&amp;gt; sub &#123;&lt;br&gt;    foreach $rules (&#064;acclist) &#123;&lt;br&gt;      $exp-&amp;gt;send(&quot;$rules&#092;n&quot;);&lt;br&gt;    &#125;&lt;br&gt;    $exp-&amp;gt;send(&quot;exit&#092;n&quot;);&lt;br&gt;    exp_continue;&#125;&lt;br&gt;  &#093;&lt;br&gt;);&lt;br&gt;&lt;br&gt;&quot;кошака&quot; под рукой нет, его не готовил, то есть на нём не проверял ))&lt;br&gt;</description>
</item>

<item>
    <title>expect скрипт (михалыч)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/9671.html#3</link>
    <pubDate>Mon, 29 Apr 2013 17:50:46 GMT</pubDate>
    <description>Что собой представляет файл 1.txt ?&lt;br&gt;Насколько я понял, это access list для &quot;кошака&quot;?&lt;br&gt;&lt;br&gt;Типа&lt;br&gt;access-list inside_access_in extended permit ip host 192.168.1.4 any i&lt;br&gt;access-list inside_access_in extended permit ip host 192.168.1.5 any i&lt;br&gt;access-list inside_access_in extended permit ip host 192.168.1.6 any i&lt;br&gt;access-list inside_access_in extended permit ip host 192.168.1.7 any i&lt;br&gt;&lt;br&gt;На самом деле без &#092;r вконце, так?&lt;br&gt;И &#092;r нужен потому, что вы хотите &quot;скормить&quot; за раз все эти правила.&lt;br&gt;А реально, за один раз, &quot;кошак&quot; их сожрет, не подавится?&lt;br&gt;</description>
</item>

<item>
    <title>expect скрипт (djeck)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/9671.html#2</link>
    <pubDate>Mon, 29 Apr 2013 10:33:06 GMT</pubDate>
    <description>помогло спасибо!&lt;br&gt;&lt;br&gt;но возникла еще одна проблемка неожиданно.&lt;br&gt;&lt;br&gt;&quot;&#092;r&quot; не отрабатывает.&lt;br&gt;в конце строки стоит &quot;&#092;r&quot; в файле, и он не исполняется send-ом.&lt;br&gt;получается его наружу за переменную надо выносить. &lt;br&gt;&lt;br&gt;а это не есть хорошо, так как файл 1.txt надо будет скармливать построчно.&lt;br&gt;&lt;br&gt;получится что для ввода одного блокирующего правила, надо подключиться ввести правило, отключится. и так для каждого правила. а если их будет сотня? как то кривовато.&lt;br&gt;&lt;br&gt;удобней было бы один раз подключиться, скормить сотню правил, отключиться. как я собственно изначально и планировал.&lt;br&gt;&lt;br&gt;может что то порекомендуете?&lt;br&gt;&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>expect скрипт (Andrey Mitrofanov)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/9671.html#1</link>
    <pubDate>Mon, 29 Apr 2013 10:12:28 GMT</pubDate>
    <description>&amp;gt; придумал такую штуку: &lt;br&gt;&amp;gt; ~/ttt.sh &lt;br&gt;&amp;gt; #/bin/sh &lt;br&gt;&amp;gt; ip=$( cat 1.txt ) &lt;br&gt;&amp;gt; ./t $ip &lt;br&gt;&amp;gt; однако, в консоле я вижу, что скармливается не все содержимое файле а &lt;br&gt;&amp;gt; лишь &quot;access-list&quot; то есть &#091;B&#093;до первого пробела.&#091;/B&#093;&lt;br&gt;&lt;br&gt;Очевидно же, кавычек &quot;не хватает&quot; (скорее вторых, чем первых):&lt;br&gt;&lt;br&gt;ip=&quot;$( cat 1.txt )&quot;&lt;br&gt;./t &quot;$ip&quot;&lt;br&gt;&lt;br&gt;&amp;gt; переменную $tt проверял, содержит всю строку целиком.&lt;br&gt;&amp;gt; тогда в чем может быть проблема? почему строка урезается?</description>
</item>

</channel>
</rss>
