phpseclib ssh2 pty telnet cisco - 如何推进 - 更多 - “show version”
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了phpseclib ssh2 pty telnet cisco - 如何推进 - 更多 - “show version”相关的知识,希望对你有一定的参考价值。
我在cisco路由器上遇到这个“show version”命令时遇到问题,当出现“--show more--”时,我需要按一个键进入下一个屏幕。遵循以下代码:
function showVersion($ssh, $ansi){
$ssh->enablePTY();
$ssh->write("show version
");
//$ssh->exec("show version");
$prompt_saida = "";
$ssh->setTimeout(3);
$prompt_temp = $ssh->read('#--More--|[>]#', NET_SSH2_READ_REGEX);
$prompt_saida = $prompt_temp;
$ssh->setTimeout(3);
while($prompt_temp = $ssh->read('#--More--|[>]#', NET_SSH2_READ_REGEX)){
$ssh->setTimeout(3);
$prompt_saida.= $ssh->read(NET_SSH2_READ_REGEX);
if (!preg_match('#--More--$#', $prompt)) { break; }
$ssh->write(' ');
$ssh->setTimeout(3);
}
return $prompt_saida;
//$ssh->write("terminal length 0
");
//$ssh->write("
");
$ssh->setTimeout(3);
//$ssh->read();
//$ssh->getLog();
$ansi->appendString($ssh->read());
}
上次登录时间:2017年10月4日星期三15:41:46 xx.xx.xxx.xxx
限制访问授权用户。 [xxxxxxxxxx [xxx @ [34; 1mPRA-xxxxxxxx [xxxx> [xxx]
认证成功!
“在整合改动后,不要忘记在NVRAM上保存路由器配置!!”
xxxxx_xxxx_xx> show version bash:show:command not found [xxxxxxxxxx [xxx @ [34; 1mPRA-xxxxxxxx [xxxx> [xxx]
与$ssh->exec("show version");
上次登录时间:2017年10月4日星期三15:41:46 xx.xx.xxx.xxx
限制访问授权用户。 [xxxxxxxxxx [xxx @ [34; 1mPRA-xxxxxxxx [xxxx> [xxx]
认证成功!
“在整合改动后,不要忘记在NVRAM上保存路由器配置!!”
xxxxx_xxxx_xx> / bin / bash:show:未找到命令
你能帮我吗 ?我将非常感激!
我还想知道在屏幕上显示路由器登录的最佳方法:
$ssh->read();
$ssh->read(NET_SSH2_READ_REGEX);
$ssh->getLog();
$ansi->getScreen();
谢谢
当出现“--show more--”时,我需要通过按键前进到下一个屏幕。
代码正在寻找“ - 更多 - ” - 而不是“ - 显示更多 - ”。也许这就是你的意思?
另外,你正在做$prompt_saida.= $ssh->read(NET_SSH2_READ_REGEX);
。也许尝试做$prompt_saida.= $ssh->read();
而不是。因为你基本上等待数字2(因为NET_SSH2_READ_REGEX由define('NET_SSH2_READ_REGEX', 2);
定义显示而2不等于 - 更多 - 因此它可能导致break
过早被调用。
xxxxx_xxxx_xx> / bin / bash:show:未找到命令
你得到这个的事实让我想知道你是否真的能够做“显示版本”,即使是像PuTTY或OpenSSH这样的SSH客户端。如果没有,则此问题与phpseclib无关,并且讨论它可能会分散您对可以帮助您的Cisco ios(?)专家的注意力。即。他们看到所有PHP代码后可能会停止阅读。
我还想知道在屏幕上显示路由器登录的最佳方法:
我想这取决于你如何定义最佳,但如前所述,$ssh->read(NET_SSH2_READ_REGEX)
不会做你认为它做的事情。 $ssh->read('#pattern#', NET_SSH2_READ_REGEX)
但不是$ssh->read(NET_SSH2_READ_REGEX)
。
如果启用了日志记录,$ssh->getLog()
只会执行操作(例如define('NET_SSH2_LOGGING', 2)
)。它还显示未加密的SSH数据包,从密钥交换到通道开放等。这可能不是你想要的。
至于$ansi->getScreen()
......如果您不喜欢输出中的ANSI代码,那可能会有效。你确实有一些。例如。 [xxxxxxxxxx[xxx@[34;1mPRA-xxxxxxxx[xxxx>
- @[34;1m
位是ANSI。
也许值得它与$ansi->getHistory()
玩。
以上是关于phpseclib ssh2 pty telnet cisco - 如何推进 - 更多 - “show version”的主要内容,如果未能解决你的问题,请参考以下文章