Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: подключение к свичам по telnet

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
eFusion
Отправлено: 06 Августа, 2013 - 14:31:16
Post Id


Новичок


Покинул форум
Сообщений всего: 49
Дата рег-ции: Апр. 2013  
Откуда: Украина, Донецк


Помог: 0 раз(а)




Задача:
сделать мини-вэб морду, которая будет выводить в браузер информацию по выбранному на порту на свиче.

Пока реализую первый этап - подключиться с свичу вот так:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $con = pfsockopen("xxx.xx.x.xx", 23, $errno, $errstr, 10);
  3.  $out = "XXXXXXX\r\n";
  4.     fwrite($con, $out);
  5.     $out = "XXXXXXXX\r\n";
  6.     $command = "enable\r\n";
  7.     fwrite($con, $out);
  8.     while (!feof($con)) {
  9.         echo fread($con,128);
  10.         fwrite($con, $command);
  11.         sleep(1);
  12.         fwrite($con,"\n\r");
  13.     }
  14.     fwrite($con, $command);
  15. fclose($con);
  16. echo "socket close";
  17. ?>

Проблема - на свич я попадаю, логинюсь, но далее 2 исхода:
- зацикливается ввод enable
или
- получаю приглашение свича es31244f> и дальше терминал висит ждет не понятно чего.
Есть идеи как реализовать, где почитать.
Не предлагать классы phpTelnet.php или Mikrotic.php т.к. хочется разобраться в вопросе.
Буду очень благодарен.
 
 Top
Мелкий Супермодератор
Отправлено: 06 Августа, 2013 - 14:39:43
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




eFusion пишет:
и дальше терминал висит ждет не понятно чего.

eFusion пишет:
while (!feof($con)) {

А feof для сетевых операций - закрытие сокета. Который будет только при обрыве связи или через огромный по-умолчанию таймаут полной тишины в сокете.

eFusion пишет:
Не предлагать классы phpTelnet.php или Mikrotic.php т.к. хочется разобраться в вопросе.

Так их и поковыряйте, как сделано.


-----
PostgreSQL DBA
 
 Top
eFusion
Отправлено: 06 Августа, 2013 - 19:09:01
Post Id


Новичок


Покинул форум
Сообщений всего: 49
Дата рег-ции: Апр. 2013  
Откуда: Украина, Донецк


Помог: 0 раз(а)




А есть ли возможность в определенном месте кода php вызвать bash-скрипт, который выполнит вход по telnet а потом продолжать выполнение php?
 
 Top
Мелкий Супермодератор
Отправлено: 06 Августа, 2013 - 19:36:26
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




exec и компания


-----
PostgreSQL DBA
 
 Top
eFusion
Отправлено: 10 Августа, 2013 - 15:52:18
Post Id


Новичок


Покинул форум
Сообщений всего: 49
Дата рег-ции: Апр. 2013  
Откуда: Украина, Донецк


Помог: 0 раз(а)




Удалось сделать что требовалось - мб кому пригодится:

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.     $con = pfsockopen($_GET["switchIp"], 23, $errno, $errstr, 10);
  3.     <-->echo "socket open\n";
  4.     <-->$login = "xxxxx\r\n";
  5.     <-->fwrite($con, $login);
  6.     <-->$pass = "xxxxx\r\n";
  7.     <-->fwrite($con, $pass);
  8.    <------>$command = "enable\r\n";
  9.     <-->sleep(1);
  10.     <-->fwrite($con, $command);
  11.     <-->sleep(1);
  12.     <-->fwrite($con,"\r\n");
  13.     <-->sleep(1);
  14.     <--><------>echo fread($con, 512);
  15.     <-->fwrite($con,"cable-diagnostic ".$_GET["switchPort"]."\r\n");
  16.     <-->sleep(1);
  17. <------><------>echo fread($con, 512);
  18.     <-->fwrite($con, "show mac address-table port ".$_GET["switchPort"]."\r\n");
  19.     <-->sleep(1);
  20. <------><------>echo fread($con, 512);
  21.     <-->fwrite($con, "show interfaces ".$_GET["switchPort"]."\r\n");
  22.     <-->sleep(1);
  23. <------><------>echo fread($con, 4096);
  24. fclose($con);
  25.     echo "socket close\n";
  26. ?>


Можно закрывать.

(Отредактировано автором: 10 Августа, 2013 - 15:54:07)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с сетью »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB