Files
php-doc-ru/reference/expect/examples.xml
sergey 93ef99fb44 review
git-svn-id: https://svn.php.net/repository/phpdoc/ru/trunk@347907 c90b9560-bf6c-de11-be94-00142212c4b1
2019-08-31 16:38:30 +00:00

141 lines
4.3 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 96c9d88bad9a7d7d44bfb7f26c226df7ee9ddf26 Maintainer: rjhdby Status: ready -->
<!-- Reviewed: yes Maintainer: sergey -->
<!-- $Revision$ -->
<chapter xml:id="expect.examples" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
&reftitle.examples;
<section xml:id="expect.examples-usage">
<title>Примеры использования Expect</title>
<example>
<title>Пример использования Expect</title>
<para>
В этом примере мы соединимся с удаленным хостом по SSH, и напечатаем время
непрерываной работы сервера.
</para>
<programlisting role="php">
<![CDATA[
<?php
ini_set("expect.loguser", "Off");
$stream = fopen("expect://ssh root@remotehost uptime", "r");
$cases = array (
array (0 => "password:", 1 => PASSWORD)
);
switch (expect_expectl ($stream, $cases)) {
case PASSWORD:
fwrite ($stream, "password\n");
break;
default:
die ("Ошибка соединения с удаленным сервером!\n");
}
while ($line = fgets($stream)) {
print $line;
}
fclose ($stream);
?>
]]>
</programlisting>
</example>
<para>
В следующем примере мы соединимся с удаленным сервером, узнаем
разрядность его операционной системы и запустим обновления указанного пакета.
</para>
<example>
<title>Еще один пример использования Expect</title>
<programlisting role="php">
<![CDATA[
<?php
ini_set("expect.timeout", -1);
ini_set("expect.loguser", "Off");
$stream = expect_popen("ssh root@remotehost");
while (true) {
switch (expect_expectl ($stream, array (
array ("password:", PASSWORD), // SSH запрашивает пароль
array ("yes/no)?", YESNO), // SSH спрашивает, сохранять ли запись хоста
array ("~$ ", SHELL, EXP_EXACT), // Мы получили доступ к коммандной оболочке!
))) {
case PASSWORD:
fwrite ($stream, "secret\n");
break;
case YESNO:
fwrite ($stream, "yes\n");
break;
case SHELL:
fwrite ($stream, "uname -a\n");
while (true) {
switch (expect_expectl ($stream, array (
array ("~$ ", SHELL, EXP_EXACT), // Мы получили доступ к коммандной оболочке!
array ("^Linux.*$", UNAME, EXP_REGEXP), // вывод uname -a
), $match)) {
case UNAME:
$uname .= $match[0];
break;
case SHELL:
// Run update:
if (strstr ($uname, "x86_64")) {
fwrite ($stream, "rpm -Uhv http://mirrorsite/somepath/some_64bit.rpm\n");
} else {
fwrite ($stream, "rpm -Uhv http://mirrorsite/somepath/some_32bit.rpm\n");
}
fwrite ($stream, "exit\n");
break 2;
case EXP_TIMEOUT:
case EXP_EOF:
break 2;
default:
die ("Случилась ошибка!\n");
}
}
break 2;
case EXP_TIMEOUT:
case EXP_EOF:
break 2;
default:
die ("Случилась ошибка!\n");
}
}
fclose ($stream);
?>
]]>
</programlisting>
</example>
</section>
</chapter>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->