apache2: obtenga una lista de controladores registrados
10
¿Es posible obtener una lista de todos los controladores de apache? Con setHandler es posible crear controladores.
Un posible uso sería agregar un controlador para una extensión de archivo específica ( addHandler ). Conocer todos los posibles controladores y su identificador facilitaría el proceso de hacerlos coincidir con una extensión de archivo (o en el caso de que los controladores de URL creen una lista de posibles URL).
Los manejadores deben administrarse en Apache Core en algún tipo de lista: ¿cómo es posible sacar esta lista?
Apache no expone una lista de controladores configurados. Sin usar apachectl, no con nada más.
El mejor método que podría encontrar para obtener una lista de controladores configurados es simplemente grep la carpeta de configuración de Apache para Handlercapturar todo AddHandlery SetHandlerdeclaraciones.
¡Tenga en cuenta que no todos los controladores encontrados están de hecho registrados! Busque en mods-enabled(Debian) y haga caso omiso de las líneas que comienzan #por reducir solo los controladores registrados.
Como lo sugirió Jenny en los comentarios, las líneas comentadas se pueden eliminar filtrando la salida con grep -Pv '^[^ ]*:\s*#'. Aquí está el comando final para máquinas basadas en Debian:
En los comentarios, el usuario gogoud proporciona una forma adicional de eliminar los controladores comentados, devolviendo así solo los controladores registrados:
// Debian or Ubuntu
$ grep -R "Handler" /etc/apache2/*enabled* | sed 's/#.*//;/^[^:]*:\s*$/d'
// Redhat, CentoOS, Fedora
$ grep -R "Handler" /etc/httpd/*enabled* | sed 's/#.*//;/^[^:]*:\s*$/d'
Para deshacerse de los manejadores comentados, use un poco de magia de encontrar y grep:find /etc/httpd/ -type f -exec grep -H -v '#' {} \; | grep Handler
Jenny D
@ JennyD: Creo que eso eliminaría las líneas con comentarios después de las declaraciones, como AddHandler cgi-script .cgi # Ben needs CGI.
dotancohen
1
Cierto. Podría hacerlo con egrepuna expresión regular adecuada, que se deja como ejercicio para el lector (ya que desafortunadamente tengo que hacer un trabajo remunerado en este momento ...)
Jenny D
@JennyD: ¡Desafío aceptado! He agregado un filtro grep para líneas comentadas. Buen pensamiento, gracias!
dotancohen
¿Por qué los votos negativos repentinos? Esta respuesta responde directamente a la pregunta e incluso incluye ejemplos de las dos variantes de Linux más comunes. Si la respuesta pudiera mejorarse, agradecería algunas críticas constructivas .
dotancohen
0
Esto no es exactamente lo que desea, pero si habilita el server-infocontrolador en su configuración, la salida le dirá qué módulos tienen controladores y cuáles no, de esta manera:
Gracias, sin embargo, no veo esa información. Esta página muestra la salida de server-info. Sin embargo, tenga en cuenta que la salida es una página estática copiada del servidor real y que se le sirve a través de una Raspberry Pi.
find /etc/httpd/ -type f -exec grep -H -v '#' {} \; | grep Handler
AddHandler cgi-script .cgi # Ben needs CGI
.egrep
una expresión regular adecuada, que se deja como ejercicio para el lector (ya que desafortunadamente tengo que hacer un trabajo remunerado en este momento ...)Esto no es exactamente lo que desea, pero si habilita el
server-info
controlador en su configuración, la salida le dirá qué módulos tienen controladores y cuáles no, de esta manera:Esto fue con Apache 2.2, por lo que quizás las versiones posteriores le darán una salida más útil.
fuente
server-info
. Sin embargo, tenga en cuenta que la salida es una página estática copiada del servidor real y que se le sirve a través de una Raspberry Pi.