JQuery AJAX Bash Telnet постоянно обновляет скрипт Div

0

У меня есть сценарий bash, который подключается к порту telnet и открывает некоторые диагностические данные и выходит из него и открывает другой порт telnet, чтобы контролировать его, сценарий отлично работает, и я могу выполнить его с помощью jquery и ajax, но у меня возникают проблемы с постоянным обновлением div с помощью результаты Я не хочу, чтобы вызывать одну и ту же команду при перезагрузке php в div, просто обновлять информацию о результатах, а предложения оценивают код ниже

Сценарий bash довольно простой:

#!/bin/bash

{
sleep 2
echo diag gps info
sleep 2
echo exit
} | telnet 10.10.2.1 1700

telnet 10.10.2.1 1800

Файл HTML/PHP:

<!DOCTYPE HTML >
<html>
<head>
<meta charset="UTF-8">
<title>diag stuff</title>
</head>
<body>
<button id="startGpsDiag" >Start gps diag</button>

<div id="results"></div>

</body>
<!-- <script langauge="JavaScript" src="{#javaScriptDir#}/jquery-min-1.8.js">    </script>   -->
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>   

jQuery(document).ready(function () {
    jQuery.ajaxSetup({cache: false});       

    jQuery("#startGpsDiag").click(function  () { 
        //  alert('true');
        callGpsDiag();             
    });        

    function callGpsDiag(){
    jQuery.ajax({
              type: "POST",
              url: "gpsDiag.php",
              data: "execGpsDiag=1",

              success: function(data) { 
              alert('success');
              jQuery('#results').html(data);

              setInterval(function() { 
                         jQuery('#results').html(data);
              },3000);    
              },
              error: function() {
              //    alert('fail');
              }                               
   });      
}            
});    
</script>

Файл логики php:

if(isset($_POST['execGpsDiag'])) {
    echo system('./gpsdiag.sh');
}   

Я могу отредактировать файл bash и удалить последнее соединение telnet, которое я хочу контролировать, и переместить его в php-логику, если мы не изначально устанавливаем диагностику монитора порта

Я также попытался сделать echo system(telnet 10.10.1.2 1800) и попробовал setinterval сам по себе просто загрузить порт мониторинга, но не смог получить никаких результатов

если я запустил gpsDiag.php из командной строки либо с помощью echo system(telnet 10.10.1.2 1800) либо с помощью echo system('./gpsdiag.sh'); он работает и отображает результаты на экран.

Теги:
telnet

1 ответ

0

Вам нужно установить тайм-аут и вызвать функцию внутри обратного вызова таймаута.

function callGpsDiag(){
  jQuery.ajax({
    type: "POST",
    url: "gpsDiag.php",
    data: "execGpsDiag=1",
    success: function(data){ 
        alert('success');
        jQuery('#results').html(data);

        setTimeout(function(){ 
            callGpsDiag();
        },3000);
     },
     error: function() {
        //alert('fail');
     }
  });  

}
  • 0
    это помогает ему продолжать вызывать страницу, но все еще не может получить вывод из порта telnet для отображения. Я знаю, что возможно, возможно, мне сначала нужно записать вывод в файл?
  • 0
    Нужно ли что-то делать с выходным буфером?
Показать ещё 8 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню