Confuso em fazer coisas de administração de sistemas com python ou não

4

Eu estava fazendo backups no bash e escrevi alguns outros scripts bash também. Eu queria mudá-lo para python porque eu precisava aprender python para técnicas de IA e estava sempre atrasando isso. Como eu tenho que fazer as coisas de administração de sistema com muita freqüência, então eu pensei que se eu fizesse coisas em python então ele seria bom em python. Agora estou confuso com poucas coisas

1) Eu vi que eu posso fazer coisas em uma linha no bash, mas em python eu preciso escrever 15 linhas de código para isso, e, g fazendo os backups de tarball. sed, awk pode filtrar arquivos em linha onde em python eu tenho que escrever muito mais linhas. Então, minhas perguntas estou indo no caminho errado. Python é realmente usado para coisas de administração de sistemas ou não. Para mim, é como criar um site estático de 5 páginas no J2EE, em vez de simples.

2) Eu quero saber por que a pessoa deve escolher python se o bash puder fazer tudo. Eu estou falando apenas sobre coisas administrativas do sistema.

Então eu preciso saber se eu estou me matando tentando usar python ou é só porque eu ainda estou aprendendo que estou achando difícil?

Eu só quero saber se o Python realmente significava coisas como backups, verificação de arquivos de log, etc.

    
por Mirage 02.05.2011 / 04:18

4 respostas

7

O Python é uma linguagem de script de uso geral, como o Perl. Isso significa que é uma ferramenta mais poderosa que o bash scripting, mas também significa que a sintaxe geralmente será mais detalhada e a escrita de scripts será mais complicada. Os scripts Bash têm a vantagem de serem específicos de domínio, e isso significa que eles fazem muitas suposições que facilitam a maioria das tarefas. No entanto, se as suposições bash fizeram não se encaixam na tarefa que você precisa fazer, você pode ter que percorrer o caminho mais longo para fazer as coisas funcionarem da maneira que você precisa.

Esta é a mesma pergunta que os sysadmins do Windows usavam para lidar com a escrita em lote ou VBScript. O PowerShell ajuda a aliviar isso um pouco, mas você ainda enfrenta a questão de "essa tarefa é complexa o suficiente para exigir o PowerShell ou um script em lote é bom o suficiente para que o trabalho seja feito de forma confiável?".

Na realidade, depende da tarefa que você precisa fazer. Se uma tarefa é mais fácil de escrever e manter em Python, use-a. Se bash é realmente muito simples, use isso. As linguagens de script são ferramentas . Use-os como tal. Use a ferramenta que melhor se adapte aos requisitos da sua tarefa.

Quando escrevo um script, tenho uma lista de verificação mental:

  1. Qual é exatamente a tarefa que estou tentando realizar? O primeiro passo é sempre definir o problema.
  2. Qual idioma é mais rápido para eu escrever este script? Meu tempo é valioso.
  3. Qual idioma é melhor para alguém ler, entender e dar suporte a essa tarefa? O tempo das outras pessoas é valioso também.
  4. Qual idioma resultará em uma correção mais robusta, mais confiável ou mais a longo prazo? Eu quero escrever isso uma vez e consertá-lo para sempre.
  5. Existe alguma coisa que torne a linguagem inadequada? O Python ou o PowerShell não estarão disponíveis ou determinados módulos não serão instalados? Meu arquivo de lote ou script bash chamar programas que não são garantidos para estar presentes e que eu não posso manter com o script?
por 02.05.2011 / 04:56
3

Você está fazendo uma pergunta retórica aqui. É como perguntar por que alguém teria conjuntos de soquetes diferentes em sua caixa de ferramentas quando um soquete funcionasse. Cada ferramenta (neste caso, ambiente de programação / linguagem / script) tem seus próprios pontos strongs e fracos. Por exemplo, por que você usaria Marionete (Escrito em Ruby) quando CFEngine (Escrito em C, eu acredito) faz a mesma coisa?

Uma das maiores vantagens de uma linguagem de script sobre um ambiente de shell é a legibilidade (Perl não ofuscado). Também pode ser muito mais fácil de fazer na manipulação de cadeia de idiomas. No Bash, por exemplo, você pode precisar repetir sua string para sed / awk / grep para analisá-la, mas em Python / Ruby / Perl você tem regex e manipulação de strings embutidos. Também a comunicação com sockets remotos pode ser mais fácil do que ter que escrever script em torno de curl, wget ou netcat. Além disso, as linguagens de script não precisam se adequar ao processamento. Exemplo:

myvar=$(echo "my string" | grep string | cut -d"" -f 3)

Isso resultaria na criação de três garfos separados que, por sua vez, retardariam o sistema.

Linha de fundo O Python foi projetado para preencher uma necessidade e, devido a isso, tem seus pontos strongs e fracos. A diferença entre um ótimo sistema de administração e um sistema de administração medíocre é que eles conhecem os pontos strongs das várias ferramentas. Aprender Python é uma boa ideia, mas não é o tamanho único da ferramenta.

    
por 02.05.2011 / 04:46
3

Eu sou um programador sysadmin e python. O que costumo fazer é pensar no futuro e ponderar o que terei que fazer para conseguir algo no bash e no python, e depois usar a melhor ferramenta para o trabalho (aquela que me dá mais velocidade / potência). Um não exclui o outro, dê uma olhada no módulo os do python e você verá que há muitos coisas que podem ajudar na administração do sistema.

Como regra geral (que eu uso, YMMV): se você tiver que executar muitos comandos, você será melhor com bash, e se você terá que fazer formatação e cálculos de arquivos de texto python será melhor .

Além disso, você diz que está aprendendo python, então eu sugiro que você se atenha ao que você sabe melhor primeiro. Obtenha alguns projetos de teste para obter intimidade com o python e, quando melhorar, você verá que naturalmente tenderá a fazer coisas no bash ou no python, de acordo com a complexidade do que deseja fazer.

    
por 02.05.2011 / 04:46
2

Como um sysadmin que usa python e bash frequentemente, posso dizer que muitas vezes tenho a mesma pergunta que você. Geralmente, eu reconsidero seriamente usar python para coisas sysadmin quando percebo que precisarei de vários comandos open () ou preciso importar subprocess (ou similar) se eu implementá-lo em python. Dito isso, às vezes, o Python é mais fácil para você adicionar funcionalidades extras mais tarde. Em muitas ocasiões, escrevi algo que achei simples no bash, depois o refiz em python (ou qualquer outra linguagem de programação) porque percebi que era muito mais complexo do que eu pensava.

Realmente, cabe a você decidir o programador. Não descarte um método se você não souber como - se você pode aprender com a experiência, por que você não o faria?

    
por 02.05.2011 / 08:09

Tags