Question

Pour l'écriture de scripts pour l'automatisation de processus sur une plate-forme Linux, quel langage de script sera le mieux? Script shell, Perl ou Python ou y at-il autre chose? Je suis nouveau pour tous. Alors, je pense juste à qui aller pour?

Était-ce utile?

La solution

La réponse est: le choix qui vous convient le mieux!

Ma règle d'or;

Bash : pour un script court qui peut nécessiter une boucle for pour effectuer des opérations répétitives.

Perl : tout ce qui concerne le traitement de texte ou le traitement de fichiers, en particulier s'il s'agit d'un traitement unique. Il suffit de faire un sale script malpropre et d’en finir avec ce script

Python : si vous souhaitez effectuer quelque chose à nouveau ou quelque chose de très similaire. Alors au moins, vous avez une chance de pouvoir réutiliser le script.

Autres conseils

Choisissez les trois, commencez par bash / awk / sed plus fileutils (grep, find, etc.), puis montez dans la hiérarchie d'abstraction avec perl et python.

Ainsi, vous pourrez décider vous-même lequel correspond le mieux à vos besoins. Je dis de commencer avec bash et ses amis car ils sont omniprésents, certaines machines n’auront pas installé de perl ou de python et vous vous sentirez impuissant là-bas, en particulier dans les pays unix traditionnels (c’est-à-dire, pas sous Linux)

Lorsque vous choisissez un langage de script pour automatiser votre environnement Linux / Unix, la chose la plus importante à mon avis est ... votre remplaçant: -)

J'entends par là les prochains / autres administrateurs système qui devront peut-être gérer vos scripts. Je travaille actuellement dans un environnement où le responsable principal d'Unix est un véritable responsable de script, mais il s'est principalement limité à l'utilisation de bash, avec de la perle et des fenêtres vbscript ajoutées pour de la chance. Au moins, cela m'a obligé à brosser mon perl.

Bien que je sois d’accord avec les autres commentaires ici, ma suggestion serait de maîtriser bash - si possible, faites autant que possible bash, comme le savent la plupart des gens, et pouvez le maintenir / le déboguer. Et ce sera plus portable. Utiliser avec sed & amp; awk est particulièrement puissant.

Une fois que vous avez maîtrisé le sujet, vous pouvez revenir ici et demander "Quel langage de script dois-je apprendre après bash?" : -)

JB

Je pense que cela dépend de la complexité des tâches que vous souhaitez automatiser. Personnellement, je suis toujours allé avec les scripts shell, ce qui vous permet d’appeler awk, sed, grep, find, ls, cat, etc., qui peuvent être combinés pour faire à peu près tout ce que vous pouvez réaliser avec perl ou python. D'autre part, si les processus que vous souhaitez automatiser sont complexes (par exemple, pas seulement une séquence linéaire d'étapes), alors vous constaterez probablement que l'écriture des scripts en perl ou en python (ou même en ruby!) Est beaucoup plus rapide et rend plus facile à maintenir.

J'utilise Perl pour autre chose que des scripts extrêmement simples.

J'ai aussi 'utiliser les avertissements' , 'utiliser strict' , éviter les backticks, appeler le système en tant que 'système ($ command, @and_args)' . Et parce que j'aime bien qu'il soit maintenable: IPC :: Run (pour les pipes), File :: Fu (pour les noms de fichiers, fichiers temporaires, etc.), YAML (pour les configs ou autres données) et Getopt :: Helpful (pour que je puisse me souvenir quelles étaient les options.)

Dépend de la complexité et du domaine du problème de la tâche à accomplir.

Les scripts Bash sont rapides et compliqués pour les tâches simples d’automatisation du système. Pour des choses plus complexes que le déplacement de fichiers et l'exécution de commandes, je dirais personnellement que Perl est le suivant en tant qu'outil d'automatisation defacto sys-admin goto. Pour mettre davantage l’accent sur la réutilisation du code et la lisibilité / maintenabilité, je souhaiterais l’intensifier jusqu’à Python ou à Ruby.

