El mejor lenguaje o herramienta para automatizar tareas manuales tediosas [cerrado]

9

Todos tenemos tareas que surgen de vez en cuando que creemos que sería mejor utilizar scripts o automatizar que hacer manualmente.

Obviamente, algunas herramientas o idiomas son mejores para esto que otros: nadie (en su sano juicio) está haciendo un trabajo único de referencia cruzada a un montón de listas de texto que su PM acaba de darles en ensamblador, por ejemplo.

¿Qué herramienta o idioma recomendaría para el tipo de trabajos generales rápidos y sucios que le piden que haga donde el tiempo (en lugar de la elegancia) es esencial?

Antecedentes: soy un antiguo programador, ahora gerente de desarrollo PM, que busca aprender un nuevo idioma por diversión. Si voy a aprender algo por diversión, me gustaría que sea útil y este tipo de caso de uso es el más probable.

Jon Hopkins
fuente
Este es un software de terceros winautomation.com
PradeepGB
3
Como puede ver por la variedad de respuestas a continuación, la mejor solución depende exactamente de lo que desea lograr y en qué entorno.
Mark C
@ Mark - Aprecio eso, pero idealmente estoy buscando aprender algo que tenga una aplicación lo más genérica posible.
Jon Hopkins el
Si quieres hacer todo , supongo que necesitarás al menos 2-3 programas. Linux, Windows, MacOS? Código, sistema de archivos, macros de aplicación?
Mark C

Respuestas:

25

Pitón

La respuesta obvia (y con buena razón) es Python. Es un lenguaje sólido, multiplataforma disponible. Como es dinámico, puede ejecutarlo de forma interactiva, lo que es ideal para unir cosas y tiene una selección bastante grande de bibliotecas, por lo que es un lenguaje de propósito general que se puede aplicar a la mayoría de los problemas.

Murph
fuente
Esa es la belleza Pensar en los lenguajes de "programación" y "programación" como animales totalmente diferentes es bastante obsoleto cuando hay Python.
Joonas Pulakka el
Ish, una de las cosas clave en PowerShell es la canalización, no estoy seguro de qué tan factible es eso en Python (al menos genéricamente)
Murph
+1, Python obtiene mi voto como el mejor lenguaje de secuencias de comandos multipropósito.
Josh K
+1 Lo mismo aquí, Python funciona en la mayoría de las plataformas, si no en todas, y es realmente el mejor lenguaje de "scripting" para hackear algunos códigos juntos.
Georges Duplessy
12

Autoit es inmejorable. Es una herramienta con un lenguaje.

  • Sintaxis de tipo BASIC fácil de aprender
  • Simular pulsaciones de teclas y movimientos del mouse
  • Manipular ventanas y procesos.
  • Interactúa con todos los controles estándar de Windows
  • Los scripts se pueden compilar en ejecutables independientes
  • Crear interfaces gráficas de usuario (GUI)
  • Soporte COM
  • Expresiones regulares
  • Llame directamente a las funciones externas de DLL y API de Windows
  • Funciones de scripts ejecutables
  • Archivo de ayuda detallado y grandes foros de soporte basados ​​en la comunidad
  • Compatible con Windows 2000 / XP / 2003 / Vista / 2008 / Windows 7/2008 R2
  • Soporte Unicode y x64
  • Firmado digitalmente para su tranquilidad
  • Funciona con el Control de cuentas de usuario (UAC) de Windows Vista
Maniero
fuente
8

AutoHotKey

