Я пытаюсь сохранить вывод команды linux ifconfig
в переменную и показать его в моем HTML. У меня две страницы, одна test.html
и один ajax.php
, Если я нажму на ссылку на test.html
Затем выполняется запрос AJAX ajax.php
который выполняет ifconfig и отправляет результат обратно test.html
где весь html тега body заменяется выводом.
У меня есть этот код в моем ajax.php
, Как видите, я пишу вывод ifconfig
в файл, так что я могу прочитать каждую строку из файлового потока и вывести их.
shell_exec ("/sbin/ifconfig > /tmp/ifconfig 2>&1");
$ifconfig = fopen("/tmp/ifconfig","r") or die ("Unable to open file '/tmp/ifconfig'");
while(!feof($ifconfig))
{
echo fgets($ifconfig). "<br>";
}
fclose($ifconfig);
Но вместо вывода вроде этого:
eth0 Link encap:Ethernet HWaddr 0A:58:C2:71:7A:90
inet addr:172.15.47.121 Bcast:172.25.255.255 Mask:255.255.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:238319 errors:0 dropped:0 overruns:0 frame:0
TX packets:122439 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:21355179 (20.3 MiB) TX bytes:19679738 (18.7 MiB)
Я получаю этот вывод:
eth0 Link encap:Ethernet HWaddr 0A:58:C2:71:7A:905
inet addr:172.15.47.121 Bcast:172.15.255.223 Mask:255.255.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:23405 errors:0 dropped:14 overruns:0 frame:0
TX packets:16390 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1613474 (1.5 MiB) TX bytes:19949404 (19.0 MiB)
Может кто-нибудь сказать мне, как я могу получить вывод в том же формате, что и на самом деле?
Заметка: адреса не настоящие, я их поменял.
Если ваш вывод должен быть для сайта, просто оберните его в <pre></pre>
теги:
echo "<pre>";
while(!feof($ifconfig))
{
echo fgets($ifconfig). "<br>";
}
echo "</pre>";
В pre
теги, которые используют большинство браузеров monospace
как шрифт, так что это больше похоже на прямой вывод на консоль.
Вывод искажен, потому что пробелы обрабатываются на странице html по-разному (они не отображаются, хотя они здесь, посмотрите исходный код вашей страницы).
Вас может заинтересовать свойство CSS white-space
применяется к родительскому тегу html, чтобы изменить это поведение:
<body style="white-space:pre-wrap">
Your php here
</body>