Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Mais de 10 postagens
Mais de 10 postagens
Tópico Autor
Mensagens: 15
Sexo: Masculino
Localização: Minas Gerais - Uberlandia - Brasil
Contato:

Duvidas sobre explode no PHP

07-06-2011 15:57

Boa tarde pessoal, estou fazendo um script que faz um telnet em um roteador, e atravez da web eu quero fazer algumas configurações.

Tipo, tenho um cliente com uma lp(0123456) eu busco essa lp pelo formulario, a pagina faz uma solicitação de telnet em um roteador e pega as variaveis que eu digite como por exemplo, lp, usuario, senha, ip do roteador e a função que eu quero, o FOR que faz esse telnet é o seguinte:

for ($i = 0; $i < count($hosts); $i++) { $host = $hosts[$i]; $port = '23'; $cfgServer = $host; $cfgPort = $port; $cfgTimeOut = 3; @$usenet = fsockopen($cfgServer, $cfgPort, &$errno, &$errstr, $cfgTimeOut); @fputs ($usenet, "$usuario\r\n"); @fputs ($usenet, "$senha\r\n"); //Entra em modo de super usuario @fputs ($usenet, "enable\r\n"); //Entra no modo de configuração @fputs ($usenet, "configure terminal\r\n"); //Busca a LP que eu informei que no caso é 0123456 @fputs ($usenet, "show running-config | block $lp\r\n"); if($acao == "fechar_loop") { // desconectar interface @fputs ($usenet, "no $linha1[0] $linha1[1] $linha1[2] $linha1[3] $linha1[4] $linha1[5] $linha1[6] $linha1[7]\r\n"); @fputs ($usenet, "no $linha2[0] $linha2[1] $linha2[2] $linha2[3] $linha2[4] $linha2[5] $linha2[6] $linha2[7]\r\n"); //fechar loop @fputs ($usenet, "$linha1[0] $linha1[1] $linha1[2] $linha1[3] $linha1[4] $linha1[5] $linha1[6] $linha1[6]\r\n"); @fputs ($usenet, "$linha2[0] $linha2[1] $linha2[2] $linha2[3] $linha2[4] $linha2[5] $linha2[7] $linha2[7]\r\n"); } elseif($acao == "retirar_loop") { //retirar loop @fputs ($usenet, "$linha1[0] $linha1[1] $linha1[2] $linha1[3] $linha1[4] $linha1[5] $linha1[6] $linha1[6]\r\n"); @fputs ($usenet, "$linha2[0] $linha2[1] $linha2[2] $linha2[3] $linha2[4] $linha2[5] $linha2[7] $linha2[7]\r\n"); //conectar interface @fputs ($usenet, "$linha1[0] $linha1[1] $linha1[2] $linha1[3] $linha1[4] $linha1[5] $linha1[6] $linha1[7]\r\n"); @fputs ($usenet, "$linha2[0] $linha2[1] $linha2[2] $linha2[3] $linha2[4] $linha2[5] $linha2[6] $linha2[7]\r\n"); } else { //echo "Nenhuma ação escolhida<br>"; } @fputs ($usenet, "end\r\n"); @fputs ($usenet, "exit\r\n"); if(!$usenet) { print "$num - $host Falhou\n"; } else { $num = $i + 1; fwrite($logfile,"HOST: $host\n"); while (!feof($usenet)) { fwrite($logfile,"$result"); $result = fgets($usenet, 2048); //echo "$result<br>"; } //print "$num - $host - Configurado com SUCESSO!\n"; } }

Os comando acima que contem fputs é o comando que eu irei executar no roteador, porem quando eu faço uma busca da lp, ele grava o resultado num arquivo txt, e eu tenho que tratar esse arquivo txt com explode para poder pegar somente algumas linhas, e o codigo do explode ficaria assim:

//###################################################################### $file_lines = file("script-log.txt"); $linha1=explode(" ",$file_lines[17]); $linha2=explode(" ",$file_lines[18]); echo "LINHAS"; echo "<br><br>"; echo " $linha1[0] $linha1[1] $linha1[2] $linha1[3] $linha1[4] $linha1[5] $linha1[6] $linha1[7]"; echo "<br>"; echo " $linha2[0] $linha2[1] $linha2[2] $linha2[3] $linha2[4] $linha2[5] $linha2[6] $linha2[7]"; echo "<br><br>"; //######################################################################

Minha é a seguinte, como que eu faço para pegar os resultados dessas linhas 17 e 18 do explode e jogar nas linhas que contem:
@fputs ($usenet, "$linha2[0] $linha2[1] $linha2[2] $linha2[3] $linha2[4] $linha2[5] $linha2[6] $linha2[7]";

Ah, ia esquecendo o campo select que eu tenho no formulario que tem as opções de fechar_loop e retirar_loop, que ao selecionar elas o comando faz o que ta escrito nos @fputs.

Bom pessoal, acho que o que eu queria explicar era isso, a minha duvida era essa, se tem como pegar os dados de um explode e jogar dentro desses IF.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17563
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Duvidas sobre explode no PHP

07-06-2011 17:01

Então a dúvida principal é retornar as linhas 17 e 18 de um arquivo txt?
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 10 postagens
Mais de 10 postagens
Tópico Autor
Mensagens: 15
Sexo: Masculino
Localização: Minas Gerais - Uberlandia - Brasil
Contato:

Duvidas sobre explode no PHP

07-06-2011 17:12

Isso, pegar os campos do explode

echo " $linha1[0] $linha1[1] $linha1[2] $linha1[3] $linha1[4] $linha1[5] $linha1[6] $linha1[7]";

e jogar no meu if, preciso saber se tem como fazer isso.

Um exemplo da linha seria isso:

mpls static-ftn bridge 99773270-ULA_1423 vc-qos ef so3/1/0:3:3:1:0 so3/1/0:2:2:1:8
mpls static-ftn bridge 99773270-ULA_1423 vc-qos ef so3/1/0:2:2:1:8 so3/1/0:3:3:1:0

onde cada palavra eu separava com espaço e colocava na linha ($linha1[0]) e assim por diante.

Ficaria assim:

mpls static-ftn bridge 99773270-ULA_1423 vc-qos ef so3/1/0:3:3:1:0 so3/1/0:2:2:1:8

Ae com explode ficaria assim:

$linha1[0] = mpls $linha1[1] = static-ftn $linha1[2] = bridg $linha1[3] = 99773270-ULA_1423 $linha1[4] = vc-qos $linha1[5] = ef $linha1[6] = so3/1/0:3:3:1:0 $linha1[7] = so3/1/0:2:2:1:8

Ae com esse dados do explode, quero pegar eles no if conforme codigo descrito nas msg anteriores que ficaria assim:

@fputs ($usenet, "no $linha1[0] $linha1[1] $linha1[2] $linha1[3] $linha1[4] $linha1[5] $linha1[6] $linha1[7]\r\n");

Só que nao to conseguindo fazer isso.

Nem sei se tem jeito tambem.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17563
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Duvidas sobre explode no PHP

07-06-2011 17:19

Veja esse exemplo abaixo.

O script irá ler o arquivo txt, em seguida, irá separar as linhas do arquivo com explode e irá listar somente as linhas especificadas.

<?php $dados="lista.txt"; $arq = join("",file("$dados")); $linha = explode("\n", $arq); $var = ""; for($i=0;$i<count($linha);$i++){ if($i==17 OR $i==18) { $var.=$linha[$i]; } } echo $var; ?>

0
A melhor hospedagem para o seu site HostGator!

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado