Perl ou Python, mais adequado para automação do sistema Unix?

7

Eu tenho usado bash para a maioria das tarefas de administração do meu sistema. Eu também conheço um pouco de perl.

Devo aprender Python ou Perl é melhor para automação do sistema. Tão longe da minha experiência de aprendizagem perl tem sido fácil.

    
por nitins 09.03.2011 / 09:55

4 respostas

9

Resposta curta: aprenda os dois.

Você encontrará ambos como sysadmin, portanto, você desejará saber como ler / solucionar problemas / depurar ambos.

Quanto a escrever scripts, eu usei principalmente Perl nos últimos 10 anos para a maioria dos meus scripts de utilitário de sysadmin e "cola". Sua sintaxe regex é realmente simples, e se presta muito bem ao desenvolvimento de scripts extremamente rápido. Isso é muito importante quando você precisa fazer algo trabalhando no local.

Ultimamente, tenho me esforçado para usar mais Python pelas seguintes razões:

  • É preciso muita disciplina para escrever um bom Perl. Muitas vezes, um script "rápido e sujo" tem mais recursos introduzidos ao longo do tempo, mas ainda assim implementado de maneira apressada. Antes de muito tempo, você tem um arquivo de ruído de linha que é um PITA para manter.

  • Escrever código OO (ou mesmo reutilizável) em Perl não é fácil comparado ao Python. Acredite em mim, a longo prazo você quer um monte de código reutilizável (e não recortar e colar!)

  • Os princípios do Python ( import this ) são muito mais adequados para colaborar com os outros quando comparados ao princípio TMTOWTDI do Perl. Se você já leu o Perl de outra pessoa, pode saber que pode ser a coisa mais frustrante a ser resolvida. O Python sofre desse problema de ilegibilidade muito menos devido ao seu design. Pior ainda é quando você encontra seu próprio Perl depois de muitos anos. Você vai se perguntar em que ponto você deve ter desmaiado.

  • A documentação é importante se o seu código estiver por perto. Escrever docstrings no Python é muito mais fácil do que escrever marcação de pods em Perl. Fácil o suficiente para que você possa realmente usá-lo.

Eu ainda uso bastante o Perl, mas agora é mais para scripts one-liners e "throwaway" que só serão executados uma vez. Se eu acho que vou editar o script novamente, eu considero o Python.

    
por 09.03.2011 / 10:27
3

Depende do que você está tentando fazer e de onde está tentando fazer isso. Se tudo for igual e não houver restrições ao seu ambiente, você pode instalar o que quiser e não precisa se preocupar em interoperar com o código legado, sinta-se à vontade para escolher o idioma mais adequado às suas preferências pessoais.

Dito isso, para o trabalho com o sysadmin, eu acho que o Perl tem uma vantagem: ele é instalado em todas as partes da caixa, e tem sido desde a aurora dos tempos. Se você estiver escrevendo um script de gerenciamento ou automação de sistema e usando apenas módulos Perl principais, poderá ter quase certeza de que ele será executado sem modificação em qualquer ambiente UNIX heterogêneo e pode ser estendido de forma indolor ao Windows com uma instalação do ActiveState ou Morango Perl.

Espero que ajude!

    
por 09.03.2011 / 19:31
1

Eu recomendaria python. Eu sei perl suficiente, mas não sou um especialista e minha experiência com python tem sido muito superior. Eu acho que depende de suas necessidades, mas se é simplesmente para automação do sistema eu iria a rota python e esquecer perl (por enquanto).

Aqui está uma ótima maneira de se aprofundar:

link

Com coisas como o Fabric em desenvolvimento, isso pode realmente facilitar as coisas:

link

Exemplo da página:

from fabric.api import run

def host_type():
    run('uname -s')

Saída

$ fab -H localhost,linuxbox host_type
[localhost] run: uname -s
[localhost] out: Darwin
[linuxbox] run: uname -s
[linuxbox] out: Linux

Done.
Disconnecting from localhost... done.
Disconnecting from linuxbox... done.
    
por 09.03.2011 / 10:43
0

Eles são equivalentes; para uma máquina doméstica, que você usa depende de qual você se sente mais confortável, mas ao trabalhar com outros você deve aderir a qualquer padrão estabelecido (se todo mundo usa Python você não deve usar Perl sem uma boa razão, e vice-versa) .

    
por 09.03.2011 / 10:24