2012-11-14 1 views
1

J'essaie d'afficher la sortie d'un script bash sur un div sur ma page Web. Mais quand je charge la page rien n'apparaît. Voici ce que j'ai jusqu'ici.La sortie du script bash ne s'affiche pas sur la page Web

Fonction Jquery ajax. Discon est le nom de la div l'info est censé être apparaître dans.

$(document).ready(function() { 
    $.ajax({ 
      type: "POST", 
      url: "discon.php", 
      data: "Discontinuities", 
      success: function(data) { 
      $('#discon').html(data) 
      } 
    }); 
}); 

Voici mon php pour prendre ce qui est dans le jquery. Notez les parties commentées sont des endroits où j'essayais différentes options en php. J'ai essayé plusieurs et rien ne semble fonctionner.

<?php 

echo passthru('/opt/bin/enc_current_test'); 

//$discon = exec('/opt/bin/enc_current_test', $o, $r); 
//if ($r != 0){ 
//  print 'Error running command'; 
//  exit($r); 
//} 
//else{ 
//  print implode("\n", $o); 
//} 

?> 

J'ai un autre script bash qui affiche à la même page dans une autre division et il fonctionne très bien si ma question est pourquoi celui-ci me donne un problème. Voici le script bash.

#!/bin/bash 

while [ true ] 
do 
    counter=0 

    clear 
    date 

    dir=/test/`date "+%Y/%m/%d"` 

    cd $dir 
    echo Writing On: `pwd` 

      for i in `ls` 
      do 
        if [ -n "$(ls -l $i/* | grep `date "+ %k:%M"`)" ]; 
        then 
          echo $i 
          let "counter+=1" 
        fi 
      done 
    echo 
    echo "Total Current Streams: " 
    echo $counter 
    sleep 60 
    clear 
done 

Je pense qu'il est parce que le script dort pendant 60 secondes, mais j'ajouté la balise dans mon html pour actualiser la page à ce même intervalle et il ne fonctionne toujours pas. Une idée de pourquoi ce script ne s'afficherait pas? Un peu à perte à ce stade. Merci pour vos réponses.

+0

Vous dites discon est le nom de la div, mais votre sélecteur jQuery est $ ("# discon"). Bien sûr, vous n'avez pas confondu le nom/id? – Osiris

Répondre

1

votre script bash court boucle infinie

le serveur Web fait attendre la réponse du scénario et ne l'envoie pas au client (navigateur)

essayer de commenter en boucle et commande sommeil dans script bash

aussi je suppose que vous ne voulez pas voir des caractères supplémentaires écrits par ordre clair, afin de les commenter trop

#!/bin/bash 

#while [ true ] 
#do 
    counter=0 

# clear 
    date 

    dir=/test/`date "+%Y/%m/%d"` 

    cd $dir 
    echo Writing On: `pwd` 

      for i in `ls` 
      do 
        if [ -n "$(ls -l $i/* | grep `date "+ %k:%M"`)" ]; 
        then 
          echo $i 
          let "counter+=1" 
        fi 
      done 
    echo 
    echo "Total Current Streams: " 
    echo $counter 
# sleep 60 
# clear 
#done 
+0

Merci beaucoup, je pensais que cela pourrait avoir à faire avec la boucle ou la variable de sommeil. Cela a résolu mon problème. – Thrawn

1

Supprimez le echo avant le passthru().

passthru() ne renvoie rien (vide), il sort directement. Donc, votre déclaration actuelle echos void.

Questions connexes