Telnet zum cisco-switch mit php

Muss ich telnet zum cisco-switch mit php und ausführen show interface status Befehl und die Ergebnisse erhalten. Ich habe versucht, einige php-Klassen, die ich gefunden über das internet, aber keiner von Ihnen konnte eine Verbindung zum Gerät. Also habe ich versucht, das Skript zu schreiben und mich, aber ich habe das gleiche problem, ich kann eine Verbindung zum Gerät.

Den host sendet mir banner-Nachricht und dann neue Zeile mit username:.
Ich schicke meinen Benutzernamen mit \r\n warten Sie einige Zeit und versucht, Daten zu Lesen, aber es sieht für mich wie der Gastgeber ist, einfach zu ignorieren, meine neue-Zeile-Zeichen. Dies ist die Antwort, die ich bekam (explode('\n') auf Antwort):

Array
(
    [0] => % 
    [1] => User Access Verification
    [2] => Username:  timeout expired!
)

Warum habe ich nicht bekommen Eingabeaufforderung für das Passwort? Ich habe es versucht mit telnet senden Header, und ohne, keine änderung. Kann jemand mir bitte helfen?

Hier ist mein code

<?
$host = "switchName";
$name = "name";
$pass = "pass";
$port = 23;
$timeOut = 15;
$connected = false;
$skipNullLines = true;
$timeout = 125000;


$header1=chr(0xFF).chr(0xFB).chr(0x1F).chr(0xFF).chr(0xFB).chr(0x20).chr(0xFF).chr(0xFB).chr(0x18).chr(0xFF).chr(0xFB).chr(0x27).chr(0xFF).chr(0xFD).chr(0x01).chr(0xFF).chr(0xFB).chr(0x03).chr(0xFF).chr(0xFD).chr(0x03).chr(0xFF).chr(0xFC).chr(0x23).chr(0xFF).chr(0xFC).chr(0x24).chr(0xFF).chr(0xFA).chr(0x1F).chr(0x00).chr(0x50).chr(0x00).chr(0x18).chr(0xFF).chr(0xF0).chr(0xFF).chr(0xFA).chr(0x20).chr(0x00).chr(0x33).chr(0x38).chr(0x34).chr(0x30).chr(0x30).chr(0x2C).chr(0x33).chr(0x38).chr(0x34).chr(0x30).chr(0x30).chr(0xFF).chr(0xF0).chr(0xFF).chr(0xFA).chr(0x27).chr(0x00).chr(0xFF).chr(0xF0).chr(0xFF).chr(0xFA).chr(0x18).chr(0x00).chr(0x41).chr(0x4E).chr(0x53).chr(0x49).chr(0xFF).chr(0xF0);
$header2=chr(0xFF).chr(0xFC).chr(0x01).chr(0xFF).chr(0xFC).chr(0x22).chr(0xFF).chr(0xFE).chr(0x05).chr(0xFF).chr(0xFC).chr(0x21);


function read_string()
{
    global $fw,$host,$skipNullLines; 
    $string = "";

    while( !feof($fw) )
    {
        $read = fgets($fw);

        $string .= $read;

        //Probably prompt, stop reading
        if( strpos($read, ':') !== FALSE || strpos($read, '> (enable)') !== FALSE || strpos($read, $host.'#') !== FALSE)
        { break; }
    }

    $string =  explode("\n", $string);

    //Get rid of null lines
    $ret = array();
    for($i = 0; $i<count($string); $i++)
    {
        if( trim($string[$i]) == '' && $skipNullLines ) continue;

        $ret[] = $string[$i];
    }

    return $ret;
}

function send_string($string, $force=false)
{
    GLOBAL $timeout,$fw;
    $string = trim($string);

    //execute only strings that are preceded by "show" (if not forced)
    if(!$force && strpos($string, 'show ') !== 0) 
    {
        return 1;
    }

    fputs($fw, $string."\r\n");
    echo("SEND:".$string."\r\n");
    usleep($timeout);
}


$fw = fsockopen($host, $port, $errno, $errorstr, $timeOut);    
if($fw == false)
{
    echo("Cant connect");
}
else
{
    echo("Connected<br>");
    $connected = true;

    stream_set_timeout($fw, $timeout);

// fputs($fw, $header1);
// usleep($timeout);
// fputs($fw, $header2);
// usleep($timeout);
    print_r(read_string());
    send_string("test", true);
    print_r(read_string());
}

fclose($fw);
?>

UPDATE
Wenn ich senden Benutzernamen auf den ersten, und dann habe ich auch gelesen, bekomme ich die Passwortabfrage. Ich verstehe nicht, warum kann ich Erstens das Lesen von Nachrichten vom host und senden Sie dann meine Antwort. So funktioniert es für mich jetzt (Antwort senden und dann Lesen-Eingabeaufforderung) ist kein-Sinn! (und ich habe immer noch "% Authentifizierung ist fehlgeschlagen." message-Ereignis mit dem richtigen Passwort/name).

...
$connected = true;
stream_set_timeout($fw, $timeout);
send_string("name", true);
send_string("password", true);
print_r(read_string());
...

InformationsquelleAutor Buksy | 2012-05-18

Schreibe einen Kommentar