Wabby Skrevet 29. september 2008 Del Skrevet 29. september 2008 (endret) Hei, skal bruke TelNet for å kople til en switch og hente ut Mac-adresser. Desverre så henger den... Årsaken er at når denne "show mac-addresses" kjøres så viser den X antall linjer deretter "-- MORE --, next page: Space, next line: Enter, quit: Control-C" Hvordan kan jeg få den til å fortsette her? Dersom det er enklere måter å kjøre Telnet kommandoer på så er jeg åpen for forslag. Kan også gjøres i .sh. <?php //$value1=$_POST['text']; $ip=$_GET['ip']; $port=$_GET['port']; $cfgServer = $ip; //IP of your router $cfgPort = $port; //port, 22 if SSH $cfgTimeOut = 10; $usenet = fsockopen($cfgServer, $cfgPort, &$errno, &$errstr, $cfgTimeOut); ?> <textarea name="ios" cols="100" rows="40" id="ios"> <?php if(!$usenet) { echo "Connection failed\n"; echo "To: ".$ip; exit(); } else { echo "Connected\n"; fputs ($usenet, "Brukernavn\r\n"); fputs ($usenet, "passord\r\n"); fputs ($usenet, "show Mac-address\r\n"); fputs ($usenet, "exit\r\n"); while (!feof($usenet)) { echo ". ".fgets($usenet, 128)."\n"; } } ?> </textarea> Endret 30. september 2008 av Wabby Lenke til kommentar
OISNOT Skrevet 29. september 2008 Del Skrevet 29. september 2008 Er egentlig ikke sikker... kanskje noe slikt? Lenge siden eg skrev kode for telnet function resource_get_content($res, $length = 128) { $content = ''; while (!feof($res)) { $content .= fgets($res, $length); } return $content; } define('TELNET_MORE_CONTENT', '-- MORE --, next page: Space, next line: Enter, quit: Control-C'); define('TELNET_NEXTLINE', "\r\n"); //or just \n ? fputs($usenet, "show Mac-address\r\n"); $content = resource_get_content($usenet); $lines = explode(TELNET_NEXTLINE, $content); $lastline = end($lines); while ($lastline == TELNET_MORE_CONTENT) { array_pop($lines); fputs ($usenet, ' '); // add NEXTLINE? $content = resource_get_content($usenet); $lines = array_merge($lines, explode(TELNET_NEXTLINE, $content)); $lastline = end($lines); }; fputs($usenet, "exit\r\n"); print_r($lines); Personlig ville eg lagd den om til en klasse. Lenke til kommentar
Wabby Skrevet 29. september 2008 Forfatter Del Skrevet 29. september 2008 Den henger nå også... Det som er litt kjipt er at jeg kan ikke se hva den gjør i bakgrunnen. Men vil tro at den ikke klarer å trigge på "more" biten... Lenke til kommentar
OISNOT Skrevet 29. september 2008 Del Skrevet 29. september 2008 telnet returnerer kanskje ikke EOF... function resource_get_content($res) { sleep(1); return stream_get_contents($res); } Lenke til kommentar
Wabby Skrevet 29. september 2008 Forfatter Del Skrevet 29. september 2008 (endret) Da kom den i allefall videre. men sier feil passord og bruker... Tror jeg må få lagt inn en delay fra den logger på til den kan starte å skrive.... kanskje 500ms mellom innlogging og skrive... Edit: Den logger seg på nå. Prøvd noe så enkelt som "show time" den funker. Men returnerer veldig kryptisk data. Skal poste på nytt etter litt mer testing... EDIT2: siste output hvor den stopper: 000c76-a7d1c8 25 000d61-3d3d3b 1 000d9d-b8c401 25 [24;1H[2K-- MORE --, next page: Space, next line: Enter, quit: Control-C[24;1H ) While stopper da den ikke klarer å tolke --MORE-- riktig... må få til en "like" enn == ... Huff, dette er lengesiden merker jeg. EDIT3: Preg_match løste det problemet... Men den er meget ustabil. Bruker lang tid og henger mye. Skulle ønske den var noe raskere enn dette :S Endret 29. september 2008 av Wabby Lenke til kommentar
Wabby Skrevet 30. september 2008 Forfatter Del Skrevet 30. september 2008 Løst ved bruk av Shellscript! Fikk PM i natt om en som ville selge meg et script som tok over ca 1 min å kjøre. For min del er det 17 min da det er 17 switcher... Dette gjør jobben på 10 sec per switch. https://www.diskusjon.no/index.php?showtopic=1014784 Merket også at PHP og telnet er noe ustabilt da man ikke ser hva den gjør i bakgrunnen. Telnet er skummelt nok i seg selv, ukryptert og ustabilt. Tror jeg fant den beste måten Ellers takk for gode svar. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå