Проверять процессы нескольких серверов параллельно с оператором if

Директива DirectoryIndex не контролирует доступ к содержимому каталога. Доступ/разрешения обычно указываются в элементах Directory .

Если вы посмотрите на журнал ошибок, например, /var/log/httpd/error.log (в разных системах по-разному), вы можете увидеть ошибку с таким сообщением:

attempt to invoke directory as script

о которой в документации говорится

Это происходит, когда Apache настроен с помощью ScriptAlias или SetHandler и делается запрос на путь к каталогу. Проблема заключается в том, что при таких обстоятельствах все ресурсы по определенному пути считаются исполняемыми.

Чтобы обойти это и позволить DirectoryIndex снова работать, используйте AddHandler с Options ExecCGI, или SetHandler в строфе .

и приводится пример, который вы можете найти полезным, отключив ScriptAlias, и восстановив эквивалент с помощью AddHandler cgi-script cgi pl в опциях Directory.

1
04.06.2019, 23:56
2 ответа

Как насчет запуска содержимого цикла в фоновом режиме?

  while read IP
  do
    (if [ 1 -eq "$(echo "$(ssh -n ubuntu@$IP "top -b -n2 -d 0.5|grep Cpu|awk '{print \$2+\$4}'|tail -n1") > 1.0" | bc)" ];then
      echo "process is running on $IP"
    else
      echo "process is not running on $IP"
    fi) & 
  done < file.ips
0
27.01.2020, 23:41

С помощью GNU Parallel вы можете:

check() {
  IP="$1"
  if [ 1 -eq "$(echo "$(ssh -n ubuntu@$IP "top -b -n2 -d 0.5|grep Cpu|awk '{print \$2+\$4}'|tail -n1") > 1.0" | bc)" ];then
    echo "process is running on $IP"
  else
    echo "process is not running on $IP"
  fi
}
export -f check
parallel -j0 check < file.ips
1
27.01.2020, 23:41

Теги

Похожие вопросы