Pregunta

Para escribir scripts para la automatización de procesos en la plataforma Linux, ¿qué lenguaje de scripting será mejor?¿Secuencia de comandos de Shell, Perl o Python o hay algo más?Soy nuevo en todos ellos.Entonces, ¿estoy pensando en cuál elegir?

¿Fue útil?

Solución

La respuesta es:¡Lo que mejor se adapte al trabajo!

Mi regla general;

Intento - para un script corto que podría necesitar un bucle for para hacer algo de forma repetitiva.

perla - cualquier cosa que tenga que ver con algún tipo de procesamiento de texto o procesamiento de archivos, especialmente si es único.Simplemente haz un script en Perl sucio y desagradable y listo.

Pitón - Si es algo que quizás quieras volver a hacer o algo muy parecido.Entonces al menos tendrás la posibilidad de poder reutilizar el guión.

Otros consejos

Elija los tres, comience con bash/awk/sed más fileutils (grep, find, etc.) y luego suba en la jerarquía de abstracción con perl y python.

De esa forma podrás decidir por ti mismo cuál se adapta mejor a tus necesidades.Digo comenzar con bash y amigos porque son omnipresentes, algunas máquinas no tendrán Perl o Python instalado y te sentirás impotente allí, especialmente en el ámbito tradicional de Unix (es decir, no Linux).

Al elegir un lenguaje de scripting para ayudar a automatizar su entorno Linux/Unix, lo más importante en mi opinión es...tu reemplazo :-)

Con lo que me refiero a los siguientes administradores de sistemas que puedan tener que mantener sus scripts.Actualmente estoy trabajando en un entorno donde el líder de Unix es un verdadero experto en scripts, pero se ha limitado principalmente a usar bash, con algo de perl y windows vbscript para tener buena suerte.Al menos me ha obligado a repasar mi Perl.

Si bien estoy de acuerdo con los otros comentarios aquí, mi sugerencia sería dominar bash; cuando sea posible, hacer todo lo posible en bash, como la mayoría de la gente lo sabe y puede mantenerlo/depurarlo.Y será más portátil.El uso con sed y awk es particularmente poderoso.

Cuando lo hayas dominado, puedes volver aquí y preguntar "¿Qué lenguaje de secuencias de comandos debo aprender después de Bash?" :-)

JB

Creo que depende de qué tan complejas sean las tareas que quieras automatizar.Personalmente, siempre he optado por scripts de shell, que te permiten llamar a awk, sed, grep, find, ls, cat, etc.que se pueden combinar para hacer prácticamente cualquier cosa que puedas lograr usando Perl o Python.Por otro lado, si los procesos que desea automatizar son complejos (por ejemplo, no solo una secuencia lineal de pasos), entonces probablemente encontrará que escribir los scripts en Perl o Python (¡o incluso Ruby!) es mucho más rápido y facilita sean más fáciles de mantener.

Utilizo Perl para cualquier cosa más allá de scripts extremadamente simples.

Yo también 'use warnings', 'use strict', evite las comillas invertidas, llame al sistema como 'system($command, @and_args)'.Y porque me gusta que sea mantenible:IPC::Run (para tuberías), File::Fu (para nombres de archivos, archivos temporales, etc.), YAML (para configuraciones o datos varios) y Getopt::Helpful (para poder recordar cuáles eran las opciones).

Depende de la complejidad y el dominio del problema de la tarea en cuestión.

Los scripts Bash son rápidos y sencillos para tareas simples de automatización del sistema.Para cosas más complejas que mover archivos y ejecutar comandos, personalmente diría que Perl es el siguiente en la fila como de facto herramienta de automatización sys-admin goto.Para centrarme más en la reutilización del código y la legibilidad/mantenimiento, me gustaría pasarlo a Python o Ruby.

PHP también se puede utilizar para automatizar tareas; sin embargo, según mi experiencia, no es ampliamente aceptado para este propósito.

Realmente todo se reduce a qué idioma le interesa más aprender, la mayoría se puede usar para la automatización, además de muchas otras cosas.

Prefiero los scripts de shell sólo para tareas muy pequeñas.Escribir scripts de shell robustos requiere mucho conocimiento sobre posibles errores, que sólo se aprenden haciéndolo.¡Pero aprender incluso lo básico aumentará mucho tu productividad!

Si necesito tener una lógica compleja, suelo utilizar Python.Por complejo me refiero a cualquier cosa que tenga más de dos declaraciones if =)

Perl está bien para su propósito original, pero tenga en cuenta que muchos de los perlismos que aprende no se pueden aplicar en ningún otro lugar.

Python y Ruby son más o menos equivalentes.Te recomiendo que aprendas bien uno de ellos y consultes un tutorial sobre el otro.Prefiero Python pero realmente todo se reduce a preferencias personales.

Para resumir: Aprenda los conceptos básicos de los scripts de shell.Aprenda bien al menos Python o Ruby.

Me recomiendan Python todo el tiempo.Se supone que te permitirá hacer cualquier cosa.Sin embargo, para las tareas pequeñas utilizo scripts de shell.

Normalmente diría que el que mejor conoce es el que puede lograr los resultados que desea.Como todas las guerras religiosas, y después de aprender una gran cantidad de idiomas, te das cuenta de que puedes hacer la mayoría de las cosas en la mayoría de los idiomas (nota que dije la mayoría).Yo uso Perl.Quizás no esté tan actualizado como Python o Ruby, pero tiene soporte masivo de biblioteca de CPAN.Y todavía no he encontrado nada que no pueda hacer.Cuando lo haga, buscaré otros idiomas para descubrir cuál puede llenar ese vacío.

