Alura > Cursos de DevOps > Cursos de Linux > Conteúdos de Linux > Primeiras aulas do curso Linux Onboarding: obtendo e tratando informações do sistema

Linux Onboarding: obtendo e tratando informações do sistema

Criando e configurando scripts - Apresentação

Como está o andamento do curso de Linux? Está lembrado da primeira parte e da segunda? Redirecionamentos, copiar arquivo, tudo aquilo que vimos até agora será fundamental para darmos prosseguimento aqui na parte três. O que vamos ver agora?

A partir de agora vamos começar a dar um olhar um pouco mais administrativo, com aquela proposta de aprender a ferramenta, aprender o sistema operacional, em um ponto que você precisará no uso do seu dia a dia. Sou Ricardo Merces e te convido aqui a continuar nesta terceira parte do nosso curso.

Criando e configurando scripts - Variáveis e scripts

Para darmos início e não perdermos tempo, já vamos começar com uma temática legal que é usar um script. Vamos criar o script, "setar"a permissão, botar ele funcionando. O que é importante saber é que não é nada impossível de entender, um script nada mais é do que uma sequência de comando.

Então imagine aquilo que já estudamos nos módulos anteriores: copiamos arquivo, movemos, criamos diretório. Se eu juntar tudo isso, ordenar isso linha a linha, isso vai virar o nosso script, e tem uns ajustes que precisaremos fazer. A proposta do nosso script é criar um script de backup. Onde?

Quando eu executar o script, ele me pede o diretório de origem, ele vai ler esse diretório e vai copiar, de forma recursiva, todo o conteúdo para um diretório de backup. Então é legal que vamos ver vários detalhes que precisamos para que o nosso script funcione sem nenhum problema. Vamos começar aqui.

Para trabalharmos com script, é legal entendermos um pouco sobre variáveis do sistema. "Como assim, Ricardo?" Dê uma olhada aqui. Vou conectar na nossa instância virtual, aquela mesma máquina que estamos utilizando desde o início do curso. Estou conectado.

Aqui vamos fazer o seguinte, seguindo aquela nossa organização, cd labs, vou criar um diretório mkdir scripts. Diretório criado, vamos trabalhar aqui dentro. O que é importante vermos aqui? Vamos entender um pouco de variável. Se digitarmos env, o que ele vai mostrar?

Ele vai mostrar diversas variáveis que já estão pré-configuradas no sistema e, logicamente, foram atribuídas. Você verá e concordará: "Ricardo, realmente agora a coisa começa a fazer sentido". Olha que legal, quando digitamos o comando PWD, nós vemos o diretório local, onde estamos. Como ele faz isso? Como o sistema identifica esse negócio?

Ele puxa isso de uma variável e tem uma variável chamada PWD. Outra interessante: HOME. Se eu olhar o conteúdo da variável HOME, eu vou apontar para home, área do usuário. Tem outras coisas interessantes aqui, OLDPWD. Lembra que aprendemos no início do curso?

Estamos em um diretório, depois vamos para outro, eu tenho aquele salto direto de um para o outro com cd -, o traço? Ele consulta também essa variável. Então para olharmos os valores das variáveis, echo $HOME. Qual foi a outra que olhamos? O echo PWD, diretório que eu estou.

É muito fácil, comando echo e nós vemos o conteúdo. Para definir uma variável, é só configurarmos assim, por exemplo, teste=xpto. Vamos ver o valor de echo $teste, olha só, "xpto".

Então definir variável já está claro como funciona, bem tranquilo isso. Então vamos trabalhar o nosso script. Eu vou no nosso diretório, cd scripts/, vou usar o editor de texto que você já aprendeu, vamos trabalhar com VI. Eu vou criar, vou chamar vi backup.sh. Aquela pergunta que sempre aparece: é obrigado a utilizar a extensão .sh?

Não é obrigado, você pode criar a só com o nome backup. Eu coloco o .sh pela questão de organização, é uma boa prática, eu recomendo que você faça isso também. vi backup.sh, vamos lá. Agora, sim, vamos escrever o nosso script, que é muito simples.

