<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; WSH: Не работает скрипт в фоновом режиме]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=9641&amp;type=atom" />
	<updated>2014-08-21T12:48:03Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=9641</id>
		<entry>
			<title type="html"><![CDATA[Re: WSH: Не работает скрипт в фоновом режиме]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=86016#p86016" />
			<content type="html"><![CDATA[<p>А на JS пример работы с KiTTY у кого-нибудь есть?</p><p>Точнее, два вопроса:<br />1. есть ли TelNet клиент (SSH и пр. - не интересуют) с возможностью перенаправления ввода вывода (использования stdIn/Out из скрипта)<br />2. есть ли пример использования WinSock из скрипта (желательно JS)</p>]]></content>
			<author>
				<name><![CDATA[Serge Yolkin]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27503</uri>
			</author>
			<updated>2014-08-21T12:48:03Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=86016#p86016</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH: Не работает скрипт в фоновом режиме]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=84629#p84629" />
			<content type="html"><![CDATA[<p>Спасибо, s512! Но это самое простое и, конечно, я это сразу всё проделал. Ведь когда интерактивно запускаешь тунель SSH, то он сразу спрашивает сохранить или нет. Я сразу нажимал сохранить. Долго я не бился, на форумах сразу нашёл. Более одного раза она, утилита, уже не спрашивала. Так как он, ключ, сохранился в реестре видимо. Но у меня всё равно не работал скрипт. Дело не в этом. проблему я так и не ришил. Plink так и не смог пройти автризацию. Более я не думал. Жаль, хотелось бы как то знать как мне автоматом, с помощью скрипта, перезагружать мои свитчи.&nbsp; Как ни странно решил, ещё тестирую, другим способом мою проблему на свитчах. Прошил последнюю прошивку и вроде пинги до этих свитчей стали маленькими. Проблема то у меня была в том, что до многих свитчей питаемых по кабелю ethernet , пинги были сверх большими через 10 дней 300-500мс. Не понятно по каким причинам у всех эти пинги в одно и тоже время поднимались. Перезагружаешь свитчи пинги уменьшаются, и так каждые десять дней. Перепрошивал прошивки, не помогало. Но в этот раз вновю вышла новая прошивка, вроде 20 дней проходят полёт нормальный. Ещё правда не понял, проверяю. Именно поэтому я хотел перезагружать два центральных свитча от которых питались маленькие 8 портовые, а их 10 шт. Так как приходилось каждый раз в 10 дней перезаружать вручную эти два свитча управляемых.</p>]]></content>
			<author>
				<name><![CDATA[tgrisha]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=32298</uri>
			</author>
			<updated>2014-07-08T14:35:31Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=84629#p84629</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH: Не работает скрипт в фоновом режиме]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=84608#p84608" />
			<content type="html"><![CDATA[<p>Доброго времени, коллеги.<br />Нашел решение это проблемы, и т.к. по существующей проблеме эту ветку поисковик отдает первой пишу сюда.</p><p>К меня тоже putty/plink никак не хотел поднимать SSH тунель в фоне - долго я мучился и все перепробовал:<br />интерактивно тунель подымался, нужный порт пробрасывался, а вот в фоне никак. Речь о Win 2008R2.</p><p>Решение оказалось такое: при первом запуске plink в консоле задает вопрос интерактивно типа &quot;открытый ключ сервера такой-то ... сохранить y/n ?&quot; естественно в фоне некому нажать ни &quot;y&quot; ни &quot;n&quot;. Решение такое - залогиниться под пользователем от имени которого запускается задание, там запустить plink выполнить подключение и сохранить все что от предложит. После этого все работает.</p><p>Буду рад если кому помог.</p>]]></content>
			<author>
				<name><![CDATA[s512]]></name>
			</author>
			<updated>2014-07-07T20:48:17Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=84608#p84608</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH: Не работает скрипт в фоновом режиме]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=83491#p83491" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>tgrisha пишет:</cite><blockquote><p>lcli - это и есть ввод команды в Cisco, чтобы перейти в режим мастера.</p></blockquote></div><p>Я так и понял что это&nbsp; цисковский &quot;su&quot;. Я тестировал подключение на NAS-е синолоджи, там это не требуется. В любом случае, это не существенно. Проблема не в запуске телнета, он как раз запускается(что можно проконтролировать через диспечер задач). Проблема в том, что не получается запущенному без окна телнету послать SendKeys.<br /></p><div class="quotebox"><cite>tgrisha пишет:</cite><blockquote><p>Да, и ещё у меня естественно запускаются все задания с закрытой сессией. То бишь я разлогиниваюсь на сервере и ухожу домой. Мне этот вариант нужен, чтобы в этом варианте выполнялся скрипт..</p></blockquote></div><p>Никто не мешает подключаться в консоль(ключ /console или /admin - в зависимости от версии mstsc) - на консольную сессию не действуют времнные ограничения терминальных сессий. Тогда и выходить не обязательно, если конечно это не критично из-за нехватки терминальных лицензий. Именно по этому у меня на серверах обычно в консоли админ залогиненный - иногда нужно стартануть вручную продолжительные задачи под конец рабочего дня(по продолжительности большие чем период бездействия перед прибитием сессий) и не ждать на работе пока они отработают.<br />Собственно, можно держать открытую консоль для подобных скриптов, раз уж они работают в нерабочее время, то проблем с посылкой клавиш не в то окно не будет.</p><div class="quotebox"><cite>tgrisha пишет:</cite><blockquote><p>Вроде с plink должно быть просто, но тут авторизация почему то не работает.</p></blockquote></div><p>Судя по документации(кажется я на неё уже ссылался), putty не принимает пароль для телнет протокола в качестве ключа запуска, только для ssh/ssh2.<br />У plink есть такая опция:<br /></p><div class="quotebox"><blockquote><p>-m file&nbsp; &nbsp;read remote command(s) from file</p></blockquote></div><p>Но и она так же находится под плашкой &quot;The following options only apply to SSH connections:&quot;.&nbsp; Если ваша циска умеет пускать в консоль через ssh - может что-то и получится. Если только через telnet - не судьба, ибо и приведённый ранее <strong>omegastripes</strong> скрипт делает фактически то же что и ваш - пробует отправить данные через SendKeys, а как раз с этим проблема.</p><p>Раз VB.NET не прельщает, попробуйте всё таки ShellGuard, возможно он позволит решить задачу малой кровью(совесть за использование ломаной софтины спать давать не будет <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" />), вот пример настройки хоста(скрипт включает суперпользователя и стартует полуночного командира при подключении к ssh):<br /></p><div class="codebox"><pre><code>
DEFINE_HOST FreeNAS_Local_Skp {
  ADDRESS = ssh2:10.11.12.13:59999
  USER = sadgfjshgfkash
  SSH_PASSWORD = LJKgKJFikuydFIUydikdik
  SCRIPT = {
   Wait 10000 &quot;~]$&quot;
   If String0
      Send &quot;su -l^M&quot;
      Wait 10000 &quot;Password:&quot;
      Send &quot;mymegastrongpassword^M&quot;
      Send &quot;mc^M&quot;
   EndIf
   }
}</code></pre></div><p>В конфиге с программой есть и другие примеры, плюс достаточно неплохо прокоментированы параметры.</p><p>P.S. можно попробовать поискать свободные или бесплатные телнет клиенты умеющие скриптовать действия в консоли, но при наличии штатного телнета и Putty шансов найти что-то бесплатное с таким специфическим функционалом немного.</p>]]></content>
			<author>
				<name><![CDATA[BeS Yara]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25643</uri>
			</author>
			<updated>2014-05-29T14:33:01Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=83491#p83491</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH: Не работает скрипт в фоновом режиме]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=83489#p83489" />
			<content type="html"><![CDATA[<p>BeS Yara, огромное спасибо за ответы!<br />Но вы зря сократили скрипт. Для моего случая я не даром его удлинил. Там у меня командочка стоит:<br /></p><div class="codebox"><pre><code>
oShell.SendKeys &quot;lcli&quot; &amp; chr (13)
</code></pre></div><p>lcli - это и есть ввод команды в Cisco, чтобы перейти в режим мастера. Без него я не смогу сделать перезагрузку свитча &quot;reload&quot;. Не простой свитч, в несколько этапов получается просит. Но не в этом смысл темы. Написали всё вы интересно, конечно, но для меня непонятно, и, по моему, всё очень сложно и криво. Вроде с plink должно быть просто, но тут авторизация почему то не работает. Да, и ещё у меня естественно запускаются все задания с закрытой сессией. То бишь я разлогиниваюсь на сервере и ухожу домой. Мне этот вариант нужен, чтобы в этом варианте выполнялся скрипт. А при ваших экспериментах, то и у меня также выходило. Пока смотришь на процесс радуешься выполнению <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" />, как спустил вниз терминалку, а я через терминальную сессию работаю с сервером, то всё остановилось. Мда, буду курить и думать. Если вдруг, кто то знает уже готовый скрипт к моему решению проблемы, был бы очень признателен за помощь.</p>]]></content>
			<author>
				<name><![CDATA[tgrisha]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=32298</uri>
			</author>
			<updated>2014-05-29T13:39:41Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=83489#p83489</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH: Не работает скрипт в фоновом режиме]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=83430#p83430" />
			<content type="html"><![CDATA[<p>Немного сократил ваш код для эксперимента:<br /></p><div class="codebox"><pre><code>
Set oShell = WScript.CreateObject(&quot;WScript.Shell&quot;) 
oShell.Run &quot;telnet.exe 10.11.12.13&quot; 
WScript.Sleep 1000 
oShell.SendKeys &quot;root&quot; &amp; vbCrLf
WScript.Sleep 1000 
oShell.SendKeys &quot;password&quot; &amp; vbCrLf
WScript.Sleep 10000
oShell.SendKeys &quot;exit&quot; &amp; vbCrLf
WScript.Sleep 1000
oShell.SendKeys vbCrLf
</code></pre></div><p>Добавил в задание на запуск(под админской учёткой для простоты, Win Srv 2003 R2) - всё нормально стартует и при ручном запуске задания, и при запуске по времени. Правда у меня всегда сессия админская на сервере открыта.</p><p>Сделал учётку пользовательскую с правами входа в качестве пакетного задания, телнет стартует, но не закрывается(по списку задач) <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p><p>Обратил внимание на интересный момент: при запуске задания от админа(в админской же сессии) при переключении на другое консольное окно во время 10-ти секундной паузы последняя exit достаётся активному окну. Полагаю, при не интерактивном запуске скрипт просто не знает куда слать данные(т.е. до процесса они не доходят, раз окна активного нет).</p><p>Возможно, даже при запуске задания в сессии использовать SendKeys это не лучшая идея, при таких-то финтах.</p><p>Есть несколько вариантов:<br />1. Попробовать найти ActiveX для работы с телнетом(море их, но бесплатного не нашел).<br />2. Попробовать поработать с телнетом напрямую через System.Net.Sockets(благо VS Express для этого более чем достаточно). В форумах майкрософт есть пара тем по этому поводу, в одной даже код &quot;прототипа&quot; был, правда готового решения никто не выложил. Так что придётся курить RFC и MSDN.<br />3. Есть такая програмка - ShellGuard(telnet/ssh клиент). Помнится у неё была возможность в конфиге для каждого хоста прописать не только данные для авторизации, но и что-то вроде скрипта(например, после авторизации сделать su и запустить mc). Дальше остаётся запустить shellguerd.exe &quot;имя_конфига_хоста&quot;. Тут есть правда одно(даже два) &quot;но&quot; - программа во-первых старая(судя по копирайтам на сайте, с 2004-го года ничего не обновлялось, а судя по системным требованиям - ещё больше <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" />), во вторых, она как-бы платная(&quot;как-бы&quot; - потому что сайт через который на хоумпейдже прописана оплата, закрыт и видимо давно). Ну и придётся отдельно позаботиться о прибиении шелгварда через определённое время, т.к. сам он скорее всего не закроется.</p>]]></content>
			<author>
				<name><![CDATA[BeS Yara]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25643</uri>
			</author>
			<updated>2014-05-28T12:25:07Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=83430#p83430</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH: Не работает скрипт в фоновом режиме]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=83383#p83383" />
			<content type="html"><![CDATA[<p>BeS Yara, сам скрипт, который всё таки работает в ручную, запускается на контроллере домена и под разными пользователями пробовал, и под группой администраторов на сервере, и под доменным именем, который имеет все права. Не выполняется. Политики не смотрел, а куда смотреть то. Другие то задания выполняются, такое впечатление, что это связано как то с работой программы Telnet в фоновом режиме. Может она и не работает в фоновом режиме, или не выполняется сам скрипт Shell. В ручную запускаешь, всё автоматом подставляется и запускается командное окно, на котором я всё вижу, что всё проходит правильно и свитч перезагружается, как ставишь в задания, ничего не происходит.<br />BeS Yara, на счёт SSH, то я только в скрипте захожу по телнет. А когда в командной строке шёл разговор, то пробовал запускать утилиты putty и plink, полностью копировал ваши строки, заменял пароли свои, ничего не выходит, опять просит пароль. В ручную ввожу логи и пароль и попадаю в командую строку свитча. Я и в кавычки брал, не помогло, тогда я взял и поменял пароль по умолчанию &quot;cisco&quot;. Запускал:<br /></p><div class="codebox"><pre><code>
PUTTY.EXE -ssh cisco@10.11.12.13 -pw cisco
PUTTY.EXE -ssh -l cisco -pw cisco 10.11.12.13
</code></pre></div><p>или<br /></p><div class="codebox"><pre><code>
plink.exe -ssh cisco@10.11.12.13 -pw cisco
plink.exe -ssh -l cisco -pw cisco0.11.12.13
</code></pre></div><p>Ничего не получилось, странно.... Опять просит пароль. Пишет, что вы вошли как пользователь cisco и просит опять ввести имя User name:, после пароль. Вводишь cisco и cisco попадаю в командную строку. Не понятно в чём ведь загвоздка. Ладно, хоть бы скрипт тот выполнился, так тоже по заданию молчит. Попробую ещё раз, другого пользователя, но мне кажется не в этом причина.</p>]]></content>
			<author>
				<name><![CDATA[tgrisha]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=32298</uri>
			</author>
			<updated>2014-05-27T13:14:47Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=83383#p83383</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH: Не работает скрипт в фоновом режиме]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=83321#p83321" />
			<content type="html"><![CDATA[<p>tgrisha, может ткну пальцем в небо... Раз при ручном запуске всё работает, а из под шедулера нет, скорее всего проблема в учётке. Под какой учёткой выполняется задание? Возможно мешают какие-то ограничения для учётки - у меня несколько скриптов работающих с сетью(UNC, FTP), и ни с одним проблем нет(запуск прописал под своей пользовательской учёткой). Стоит так же проверить политики безопасности(контроллера домена, если домен есть) -&gt; назначение прав пользователей -&gt; вход в качестве пакетного задания.</p><p>Проверил запуск putty(v. 0.62), у меня работает оба варианта синтаксиса:<br /></p><div class="codebox"><pre><code>
PUTTY.EXE -ssh юзер@10.11.12.13 -pw пароль
PUTTY.EXE -ssh -l юзер -pw пароль 10.11.12.13
</code></pre></div><p>Возможно в вашем пароле присутствуют символы разбивающие его, попробуйте заключить пароль в кавычки.</p><p>P.S. Ещё один момент.&nbsp; В первом скрипте используется стандартное подключение телнет, а в последнем посте вы используете ssh. По какому протоколу всё таки работаете? В документации к putty говорится что ключ -pw работает только для протокола SSH:<br /></p><div class="quotebox"><blockquote><p>Note that the -pw option only works when you are using the SSH protocol. Due to fundamental limitations of Telnet and Rlogin, these protocols do not support automated password authentication.</p></blockquote></div><p>Так что если подключаетесь на телнет-сервер(и путти как-то это понимает, несмотря на ключ -ssh), то остальное его поведение вполне закономерно.</p>]]></content>
			<author>
				<name><![CDATA[BeS Yara]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25643</uri>
			</author>
			<updated>2014-05-26T06:54:46Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=83321#p83321</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH: Не работает скрипт в фоновом режиме]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=83257#p83257" />
			<content type="html"><![CDATA[<p>Я пробовал с помощью putty, там другая проблема, не могу зайти подставляя логин и пароль в команде.<br />Ввожу строчку в командной строке: <br />plink -ssh -l user -pw password 10.58.1.1 <br />После нажатия клавиши ввод, пишет: Using username &quot;user&quot; и далее вновь просит ввести логин, а потом пароль. Странно...</p>]]></content>
			<author>
				<name><![CDATA[tgrisha]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=32298</uri>
			</author>
			<updated>2014-05-23T17:36:35Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=83257#p83257</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: WSH: Не работает скрипт в фоновом режиме]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=83255#p83255" />
			<content type="html"><![CDATA[<p>Попробуйте Putty - <a href="http://bangbangsoundslikemachinery.blogspot.ru/2012/10/putty-class-in-vbscript.html">здесь</a> пишут, что он, вроде как, проще поддается автоматизации.</p>]]></content>
			<author>
				<name><![CDATA[omegastripes]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=29228</uri>
			</author>
			<updated>2014-05-23T13:59:45Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=83255#p83255</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[WSH: Не работает скрипт в фоновом режиме]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=83240#p83240" />
			<content type="html"><![CDATA[<p>Добрый день!<br />Подскажите, пожалуйста, почему скрипт который я создал, не работает в фоновом режиме. Когда я забиваю его в задания, в Windows и по истечении времени он не выполняется. У меня Windows Server 2003 R2, но скрипт не выполнялся и на Windows XP. В ручную он работает, все свои функции выполняет, а вот автоматически, через назначеные задания не работает. Скрипт выполняет вход на роутер Cisco и его перезагружает. Мне нужно чтобы Cisco перезагружалась в определённое вермя, по расписанию. Создал во такой скрипт, но, к сожалению, он хоть и работает автоматически, без ввода паролей и логинов, и команд, но опять же его нужно в ручную запускать, в интерактивном режиме. Как в заданиях задал, тишина. Может что то нужно дописать или исправить в Windows. Может быть telnet не умеет работать в фоновом режиме, тогда какую утилиту применить для моей цели?<br />Спасибо!<br />Сам скрипт:<br /></p><div class="codebox"><pre><code>
Set oShell = WScript.CreateObject(&quot;WScript.Shell&quot;) 
oShell.Run &quot;telnet.exe 10.16.0.1&quot; 
WScript.Sleep 1000 
oShell.SendKeys &quot;user&quot;
WScript.Sleep 1000 
oShell.SendKeys &quot;+{tab}&quot;
WScript.Sleep 1000 
oShell.SendKeys &quot;password&quot;&amp; chr (13)
WScript.Sleep 1000 
oShell.SendKeys &quot;^{Z}&quot;
WScript.Sleep 1000 
oShell.SendKeys &quot;lcli&quot; &amp; chr (13)
WScript.Sleep 1000 
oShell.SendKeys &quot;user&quot; &amp; chr (13)
WScript.Sleep 1000 
oShell.SendKeys &quot;password&quot;&amp; chr (13)
WScript.Sleep 1000 
oShell.SendKeys &quot;reload&quot; &amp; chr(13)
WScript.Sleep 1000 
oShell.SendKeys &quot;{Y}&quot;
WScript.Sleep 1000 
oShell.SendKeys &quot;Exit&quot; &amp; chr(13)
WScript.Sleep 1000
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[tgrisha]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=32298</uri>
			</author>
			<updated>2014-05-22T17:31:52Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=83240#p83240</id>
		</entry>
</feed>
