Пожалуйста, объясните, почему php показывает только некоторые результаты моего bash-скрипта

Мой php код:

<?php
$output = shell_exec('/bin/f2bstatus');
echo "$output";
echo "<hr />";
echo 'Current PHP version: ' . phpversion();
?>

мой сценарий оболочки (f2bstatus):

#!/bin/bash
echo "<div>"
echo "<h2>Fail2Ban Jail Status</h2>"
JAILS=`fail2ban-client status | grep "Jail list" | sed -E 's/^[^:]+:[ \t]+//' | sed 's/,//g'`
for JAIL in $JAILS
do
   fail2ban-client status $JAIL
done
echo "</div>"

вывод терминала из скрипта оболочки:

<div>
<h2>Fail2Ban Jail Status</h2>
Status for the jail: recidive
|- Filter
|  |- Currently failed: 0
|  |- Total failed: 12
|  `- File list:    /var/log/fail2ban.log
`- Actions
   |- Currently banned: 6
   |- Total banned: 6
   `- Banned IP list:   xxx.xxx.xxx.xxx ...
Status for the jail: sshd
|- Filter
|  |- Currently failed: 1
|  |- Total failed: 15
|  `- Journal matches:  _SYSTEMD_UNIT=sshd.service + _COMM=sshd
`- Actions
   |- Currently banned: 0
   |- Total banned: 6
   `- Banned IP list:   
</div>    

выход php (из источника просмотра):

<div>
<h2>Fail2Ban Jail Status</h2>
</div>
<hr />Current PHP version: 7.1.24

из того, что я могу сказать, видно, что цикл for выполняется, но сценарий fail2bain-client не запускается php (или не проходит через?)

я также пытался использовать оператор backtick вместо shell_exec, но результат тот же

я также пробовал другие системные команды, такие как ls, и они работали очень хорошо

на странице справки fail2ban-client упоминается, что "клиент разветвляется один раз" - это как-то связано с тем, что происходит?

идеи / пожелания / объяснения?

tyia,
chris

0 ответов

Другие вопросы по тегам