PHP peut également être utilisé pour automatiser des tâches, mais, selon mon expérience, il n’est pas accepté à cette fin.

Cela dépend vraiment de la langue que vous êtes le plus intéressé à apprendre. La plupart peuvent être utilisées pour l'automatisation, en plus de nombreuses autres choses.

Je préfère les scripts shell uniquement pour de très petites tâches. L'écriture de scripts shell robustes nécessite beaucoup de connaissances sur les pièges possibles, que vous apprendrez uniquement en le faisant. Mais apprendre même les bases augmentera beaucoup votre productivité!

Si j’ai besoin d’une logique complexe, j’utilise habituellement Python. Par complexe, j'entends tout ce qui a plus de deux si -tatements =)

Perl convient pour son objectif initial, mais sachez que bon nombre des perlismes que vous apprenez ne sont applicables nulle part ailleurs.

Python et Ruby sont à peu près équivalents. Je vous recommande de bien connaître l'un d'entre eux et de visionner un tutoriel sur l'autre. Je préfère Python, mais cela dépend vraiment de mes préférences personnelles.

Pour résumer: Apprenez les bases des scripts de shell. Apprenez au moins bien Python ou Ruby.

Je suis de plus en plus recommandé par Python. C'est supposé te laisser faire n'importe quoi. Pour les petites tâches, j’utilise cependant des scripts shell.

Je dirais généralement celui que vous connaissez le mieux et qui peut atteindre les résultats souhaités. Comme dans toutes les guerres de religion, et après avoir appris un grand nombre de langues, vous réalisez que vous pouvez faire la plupart des choses dans la plupart des langues (j'ai dit le plus souvent). J'utilise Perl. Il n’est peut-être pas aussi à jour que Python ou Ruby, mais il est supporté massivement par les bibliothèques de CPAN. Et je n'ai rien trouvé que je ne puisse pas encore y faire. Quand je le ferai, je regarderai d’autres langues pour savoir laquelle peut combler ce vide.

Si je commençais aujourd’hui, je choisirais peut-être Python ou Ruby, mais je n’en sais pas assez à leur sujet pour pouvoir émettre un jugement. Certains de vos amis / collègues connaissent-ils les langages de script? Cela pourrait vous aider énormément car le soutien lors de l’apprentissage d’une nouvelle langue est très important.

Bonne chance

Eh bien, c'est comme ça:

Perl n’est pas le langage de script le plus convivial, mais il possède CPAN (Comprehensive Perl Archive Network), qui contient des milliers de bibliothèques qui implémentent pratiquement tout ce que vous pouvez penser. Perl est vraiment puissant pour le traitement de texte. L'inconvénient serait que le code Perl est un peu difficile à maintenir (si vous ne le connaissez pas très bien).

Python est un langage de script de plus en plus utilisé par les scripteurs. Il n'a pas (encore) de communauté comme CPAN, mais c'est plus lisible et plus facile à maintenir. C'est aussi rapide que perl.

Ruby est la dernière tendance des langages de script. Ruby est une OOP complète, ce qui signifie que tout est un objet. Son avantage est que le code est très lisible et qu'il est assez facile à apprendre, si vous êtes débutant. Le principal inconvénient est sa vitesse d’exécution, ce qui un peu s * x.

Cela dépend du type d'automatisation que vous utilisez, par exemple si vous testez l'auto-adaptation. Perl est suggéré, car Perl est un module d'extension beaucoup plus puissant via CPAN, un inventaire de modules Perl en ligne. Si vous avez seulement besoin d'un outil pratique pour compléter un fichier source simple, awk est très pratique. Si vous envisagez d'utiliser les scripts pour automatiser un grand projet, Perl est un meilleur choix avec davantage de fonctionnalités. Encore une fois, Python a été conçu dès le départ comme un langage orienté objet. Perl 5 a ajouté quelques fonctionnalités o-o, mais il me semble qu’il s’agit d’une modernisation gênante. Python a bien implémenté des fonctionnalités oo pour l'héritage multiple, le polymorphisme et l'encapsulation.n résumé, il me semble que Python domine Perl dans la plupart des applications, à l'exception de types d'applications de scripts shell assez courts, et qu'ils sont à peu près comparables.

Si vous souhaitez une solution minimaliste, compacte et rapide (plus rapide que Python / Ruby), alors - > optez pour le langage de script LUA :-) Cependant, Lua speed & amp; La compacité du code est obtenue par un noyau de langage Lua relativement petit, donc si vous voulez des "piles incluses". (alias. très grandes bibliothèques "standard"), alors Lua n'est pas pour vous. Sinon, les gars qui viennent du monde C / C ++ apprécient beaucoup la vitesse de Lua: -)

