Пожалуйста, объясните, почему 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