O nosso script é aquela sequência de comandos. O detalhe aqui é o seguinte, para começar um script, vamos dar inserir, nós colocamos o símbolo tralha, hoje em dia é o famoso hashtag mais o ponto de exclamação, #!/. E eu coloco o seguinte: #!/bin/bash. "Ricardo, o que é isso? Eu já vi em alguns lugares que o jogo da velha, esse caractere #, ele é comentário".

Sim, esse caractere nós usamos para comentário. Mas ele na primeira linha, seguido da exclamação, serve para o nosso script identificar qual o shell que será utilizado. Nós também já aprendemos sobre isso, eu comentei que existem vários shells que podemos trabalhar, o bash é o que estamos utilizando hoje, por default no Ubuntu, ele já vem o bash, então eu estou utilizando ele para executar o meu script.

Então essa linha é legal. Na sequência nós vamos ordenar os nossos comandos. Eu vou imprimir na tela a seguinte mensagem: echo "digite o diretorio de backup:". O script vai interagir comigo, solicitando que eu entre com o path do meu diretório de backup. Isso vai aparecer na tela e eu preciso dizer para o shell o seguinte: deixe o usuário entrar, dar o input com essa informação, e guardar isso em uma variável. Como fazemos isso?

Vamos fazer assim: read e colocar o input dentro de uma variável. Essa variável eu vou chamar de diretorio_bkp, exatamente esse nome para a minha variável. Você vê que é muito simples. Ele já leu o diretório, já "printou" na tela, o que eu tenho que fazer? Sabendo qual é o diretório que eu quero copiar, eu vou pegar isso e jogar no meu diretório de backup. Mais simples do que isso, bem enxuto o nosso script

Então vamos fazer o seguinte, eu vou fazer assim: cp -r — cópia recursiva, porque eu quero garantir que a partir do ponto que o usuário colocar, eu quero que faça o backup dali e tudo o que estiver dentro. A partir daqui vou acrescentar um "v", de verbose, ou seja, para as mensagens, o que estiver acontecendo, serem "printadas" na tela.

cp -rv o quê? O diretório. Vou ler a variável $diretorio_bkp. Eu vou copiar daqui para onde? Eu vou copiar para o meu destino, e o meu destino eu vou colocar -/ home o quê? Eu vou criar um diretório de backup, cp -rv $diretorio_bkp -/backup, então ele vai jogar aqui para dentro. Esse último diretório não existe, teremos que criar antes de executar o script.

Está vendo que é muito simples isso? Quando ele terminar eu vou imprimir uma linha em branco, echo " ", colocar aqui de propósito para você entender como é e vou fazer o seguinte, botar mais uma mensagem para o meu usuário, echo "Backup Concluido!".

"Ricardo, é isso?" É isso. É muito simples de trabalharmos, é só reunir o que aprendeu, ordenar isso e criar o nosso script. Na sequência vamos validar isso, configurar, executar, fazer os acertos para que o nosso bakup já esteja funcionando.

Criando e configurando scripts - Configurando e executando scripts

De volta ao nosso script, nós precisamos salvar. Está lembrado no Vi? Aquele comando mágico, "Esc" depois :x. Ele salva o arquivo. ls -l, está o backup aqui.

Tem alguns detalhes que precisamos fazer, vamos lá. Deixo ele na tela, para não esquecer, cat backup.sh. Ele vai copiar para o ~/backup.

Esse diretório existe? Vamos criar ele aqui, cd, mkdir backup, senão, logicamente, dará erro no nosso script. Então o diretório está criado. Teoricamente está tudo certo, eu preciso executar o meu script. "Ricardo, como eu executo o script?" É só chamar ele. Só aqui, ls -l. Nós, logicamente, vamos aprender isso em detalhes, mas olha o problema.

Não, não é aqui. Está em scripts, cd ../labs/scripts/, aqui está o nosso script. Olha ele lá, ls -l.

Eu sei que você ainda não aprendeu isso aqui, ainda não conversamos sobre isso, mas, por enquanto, precisa saber o seguinte, eu preciso dar direito de execução deste arquivo, ele só tem direito de leitura, -rw é leitura e escrita. Como eu faço isso? Eu vou usar o seguinte comando, chmod e eu vou dizer que o usuário que é o dono do backup, você vai entender já, e o dono sou eu, eu que criei o arquivo, Ricardo.