p.s.

Lua vs Ruby 1.9 benchmark (vous pouvez aussi regarder Lua contre Python 3):

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

Cela dépend de ce que vous voulez faire, je les utilise régulièrement tous:

  • Shell pour le traitement par lots simple de commandes avec éventuellement une boucle ou une instruction if.
  • Perl quand je mâche des fichiers et que je fais du remplacement de texte et des choses similaires.
  • Python si besoin de plus de logique.

Sous * nix, vous devez utiliser le bon outil pour le bon travail, ce qui peut être difficile pour le débutant, car c’est tellement de choses à apprendre (après quelque 15 ans en tant qu’utilisateur * nix, je trouve encore de nouvelles choses). Ma recommandation est d'examiner rapidement toutes les langues pour voir ce qu'elles peuvent faire, puis de commencer par utiliser shell pour tout, lorsque vos scripts deviennent maladroits, déplacez-les vers autre chose.

Il suffit d'écrire vos commandes les unes après les autres, de les placer dans un fichier et de l'exécuter avec

promp> bash file

et vous avez votre première automatisation. Ensuite, découvrez les variables bash, les boucles et les structures de contrôle.

Je seconde Python - puissant, simple, performant et ... plutôt amusant, comparé à perl ou bash. De plus, si vous le savez, vous trouverez d'autres utilisations, il est utilisé dans de nombreux projets. Et pas seulement comme un "classique" langage de script, prenons par exemple le projet tordu. C’est vrai aussi pour Perl, mais j’aime bien mieux que Python un ordre de grandeur

En bout de ligne, c'est comme on l'a déjà dit avant, assurez-vous de disposer du bon outil pour le travail ...

Si je devais en choisir un, ce serait AWK. Il est léger, a une petite courbe d’apprentissage et de nombreuses fonctions utiles, telles que index et sous.

Si vous souhaitez utiliser un programme de script simple, "contrôler". un autre programme (en ligne de commande, bien sûr), alors vous devriez passer en revue Tcl / Tk, en particulier ses attentes dialectales - elles sont simples et orientées vers cet objectif - il est très facile de créer un script qui contrôle ftp et fait même un su avec eux!

Awk est très agréable pour traiter des fichiers texte - pas aussi puissant que perl, mais beaucoup plus simple et direct (et sans la syntaxe horrible).

Bien sûr, votre kilométrage peut varier, alors je suppose que la meilleure réponse serait de vous demander: à quoi voulez-vous écrire des scripts? Et ensuite: Connaissez-vous any language script? Les réponses à ces questions vous indiqueront le langage de script à utiliser, en fonction des avantages / inconvénients de chacun et de leur cible principale.

Sous Linux? Choisissez votre poison, fondamentalement. J'aime Python, les autres Ruby, les autres Perl. Choisissez-en un et allez-y. : -)

Je dirais Python - il a une très grande lisibilité, il est simple (pas d'accolades, de mots clés aussi proches que possible de l'anglais, etc.) et vous pouvez presque tout faire, du plus simple au plus complexe. . Il est également populaire et amusant de coder.

Cela peut sembler un peu étrange, je l’utilise depuis plus de 10 ans. J'ai commencé à utiliser PHP5 et c'était difficile au début, mais j'ai maintenant une base de code réutilisable bien meilleure.

Je ne le recommanderais cependant pas comme point de départ!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top