phpseclib ssh2 pty telnet思科 - 如何推进 - 更多 - 在“显示版本”
我遇到了这个“显示版本”命令在思科路由器的问题,我需要前进到下一个屏幕,按下当出现“ - more more--”时键。从xx.xx.xxx.xxxphpseclib ssh2 pty telnet思科 - 如何推进 - 更多 - 在“显示版本”
限制获得用户认可星期三10月4日15点41分46秒2017年:按照代码:
function showVersion($ssh, $ansi){
$ssh->enablePTY();
$ssh->write("show version\n");
//$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\n");
//$ssh->write("\n");
$ssh->setTimeout(3);
//$ssh->read();
//$ssh->getLog();
$ansi->appendString($ssh->read());
}
上次登录。 [xxxxxxxxxx [xxx @ [34; 1mPRA-xxxxxxxx [xxxx> [xxx
Authenticated Successfully! “
”不要忘记在NVRAM上保存路由器配置,固化更改后!“
xxxxx_xxxx_xx>显示版本 bash下显示:命令未找到 [XXXXXXXXXX [XXX @ [34; 1mPRA-XXXXXXXX [ⅩⅩⅩⅩ> [XXX
与$ssh->exec("show version");
上次登录:星期三15年10月4日:41:46 2017 from xx.xx.xxx.xxx
限制访问授权用户。 [xxxxxxxxxx [xxx @ [34; 1mPRA-xxxxxxxx [xxxx> [xxx
Authenticated Successfully! “
”不要忘记在NVRAM上保存路由器配置,固化更改后!“
xxxxx_xxxx_xx> /斌/庆典:显示:找不到命令
你能帮我吗?我会非常感激!
我也想知道在屏幕上显示路由器日志的最佳方式:
$ssh->read();
$ssh->read(NET_SSH2_READ_REGEX);
$ssh->getLog();
$ansi->getScreen();
谢谢
我需要通过按某个键“前进到下一个屏幕 - 显示更多 - “出现。
该代码正在查找“--More--” - 而不是“--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 > /斌/庆典:显示:找不到命令
你得到,这让我怀疑,如果你真正能够做到“秀版”,甚至用SSH像腻子或OpenSSH的事实。如果没有,那么这个问题与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[[email protected][34;1mPRA-xxxxxxxx[xxxx>
- 即@[34;1m
位是ANSI。
或许也值得玩$ansi->getHistory()
。