2017-10-05 8 views
0

J'ai des problèmes avec cette commande "show version" sur le routeur cisco, je dois passer à l'écran suivant en appuyant sur un lorsque "--show more--" apparaît. Suivez le code:phpseclib ssh2 pty telnet cisco - comment avancer --more-- dans "show version"

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()); 

} 

Dernière connexion: Mer 4 octobre 2017 15:41:46 de xx.xx.xxx.xxx

Accès restreint aux utilisateurs autorisés. [xxxxxxxxxx [xxx @ [34; 1mPRA-xxxxxxxx [xxxx> [xxx

Authentifié avec succès!

"N'OUBLIEZ PAS DE CONFIGURER LA CONFIGURATION DU ROUTEUR SUR LA NVRAM, APRÈS CONSOLIDER LES MODIFICATIONS !!"

xxxxx_xxxx_xx> show version bash: show: command not found [xxxxxxxxxx @ [xxx [34; 1mPRA-xxxxxxxx [xxxx> [xxx

avec $ssh->exec("show version");

Dernière connexion: Mer 4 octobre 15 : 41: 46 2017 à partir de xx.xx.xxx.xxx

Accès restreint aux utilisateurs autorisés. [xxxxxxxxxx [xxx @ [34; 1mPRA-xxxxxxxx [xxxx> [xxx

Authentifié avec succès!

"N'OUBLIEZ PAS DE CONFIGURER LA CONFIGURATION DU ROUTEUR SUR LA NVRAM, APRÈS CONSOLIDER LES MODIFICATIONS !!"

xxxxx_xxxx_xx>/bin/bash: show: command not found

Voulez-vous me aider? Je serai très reconnaissant!

Je voudrais aussi connaître la meilleure façon de montrer le journal du routeur à l'écran:

$ssh->read(); 
$ssh->read(NET_SSH2_READ_REGEX); 
$ssh->getLog(); 
$ansi->getScreen(); 

merci

Répondre

0

je dois passer à l'écran suivant en appuyant sur une touche lorsque " --show more-- "apparaît.

Le code est à la recherche de "--More--" - pas "--show plus--". Peut-être que c'est ce que tu voulais dire? En outre, vous faites $prompt_saida.= $ssh->read(NET_SSH2_READ_REGEX);. Peut-être essayer de faire $prompt_saida.= $ssh->read(); à la place. Comme cela est que vous attendez essentiellement pour le numéro 2 (depuis NET_SSH2_READ_REGEX est défini par define('NET_SSH2_READ_REGEX', 2); pour afficher et 2 ne correspond pas à --More-- il pourrait entraîner la break être appelé prématurément.

xxxxx_xxxx_xx >/bin/bash: show: command not found

Le fait que vous obtenez qui me demande si vous êtes réellement capable de faire "show version" même avec un client SSH comme PuTTY ou OpenSSH. Si ce n'est pas le cas, alors ce problème n'a rien à voir avec phpseclib et en discuter va probablement vous distraire des experts Cisco IOS (?) Qui pourraient vous aider, c'est à dire qu'ils ont probablement cessé de lire après avoir vu tout le code PHP.

Je voudrais aussi connaître la meilleure façon de montrer le journal du routeur à l'écran:

Je suppose que dépendent aurait la façon dont vous définissez la meilleure mais, comme indiqué précédemment, $ssh->read(NET_SSH2_READ_REGEX) ne le fait pas faites ce que vous semblez penser. $ssh->read('#pattern#', NET_SSH2_READ_REGEX) fait mais pas $ssh->read(NET_SSH2_READ_REGEX).

$ssh->getLog() ne fait rien si vous avez activé la journalisation (par exemple define('NET_SSH2_LOGGING', 2)). Il montre également des paquets SSH non cryptés, de l'échange de clés à l'ouverture du canal, etc. Ce n'est probablement pas ce que vous voulez.

Comme pour $ansi->getScreen() ... cela pourrait fonctionner si vous n'aimez pas les codes ANSI dans votre sortie. Et vous en avez. par exemple. [xxxxxxxxxx[[email protected][34;1mPRA-xxxxxxxx[xxxx> - ce bit @[34;1m est ANSI.

Peut-être aussi vaut la peine de jouer avec $ansi->getHistory().