Gå til innhold

[LØST] Bruke PHP til TelNet


Anbefalte innlegg

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 av Wabby
Lenke til kommentar
Videoannonse
Annonse

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

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 av Wabby
Lenke til kommentar

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...