Esse "u", chmod u, é do UID, também vamos falar sobre isso, o dono terá permissão de X, chmod u+x. O que é o X? De executar o arquivo. O que ele vai executar? backup.sh. Então chmod u+x backup.sh. Vamos repetir o ls -l, apareceu um X: -rwx.

Como está configurado, por default o Ubuntu bem com essas questões de cores e tudo mais, você vê que o texto ficou verde. Não se apegue a isso, aprenda sempre a olhar as letras para trabalharmos de forma mais assertiva. Está aqui, vamos testar para ver se funciona? Vamos lá, como eu executo o arquivo? pwd, eu estou neste diretório.

Eu quero executar o arquivo. O arquivo está no meu diretório corrente. Está lembrado? ./backup.sh. Vou executar para ver o que vai acontecer. "digite o diretorio de backup:".

Temos que colocar o path completo. Só para teste, para demonstrarmos, eu vou fazer o seguinte, /usr/bin. "Ricardo, o que é isso?" /usr/bin são os binários, são os comandos que os usuários podem utilizar dentro do sistema. Então eu quero que ele pegue tudo o que está dentro deste diretório, e vimos que ele vai jogar no backup. Vamos ver se vai rodar aqui. Olha que legal.

Que monte de mensagem é essa aqui? Isso é aquele -v, que é o verbose. À medida que ele foi copiando, ele copiou essa linha para "/backup/bin", está lá. Ele foi "printando" na tela e, no final, aquela frase "Backup Concluido!". Muito legal. Você vê que facilmente você fará os seus scripts para automatizar os seus processos e esse é o pontapé inicial para que você possa trabalhar desta forma.

Mas tem mais coisa aqui legal para vermos, para aprendermos. O que acontece é o seguinte, você vê que para eu executar o meu script, eu entrei nesse diretório. Ou eu poderia estar em outro diretório, eu poderia estar no cd /etc e executar o script. Como eu ia executar? Era necessário que eu colocasse aqui, que eu coloque, o path completo, porque se eu digitar backup.sh, isso não foi encontrado, enfim, isso não está no path.

Agora, se eu fizesse o path completo, vamos usar a variável aqui, que é /home/ricardo/labs/scripts/backup.sh. Se eu executasse ele assim, ele ia funcionar? Vamos testar. Vou repetir usr/bin. Fez o nosso backup.

Então é chato porque você terá que, nesta forma, ou chegar no diretório onde estão os teus scripts, ou colocar o path completo. Como resolvemos isso? Lembra que aprendemos sobre variáveis? echo $PATH. Essa variável, ela já vem definida no sistema. Olha só, "/usr/local/sbin:/usr/local/bin:".

O que acontece? Você pode falar: "Ricardo, se esses paths estão definidos, basta copiarmos esse nosso script para um deles". Sim, é uma opção, nós poderíamos copiar para cá. Vamos organizar bem isso, vamos olhar aqui o seguinte, estou no meu home e eu vou fazer aqui o seguinte, vamos olhar ls -a.

Está vendo como aquele início de curso é tão importante agora? Porque isso é o dia a dia. Como eu vejo arquivo oculto? Olha o -a de novo aparecendo. Então, não deixe de treinar isso. No ls -a ele apareceu para mim esse .profile. Vamos dar uma olhada nisso? more .profile. O que ele nos mostra aqui?

Esse .profile, na hora que fazemos login, ele vai ler esse .profile e vai fazer um setup do bash para nós. Tem algumas coisas que, mesmo que ainda não dominemos, é fácil entendermos. Olha o que ele está dizendo, # set PATH so it includes user's private bin if it exists. Ele vai configurar o path, incluindo o diretório do usuário se esse bin existir. "Como assim, Ricardo?".

Olha aqui, fica mais fácil. PATH é a variável que já estudamos, já sabemos, vimos até o conteúdo dela. Ele pega o Path e faz o seguinte, no seu "$HOME/bin:" — o que é isso? Se esse diretório existir, ele vai pegar o path, a variável path e vai anexar o nosso "$HOME/bin" ao path. Está vendo que ele junta, ele pega o "/bin:" e o ":$PATH", então os dois juntos viram a nova variável path.

