2016-03-15 4 views
0

У меня есть Баш скрипт, чтобы получить некоторые устройства статус/потери пакетов, который выглядит примерно так (изменил имена/IP-адреса):Показать выход Баш скрипт на HTML странице

#!/bin/bash 

TSTAMP=$(date +'%Y-%m-%d %H:%M') 

device1=`ping -c 1 100.1.0.2 | grep packet | awk '{ print $6 " " $7 " " $8 }'` 
device2=`ping -c 1 100.1.0.3 | grep packet | awk '{ print $6 " " $7 " " $8 }'` 
device3=`ping -c 1 100.1.0.4 | grep packet | awk '{ print $6 " " $7 " " $8 }'` 
device4=`ping -c 1 100.1.0.5 | grep packet | awk '{ print $6 " " $7 " " $8 }'` 
device5=`ping -c 1 10.1.0.250 | grep packet | awk '{ print $6 " " $7 " " $8 }'` 
device6=`ping -c 1 8.8.8.8 | grep packet | awk '{ print $6 " " $7 " " $8 }'` 

echo "Device 1: ${device1}" 

echo "Device 2: ${device2}" 

echo "Device 3: ${device3}" 

echo "Device 4: ${device4}" 

echo "INTERNET WITH ${device5}" 

echo "Device 6 Proxy : ${device6}" 

echo "Last update ${TSTAMP}" 

мне нужно, чтобы показать, что выход на моей странице HTML.

Некоторые люди сказали мне использовать JavaScript для извлечения потери статуса/пакета, скомпоновать их в объект JSON и отбросить его на мою страницу. Но я не знаю, как это сделать, или если это правильный способ сделать это.

+0

достаточно простой с jquery. '$ ('# somediv'). load ('/ cgi-bin/yourscript.sh')', который просто всасывает вывод скрипта и выплевывает его в указанную область вашей страницы. «Конечно, вам придется написать сценарий bash как правильный скрипт CGI, что означает, что, как минимум, выводит основной заголовок ответа HTTP. –

ответ

0

Вы только использовать CGI-BIN для простых сайтов, так что используйте простое решение:
Показать выход вашего сценария как Преформатированный тест:

echo "<pre>" 
echo "Your ping results" 
echo "</pre>" 

Когда это работает, вы можете использовать свет HTML код:

echo "<html> 
<head>StackOverflow helps</head> 
<body> 
<br/> 
My ping results are ... 
<br/> 
<table><tr><td>" 
echo "your ping results" 
echo " 
</tr></td> 
</table> 
</body> 
</html> 
" 

Если у вас есть различные сценарии, которые нуждаются в таком же макете HTML, вы можете сделать HTML-файл и поместить метку-заполнитель, где результаты приходят. Все, что вам нужно сделать, это потоковое преобразование html-файла в ваш скрипт и замена заполнителя на результаты для отображения.

0

Если вы знакомы с PHP:

<?php 
$TSTAMP = date('Y-m-d h:i'); 

$device1 = shell_exec("ping -c 1 100.1.0.2 | grep packet | awk '{ print $6 \" \" $7 \" \" $8 }'"); 
$device2 = shell_exec("ping -c 1 100.1.0.3 | grep packet | awk '{ print $6 \" \" $7 \" \" $8 }'"); 
$device3 = shell_exec("ping -c 1 100.1.0.4 | grep packet | awk '{ print $6 \" \" $7 \" \" $8 }'"); 
$device4 = shell_exec("ping -c 1 100.1.0.5 | grep packet | awk '{ print $6 \" \" $7 \" \" $8 }'"); 
$device5 = shell_exec("ping -c 1 10.1.0.250 | grep packet | awk '{ print $6 \" \" $7 \" \" $8 }'"); 
$device6 = shell_exec("ping -c 1 8.8.8.8 | grep packet | awk '{ print $6 \" \" $7 \" \" $8 }'"); 

echo "Device 1: ${device1}<br />"; 
echo "Device 2: ${device2}<br />"; 
echo "Device 3: ${device3}<br />"; 
echo "Device 4: ${device4}<br />"; 
echo "INTERNET WITH: ${device5}<br />"; 
echo "Device 6 Proxy : : ${device6}<br />"; 
echo "Last Update ${TSTAMP}"; 
?> 

Теперь проблема с этим, что PHP является языком стороне сервера. Это означает, что при запуске веб-сайта вы всегда будете получать результаты с точки зрения сервера. Это не относится к языкам на стороне клиента, например Javascript (поскольку этот пост отмечен).

Другая проблема заключается в том, чтобы убедиться, что на вашем веб-сервере установлен PHP, чтобы этот файл можно было выполнить.

Если вы искали файл, который вы могли бы открыть на своем компьютере, это не так, если вы не установили локальный PHP.