AutoHotkey es una utilidad gratuita de código abierto para Windows. Con ella puedes:

  1. Comunidad muy amigable y servicial.
  2. C como la sintaxis.
  3. Automatice casi cualquier cosa enviando pulsaciones de teclas y clics del mouse.
  4. Puede escribir una macro de mouse o teclado a mano o usar la grabadora de macros.
  5. Cree teclas de acceso rápido para teclado, joystick y mouse. Prácticamente cualquier tecla, botón o combinación puede convertirse en una tecla de acceso rápido.
  6. Manipular ventanas y procesos.
  7. Interactúa con todos los controles estándar de Windows.
  8. Expande las abreviaturas a medida que las escribes. Por ejemplo, escribir "por cierto" puede producir automáticamente "por cierto".
  9. Cree formularios personalizados de entrada de datos, interfaces de usuario y barras de menú. Ver GUI para más detalles.
  10. Reasigne teclas y botones en su teclado, joystick y mouse.
  11. Crear interfaces gráficas de usuario (GUI).
  12. Soporte COM
  13. Expresiones regulares.
  14. Llame directamente a las funciones externas de DLL y API de Windows.
  15. Soporte Unicode, x32 y x64.
  16. Responda a las señales de los controles remotos portátiles a través del script del cliente WinLIRC.
  17. Convierta cualquier secuencia de comandos en un archivo EXE que pueda ejecutarse en computadoras que no tienen AutoHotkey instalado.

http://ahkscript.org/

Le he ahorrado a varias compañías una gran suma de dinero usando esta herramienta.

Fosco
fuente
7

Perl

Perl es más o menos mi definición de rápido y sucio.

Perl es infinitamente flexible, lo cual es una fortaleza y debilidad. No te impone la estructura, pero está ahí si la quieres. Cuenta con bibliotecas para todo. Se ha utilizado ampliamente durante 20 años; Hay toneladas de código para trabajar.