Aproveitando este esquema, outro, tem um aqui, "$HOME/.local/bin". Se esse diretório também existir, ele inclui no path. Fica a seu critério aqui. Eu vou usar esse primeiro só como teste, poderia usar o outro, enfim, vai da sua organização. Poderia incluir e criar uma linha, dizer que o path, adicionar ao meu path, o meu home/scripts, por exemplo, então podemos brincar.

Mas vamos usar o que já está definido no sistema. O que eu vou fazer? No meu diretório raiz, mkdir bin, ls, estamos trabalhando no labs, cd bin/. Olha o que eu vou fazer, eu vou copiar o meu script para cá, aquele esquema que você já sabe, cp ../labs/scripts/backup.sh .. Vou copiar deste lugar para o diretório corrente. Agora sim, olha que legal, o backup está aqui.

Vamos ver se vai funcionar? Vamos fazer o seguinte, eu vou "deslogar" aqui, no caso, e "logar" de novo. Eu poderia fazer isso de outras formas, mas vou sair e voltar de novo. A senha eu troquei, espere. Está aqui. Então eu estou aqui no meu home, ele já foi, echo $PATH. Olha quem apareceu aqui: /home/ricardo/bin.

Ele leu o profile na inicialização e fez o seguinte, o bin existe? Inclua no path para o Ricardo. Se está incluído, pwd, ls. Aqui não tem nenhum script. backup.sh. O "Tab" vai te dizer que o path está funcionando, porque se não estivesse no path, você ia dar o "Tab" e nada ia acontecer. backup.sh, /usr/bin. Olha o nosso script funcionando. De qualquer parte do sistema que você queira executar, logicamente aqui no usuário corrente.

Viu como é fácil, tranquilo? Exercite isso, faça uma combinação de path, crie um script, uma coisa bem simples, mover, copiar, apagar, dar um -ls. Dê um -ls no etc e redirecione para um arquivo backup das configurações, alguma coisa do tipo, listagem dos arquivos do etc. Crie um script e treine isso, que isso vai te ajudar bastante. Na sequência eu volto para vermos mais conteúdo aqui.

Sobre o curso Linux Onboarding: obtendo e tratando informações do sistema

O curso Linux Onboarding: obtendo e tratando informações do sistema possui 109 minutos de vídeos, em um total de 34 atividades. Gostou? Conheça nossos outros cursos de Linux em DevOps, ou leia nossos artigos de DevOps.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda Linux acessando integralmente esse e outros cursos, comece hoje!

Plus

De
R$ 1.800
12X
R$109
à vista R$1.308
  • Acesso a TODOS os cursos da Alura

    Mais de 1500 cursos completamente atualizados, com novos lançamentos todas as semanas, emProgramação, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.

  • Alura Challenges

    Desafios temáticos para você turbinar seu portfólio. Você aprende na prática, com exercícios e projetos que simulam o dia a dia profissional.

  • Alura Cases

    Webséries exclusivas com discussões avançadas sobre arquitetura de sistemas com profissionais de grandes corporações e startups.

  • Certificado

    Emitimos certificados para atestar que você finalizou nossos cursos e formações.

Matricule-se

Pro

De
R$ 2.400
12X
R$149
à vista R$1.788
  • Acesso a TODOS os cursos da Alura

    Mais de 1500 cursos completamente atualizados, com novos lançamentos todas as semanas, emProgramação, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.

  • Alura Challenges

    Desafios temáticos para você turbinar seu portfólio. Você aprende na prática, com exercícios e projetos que simulam o dia a dia profissional.

  • Alura Cases

    Webséries exclusivas com discussões avançadas sobre arquitetura de sistemas com profissionais de grandes corporações e startups.

  • Certificado

    Emitimos certificados para atestar que você finalizou nossos cursos e formações.

  • Luri, a inteligência artificial da Alura

    Luri é nossa inteligência artificial que tira dúvidas, dá exemplos práticos e ajuda a mergulhar ainda mais durante as aulas. Você pode conversar com Luri até 100 mensagens por semana.

  • Alura Língua (incluindo curso Inglês para Devs)

    Estude a língua inglesa com um curso 100% focado em tecnologia e expanda seus horizontes profissionais.

Matricule-se
Conheça os Planos para Empresas

Acesso completo
durante 1 ano

Estude 24h/dia
onde e quando quiser

Novos cursos
todas as semanas