Si comenzara hoy, tal vez elegiría Python o Ruby, pero no sé lo suficiente sobre ellos como para tomar una decisión.¿Alguno de tus amigos/colegas conoce lenguajes de programación?Esto podría ayudarte enormemente ya que el apoyo a la hora de aprender un nuevo idioma es muy importante.

Buena suerte

Bueno, es así:

Perl no es el lenguaje de programación más fácil de usar, pero tiene CPAN (Comprehensive Perl Archive Network), que contiene miles de bibliotecas que implementan casi cualquier cosa que se te ocurra, y Perl es realmente poderoso cuando se trata de procesamiento de texto.La desventaja sería que el código Perl es un poco difícil de mantener (si no lo conoces muy bien).

Python es un lenguaje de programación que se está volviendo cada vez más popular entre los programadores.No tiene una comunidad como CPAN (todavía), pero es más legible y más fácil de mantener.Es tan rápido como Perl.

Ruby es la tendencia más reciente en lenguajes de scripting.Ruby es programación orientada a objetos completa, lo que significa que todo es un objeto.Su ventaja es que el código es muy legible y bastante fácil de aprender si eres principiante.La principal desventaja es su velocidad de ejecución, que es un poco sexo.

Eso depende del tipo de automatización que esté haciendo, si está probando la automatización. Se sugiere Perl porque Perl es un módulo de extensión mucho más potente a través de CPAN, un inventario de módulos Perl en línea.Si sólo necesita una herramienta útil para completar un archivo fuente simple, awk es muy conveniente.Si planea utilizar los scripts para automatizar un proyecto grande, Perl es una mejor opción con más funciones.Nuevamente Python fue diseñado desde el principio como un lenguaje orientado a objetos.Perl 5 tiene algunas características agregadas, pero me parece una actualización incómoda.Python tiene características o-o bien implementadas para herencia múltiple, polimorfismo y encapsulación. En resumen, me parece que Python domina a Perl en la mayoría de las aplicaciones, excepto en aplicaciones de script de shell bastante cortas, y en eso son más o menos comparables.

Si desea una solución minimalista, compacta y rápida (más rápida que Python/Ruby), entonces -> Vaya por el lenguaje de secuencias de comandos Lua :-) Sin embargo, la compacidad de la velocidad y el código de Lua se logra al núcleo de lenguaje Lua relatamente pequeño, por lo que si desea "baterías incluidas" (también conocido como.bibliotecas "estándar" muy grandes), entonces Lua no es para ti.De lo contrario, los chicos que vienen del mundo C/C++ disfrutan mucho de la velocidad de Lua :-)

PD.

Punto de referencia Lua vs Ruby 1.9 (puedes mirar también Lua Vs Python 3):

http://shootout.alioth.debian.org/u32/benchmark.php?test=all&lang=lua&lang2=yarv

Depende de lo que quieras hacer, los uso todos regularmente:

  • Shell para procesamiento por lotes simple de comandos con quizás un bucle o una declaración if.
  • Perl cuando estoy masticando archivos y reemplazando texto y cosas así.
  • Python cuando se necesita más lógica.

Bajo *nix debes usar la herramienta adecuada para el trabajo correcto, lo cual puede ser difícil para el principiante ya que hay muchas cosas que aprender (después de unos 15 años como usuario de *nix todavía encuentro cosas nuevas).Mi recomendación es mirar todos los lenguajes rápidamente para ver qué pueden hacer, y luego comenzar a usar shell para todo, cuando sus scripts se vuelvan complicados, moverlos a otra cosa.

Simplemente escriba sus comandos uno tras otro, colóquelos en un archivo y ejecute este archivo con

promp> bash file

y ya tienes tu primera automatización.Luego aprenda sobre las variables de bash, los bucles y las estructuras de control.

Secundo Python: potente, simple, eficaz y...En realidad, bastante divertido, en comparación con Perl o Bash.Además, si lo conoces, encontrarás otros usos, se utiliza en muchos proyectos.Y no sólo como un lenguaje de scripting "clásico", tomemos por ejemplo el proyecto retorcido.Supongo que eso también es cierto para Perl, pero a mí me gusta más el orden de magnitud de Python.

Sin embargo, la conclusión es, como se ha dicho antes, asegurarse de tener la herramienta adecuada para el trabajo...

Si tuviera que elegir uno, sería AWK.Es liviano, tiene una pequeña curva de aprendizaje y tiene muchas funciones útiles como índice y substr.

Si su objetivo es tener un programa de script simple que "controle" otro programa (de línea de comandos, por supuesto), entonces debería revisar Tcl/Tk, especialmente su dialecto - son simples y están orientados hacia ese objetivo - es muy fácil de ¡Cree un script que controle ftp e incluso haga un su con ellos!

Awk es muy bueno para procesar archivos de texto; no es tan poderoso como Perl, pero es mucho más simple y directo (y sin la horrible sintaxis).

Por supuesto, su kilometraje puede variar, así que supongo que la mejor respuesta sería preguntarle:¿Para qué quieres escribir guiones?Y luego:Estás familiarizado con cualquier escritura del idioma?Las respuestas a estas preguntas te indicarán el lenguaje de scripting que debes utilizar, según los pros y los contras de cada uno y su objetivo principal.

¿En Linux?Elige tu veneno, básicamente.Me gusta Python, a otros Ruby y a otros Perl.Elige uno y adelante.:-)

Yo diría Python: tiene una legibilidad muy alta, es simple (sin llaves, palabras clave lo más parecidas posible al inglés, etc.) y puedes hacer casi de todo, desde cosas simples hasta cosas muy complejas.También es popular y divertido codificar.

Esto puede sonar un poco extraño, he estado usando bash durante más de 10 años.Comencé a usar PHP5 y al principio fue difícil, pero ahora tengo una base de código reutilizable mucho mejor.

¡Aunque no lo recomendaría como punto de partida!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top