Steve Jackson
fuente
3
Pensé que Perl vendría mucho antes. Había considerado a Perl porque tenía una exposición pasajera, pero solo me dan ganas de frotarme los ojos con cloro cada vez que lo leo. $=; $ _ = \% !; $ _) = / (.) /; $ == ++ $ |; ($., $ /, $ ,, $ \, $ ", $;, $ ^, $ #, $ ~, $ *, $ :, @%) = ($! = ~ / (.) (.). (.) (.) (.) (.) .. (.) (.) (.) .. (.) ... ....) /, $ "), $ = ++; $. ++; $. ++; $ _ ++; $ _ ++; ($ _, $ \, $,) = ($ ~ . $ "." $; $ / $% [$?] $ _ $ \ $, $: $% [$?] ", $" & $ ~, $ #,); $, ++; $, + +; $ ^ | = $ "; $_$\$,$/$:$;$~$*$%[$?]$.$~$*${#}$%[$?]$;$\$"$^$~$*.>&$=(eso es Perl real - sin duda Perl intencionalmente malo - para aquellos que no lo leen).
Jon Hopkins
1
@ Jon Lo agregué principalmente porque no estaba aquí. Estoy de acuerdo en que puede ser bastante complicado, no impone ninguna disciplina en ti, tienes que traer la tuya. Teniendo en cuenta la gran mayoría del tiempo que se usa para secuencias de comandos rápidas y sucias, obtienes lo que ves.
Steve Jackson
2
Sí, y no se debe culpar a Perl por el desorden, eso depende del programador. Además, si su lenguaje de programación solo le permite escribir un buen código, no obtendrá crédito por hacerlo ...
Jon Hopkins
1
Creo que Perl es el mejor lenguaje de secuencias de comandos ahora existente: no es obstinado y permite hacer lo que necesita hacer sin agarrar.
Paul Nathan
6

Potencia Shell

Esto es menos genérico que Python, pero si usted existe en un entorno Windows, entonces probablemente sea más útil.

Es más shell / script que Python (porque eso es lo que es) pero puede engancharse al marco .NET que le brinda una profundidad de capacidad bastante extraordinaria. También cuenta con un amplio apoyo de la comunidad.

Microsoft han estado ocupados añadiendo PowerShell para sus productos de servidor (de ahí el "más útil") y han introducido comunicación remota para que pueda ejecutar secuencias de comandos no desde la consola de aquí .

Murph
fuente
55
¿Podría la chispa brillante que votó en contra sin hacer comentarios, por favor explíquense? Gracias.
Murph
5

Una moderna carcasa de Unix. Por ejemplo, bash.

Conor
fuente
Suponiendo, por supuesto, que se está ejecutando en un entorno que lo admite de forma nativa (o que se cuenta powershell como equivalente a un shell moderno de Unix (- :)
Murph
3

Elisp, si has visto la gran cantidad de tareas que se utilizan para realizar a través de su plataforma subyacente Emacs. Emacs puede evitar toda la funcionalidad de un administrador de ventanas completo, IDE, Office, navegador, cliente de correo electrónico, cliente de chat, shell, explorador del sistema de archivos y más. La mayor parte se logra a través de programas elisp.

vpit3833
fuente
1

Para algunas tareas, las acciones pueden ser una buena opción.

Tiene una especie de proceso de diagrama de flujo, donde puede agregar actionspara que se ejecute secuencialmente. Lo nuevo actionsse puede escribir en java.

Descargo de responsabilidad: todavía tengo que usarlo.

Alan Pearce
fuente
1

Para la automatización compleja, es posible que desee utilizar Robot Framework . El marco está dirigido principalmente a pruebas automatizadas, pero también se puede utilizar para la automatización general.

Puede escribir fácilmente sus propias bibliotecas en Python y hay varias preexistentes (selenio, AutoIt , telnet, ssh, swing, etc.) que le permiten manejar todo tipo de cosas, lo que es muy poderoso si está en Un ambiente mixto.

Se basa en palabras clave para que pueda crear nuevas palabras clave y, por lo tanto, abstraer las tareas repetitivas e incluso tiene un IDE que se está desarrollando activamente y que permite algunas refactorizaciones simples.

FinnNk
fuente
1
  • A los chicos de la GUI de mi organización les gusta TestComplete para la automatización en Windows.
  • Para secuencias de comandos CLI, aproximadamente 90% Perl y 10% Bash

He estado trabajando en combinar algunas rutinas de Common Lisp para ayudar con las secuencias de comandos, pero no es tan fácil de usar como Perl.

Paul Nathan
fuente
0

Para Windows, recomiendo AutoIt (http://autoitscript.com). Asegúrese de instalar el paquete Scite desde la sección de descargas.

http://autoitscript.com/forum es un gran recurso para obtener ayuda y encontrar la función de UDF para incluir en los scripts.

AutoIt puede controlar ventanas y controles de aplicaciones que le permiten automatizar casi cualquier cosa. Tampoco requiere dependencias después de compilar su ejecutable.


fuente
0

Tuve el mismo problema de usar varios idiomas para diferentes conjuntos de automatización. Soy consultor senior para una empresa de servicios de TI en India. Cada vez que consulto a un diferente

lenguaje para el propósito, tuve dificultades para justificarlo a la gerencia . Incluso discutí con mis amigos (como charla informal) sobre el desarrollo de un lenguaje unificado que aborde todas las necesidades de automatización y aún multiplataforma. Si hay uno disponible, entonces puede

cambiar el mundo de los scripts Hasta donde yo sé, el mapeo que usualmente usamos va

Idiomas y dominio de uso

AutoIT - Bases de automatización de GUI basadas en Windows - La automatización basada en Unix involucra principalmente la interacción del sistema Perl - Automatización del procesamiento de datos con menos interacción del sistema Esperar - Requisitos interactivos basados ​​en caracteres. (que Perl, Bash no puede resolver) VBS: secuencias de comandos basadas en Windows

Cualquier automatización siempre se acompaña con una o más invocaciones remotas para la recuperación de información o publicación de resultados. Aquí están las diferentes listas que abordan los principales sistemas operativos.

Invocación remota de script (herramientas)

Windows -> Windows

psexec, Powershell

Windows -> Unix

plink, Quest Plink -> Servidor SSH

Unix -> Unix

Cliente SSH -> Servidor SSH

Unix -> Windows

winexe, wmic -> Agente WMI check_nrpe -> Agente NRPE_NT

En la lista anterior, puede ver fácilmente que ningún idioma puede reemplazar a otro en el conjunto de características. Tenemos que vivir con ellos hasta que tengamos un sistema operativo universal y un estándar universal de protocolos de comunicación y API.


fuente