<?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; EXPECT передача переменной скрипту]]></title>
		<link>https://linuxforum.ru/viewtopic.php?id=11486</link>
		<atom:link href="https://linuxforum.ru/extern.php?action=feed&amp;tid=11486&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «EXPECT передача переменной скрипту».]]></description>
		<lastBuildDate>Thu, 28 Jun 2012 09:52:59 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: EXPECT передача переменной скрипту]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=284693#p284693</link>
			<description><![CDATA[<p>Здравствуйте, коллеги!<br />А expect умеет &quot;выдергивать&quot; из переменной символы?<br />Допустим есть скрипт, которому передаю значение переменной </p><div class="codebox"><pre><code># /home/local 192.168.0.1</code></pre></div><div class="codebox"><pre><code>#!/usr/bin/expect -f

set timeout -1
spawn telnet $SWITCH_IP
match_max 100000
expect -exact &quot;Trying $SWITCH_IP...\r\r
Connected to $SWITCH_IP ($SWITCH_IP).\r\r
Escape character is &#039;^\]&#039;.\r\r
\r
\r
User Access Verification\r
\r
Username: &quot;
send -- &quot;логин\r&quot;
expect -exact &quot;логин\r
Password: &quot;
send -- &quot;пароль\r&quot;
expect -exact &quot;\r
\r
switch10027#&quot;
send -- &quot;conf t\r&quot;
expect -exact &quot;conf t\r
Enter configuration commands, one per line.  End with CNTL/Z.\r</code></pre></div><p>Можно ли сделать так, чтобы при &quot;длинне&quot; переменной выше 11 символов, скрипт &quot;Обрезал&quot; ее до 11.</p><p>Допустим мы передаем&nbsp; </p><div class="codebox"><pre><code># /home/local 192.168.0.19875</code></pre></div><p>Скрипт проверяет переменную и обрезфет ее до 192.168.0.1.</p><p>Спасибо.</p>]]></description>
			<author><![CDATA[null@example.com (Munsera)]]></author>
			<pubDate>Thu, 28 Jun 2012 09:52:59 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=284693#p284693</guid>
		</item>
		<item>
			<title><![CDATA[Re: EXPECT передача переменной скрипту]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=273491#p273491</link>
			<description><![CDATA[<p>Столкнулся со схожей проблемой, пока не могу найти решение<br /><a href="http://www.opennet.ru/openforum/vsluhforumID9/9447.html#3">http://www.opennet.ru/openforum/vsluhfo … 447.html#3</a><br />суть такова, в теле expect скрипта вызываю любую команду shell, результат который возвращает команда shell нужно присвоить переменной в скрипте expect.</p>]]></description>
			<author><![CDATA[null@example.com (nastr)]]></author>
			<pubDate>Thu, 10 May 2012 07:44:10 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=273491#p273491</guid>
		</item>
		<item>
			<title><![CDATA[Re: EXPECT передача переменной скрипту]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=151619#p151619</link>
			<description><![CDATA[<p>Единственная проблема:<br />$nom(config)#&quot;<br />понимает как массив. Как можно переменную вставить в середину слова???</p>]]></description>
			<author><![CDATA[null@example.com (Munsera)]]></author>
			<pubDate>Wed, 02 Mar 2011 10:12:13 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=151619#p151619</guid>
		</item>
		<item>
			<title><![CDATA[Re: EXPECT передача переменной скрипту]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=151618#p151618</link>
			<description><![CDATA[<p>Сделал подругому. Правда геморно, но зато все видно и на лицо)))</p><div class="codebox"><pre><code>set sw [lindex $argv 0]
set witch10027 192,168,0,2
set witch10026 192,168,0,5


if {$sw==$witch10027} {set nom switch10027}




$nom#&quot;
send -- &quot;conf t\r&quot;
expect -exact &quot;conf t\r
Enter configuration commands, one per line.  End with CNTL/Z.\r
$nom(config)#&quot;</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Munsera)]]></author>
			<pubDate>Wed, 02 Mar 2011 10:07:46 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=151618#p151618</guid>
		</item>
		<item>
			<title><![CDATA[Re: EXPECT передача переменной скрипту]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=151615#p151615</link>
			<description><![CDATA[<div class="quotebox"><cite>Munsera пишет:</cite><blockquote><p>Как сделать так, чтобы expect понимал &quot;*&quot;. Т.е. мне нужно:</p></blockquote></div><p>вы знает,.. Не помню. Как-то можно, но не нужно. expect я только в крайнем случае юзаю - если надо что-то передать интерактивной программе. В самом крайнем случае, я меняю сам скрипт. Например, как я понимаю, вам нужно сменить switch10027 скажем на switch10028?<br />ок, пишем<br /></p><div class="codebox"><pre><code>sed -i &quot;s/switch10027/switch10028/g&quot; script.expect</code></pre></div><p>а ещё лучше будет сделать так:<br /><div class="termtitle" style="font-family: sans-serif; position:relative; height:auto; width:auto; background:#3A4061; color:#FFFFFF; padding: 1px;"><b> Консоль:</b></div>
<div class="termcont" style="font-family: Terminus; position:relative; height:auto; width:auto; overflow-x:scroll; white-space: nowrap ; overflow-y:auto;background:#000000; color:#4EF44E; line-height:1.2; padding: 3px; font-size: 1rem; max-height: 60vh">sed &quot;s/#SWITCH#/$SWITCH/g&quot; script.tpl &gt;script.expect</div><br />тут $SWITCH это переменная шелла, с нужным параметром, а script.tpl это шаблон, в котором вместо параметра написано #SWITCH#<br />т.е. по шаблону мы генерируем нужные скрипты на данный случай. ибо в самом экспекте программировать невозможно - кажется, что его специально запутывали. <img src="https://linuxforum.ru/img/smilies/ac.gif" alt="ac" /></p>]]></description>
			<author><![CDATA[null@example.com (drBatty)]]></author>
			<pubDate>Wed, 02 Mar 2011 10:01:55 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=151615#p151615</guid>
		</item>
		<item>
			<title><![CDATA[Re: EXPECT передача переменной скрипту]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=151592#p151592</link>
			<description><![CDATA[<p>А можно еще вопрос:<br />Как сделать так, чтобы expect понимал &quot;*&quot;. Т.е. мне нужно:<br /></p><div class="codebox"><pre><code>switch10027(config)#&quot;
send -- &quot;ip acce        &quot;
expect -exact &quot;\r
switch10027(config)#ip access-list &quot;
send -- &quot;e </code></pre></div><p>А вот так:<br /></p><div class="codebox"><pre><code>*(config)#&quot;
send -- &quot;ip acce        &quot;
expect -exact &quot;\r
*(config)#ip access-list &quot;
send -- &quot;e </code></pre></div><p>Для того чтобы сделать скрипт универсальным.</p>]]></description>
			<author><![CDATA[null@example.com (Munsera)]]></author>
			<pubDate>Wed, 02 Mar 2011 09:01:49 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=151592#p151592</guid>
		</item>
		<item>
			<title><![CDATA[Re: EXPECT передача переменной скрипту]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=151590#p151590</link>
			<description><![CDATA[<p>Просто написал <br /></p><div class="codebox"><pre><code>nano /home/local SWITCH_IP </code></pre></div><p>В программе. И все заработало! Значение передалось!))<br />Большое спасибо за помощь!!!</p>]]></description>
			<author><![CDATA[null@example.com (Munsera)]]></author>
			<pubDate>Wed, 02 Mar 2011 08:58:03 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=151590#p151590</guid>
		</item>
		<item>
			<title><![CDATA[Re: EXPECT передача переменной скрипту]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=151588#p151588</link>
			<description><![CDATA[<p>Все понял!<br />СПАСИБО БОЛЬШОЕ!!!!!</p>]]></description>
			<author><![CDATA[null@example.com (Munsera)]]></author>
			<pubDate>Wed, 02 Mar 2011 08:56:33 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=151588#p151588</guid>
		</item>
		<item>
			<title><![CDATA[Re: EXPECT передача переменной скрипту]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=151584#p151584</link>
			<description><![CDATA[<p>Логика такая:<br />Программа при определенном событии вызывает скрипт. В програме есть переменная SWITCH_IP, которая принимает значение IP адреса. В базе программы IP адресов много. Но она выбирает один,который подходит под условие. <br />Вот я написал скрипт, а как сделать так чтобы программа передала значение скрипту незнаю. А сейчас еще больше запутался.</p>]]></description>
			<author><![CDATA[null@example.com (Munsera)]]></author>
			<pubDate>Wed, 02 Mar 2011 08:52:32 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=151584#p151584</guid>
		</item>
		<item>
			<title><![CDATA[Re: EXPECT передача переменной скрипту]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=151582#p151582</link>
			<description><![CDATA[<p>в смысл список должен быть таким:<br /></p><div class="codebox"><pre><code>192.168.0.1
231.2.1.43
234.243.1.1
10.0.0.22</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (drBatty)]]></author>
			<pubDate>Wed, 02 Mar 2011 08:48:41 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=151582#p151582</guid>
		</item>
		<item>
			<title><![CDATA[Re: EXPECT передача переменной скрипту]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=151581#p151581</link>
			<description><![CDATA[<div class="quotebox"><cite>Munsera пишет:</cite><blockquote><p>ПРосто будет много IP адресов...</p></blockquote></div><p>сделайте список <span class="bbu">list_ip.txt</span> по одному на каждый ip, потом так:<br /></p><div class="codebox"><pre><code>#/bin/sh

while read ip
do
 /root/script.expect $ip
done &lt;list_ip.txt</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (drBatty)]]></author>
			<pubDate>Wed, 02 Mar 2011 08:46:22 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=151581#p151581</guid>
		</item>
		<item>
			<title><![CDATA[Re: EXPECT передача переменной скрипту]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=151580#p151580</link>
			<description><![CDATA[<p><div class="termtitle" style="font-family: sans-serif; position:relative; height:auto; width:auto; background:#3A4061; color:#FFFFFF; padding: 1px;"><b> Консоль:</b></div>
<div class="termcont" style="font-family: Terminus; position:relative; height:auto; width:auto; overflow-x:scroll; white-space: nowrap ; overflow-y:auto;background:#000000; color:#4EF44E; line-height:1.2; padding: 3px; font-size: 1rem; max-height: 60vh"># /home/local 192.168.0.1</div><br />ЗЫЖ зря вы так криво скрипт назвали. могли-бы<br /><span class="bbu">/root/script.expect</span><br />а то непонятно.</p>]]></description>
			<author><![CDATA[null@example.com (drBatty)]]></author>
			<pubDate>Wed, 02 Mar 2011 08:43:35 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=151580#p151580</guid>
		</item>
		<item>
			<title><![CDATA[Re: EXPECT передача переменной скрипту]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=151577#p151577</link>
			<description><![CDATA[<p>ПРосто будет много IP адресов...</p>]]></description>
			<author><![CDATA[null@example.com (Munsera)]]></author>
			<pubDate>Wed, 02 Mar 2011 08:42:16 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=151577#p151577</guid>
		</item>
		<item>
			<title><![CDATA[Re: EXPECT передача переменной скрипту]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=151575#p151575</link>
			<description><![CDATA[<p>Понятно, спасибо.<br />А при вызове этого скрипта, как ему передать значение?<br />Мне нужно чтобы программа вызвала скрипт и передала значение ему. Настраивается это все в командной строке.<br />[root@localhost ~]# /home/local а дальше что писать?</p>]]></description>
			<author><![CDATA[null@example.com (Munsera)]]></author>
			<pubDate>Wed, 02 Mar 2011 08:40:39 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=151575#p151575</guid>
		</item>
		<item>
			<title><![CDATA[Re: EXPECT передача переменной скрипту]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=151574#p151574</link>
			<description><![CDATA[<div class="quotebox"><cite>Munsera пишет:</cite><blockquote><p>ТАк писать?</p></blockquote></div><p>НЕЕЕТТТ!!!11<br /></p><div class="codebox"><pre><code>#!/usr/bin/expect -f

set timeout -1
set SWITCH_IP [lindex $argv 0]
spawn telnet $SWITCH_IP
match_max 100000
expect -exact &quot;Trying $SWITCH_IP...\r\r
Connected to $SWITCH_IP ($SWITCH_IP).\r\r
Escape character is &#039;^\]&#039;.\r\r
\r
\r
User Access Verification\r
\r
Username: &quot;
send -- &quot;логин\r&quot;
expect -exact &quot;логин\r
Password: &quot;
send -- &quot;пароль\r&quot;
expect -exact &quot;\r
\r
switch10027#&quot;
send -- &quot;conf t\r&quot;
expect -exact &quot;conf t\r
Enter configuration commands, one per line.  End with CNTL/Z.\r
switch10027(config)#&quot;
send -- &quot;ip acce        &quot;
expect -exact &quot;\r
switch10027(config)#ip access-list &quot;
send -- &quot;e   &quot;
expect -exact &quot;\r
switch10027(config)#ip access-list extended &quot;
send -- &quot;155\r&quot;
expect -exact &quot;155\r
switch10027(config-ext-nacl)#&quot;
send -- &quot;per    &quot;
expect -exact &quot;\r
switch10027(config-ext-nacl)#permit &quot;
send -- &quot;ip g^H&quot;
expect -exact &quot;ip g^H ^H&quot;
send -- &quot;h   &quot;
expect -exact &quot;\r
switch10027(config-ext-nacl)#permit ip host &quot;
send -- &quot;х.х.х.5 a        &quot;
expect -exact &quot;\r
switch10027(config-ext-nacl)#permit ip host х.х.х.5 any &quot;
send -- &quot;\r&quot;
expect -exact &quot;\r
switch10027(config-ext-nacl)#&quot;
send -- &quot;exit\r&quot;
expect -exact &quot;exit\r
switch10027(config)#&quot;
send -- &quot;exit\r&quot;
expect -exact &quot;exit\r
switch10027#&quot;
send -- &quot;exit\r&quot;
expect eof</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (drBatty)]]></author>
			<pubDate>Wed, 02 Mar 2011 08:38:02 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=151574#p151574</guid>
		</item>
	</channel>
</rss>
