PASSAGEM DE PARÂMETROS , CRIANDO FERRAMENTAS COM SCRIPT SHELL (script para criar pendrive bootável)


CURSO : SHELL SCRIPT
DATE:  11 MAIO 2017
HORA : 17:40
AULA :4
TEMA :PASSAGEM DE PARÂMETROS , CRIANDO FERRAMENTAS COM SCRIPT SHELL
PROFESSOR : FRANCISCO DE PAULA MARINHO NETO


Olá pessoal , começaremos agora a quarta aula de shell script , onde iremos tratar sobre a criação de ferramentas com passagem de parâmetros , o que seria isso ?

Passagem de parâmetros são todas opções que você adiciona depois do programa , exemplo:

mount  /dev/sdc

umount /dev/sdc

airmon-ng start wlan0

Então iremos aprender como isso funciona na teoria e na prática , pegue uma caneca de café , curta a nossa pagina no canto superior esquerdo que vamos começar.

Isso não é java

A passagem de parâmetros é algo natural do shell sendo recebido o valor do primeiro parâmetro como $1 e o segundo parâmetro $2 e assim segue-se infinitamente mas , existe alguns comando que é necessário salientar como :

  • $# : Conta quantos parâmetros foram passados .
  • $* : Mostra todos os parâmetros passados .
  • $0 : Recebe o valor do nome do programa.
  • $? : Mostra o status da execusão do programa , qualquer valor diferente  de zero configura erro.
  • ${10} Todo parâmetro acima de "9" onde são usados dois algarismos é necessário o uso de chaves , diferente disso o shell intepretará o primeiro algarismo somente.
Os parâmetos $1, $2 , etc , tomarão lugar dentro do programa para que seja feita toda execusão do programa , vamos para a pratica que ficará mais fácil o entendimento:
Vou criar um script  aqui , que para os intermediários e avançados seja muito simples , mas quando começei no linux me deu um pouco de dor de cabeça , que é a criação de um pendrive bootável ,
Vamos lá :
Vamos começar como você ja aprendeu , dando o caminho do intepretador e comentando o que o script faz.


#!/bin/bash
#programa que cria pendrives bootaveis no linux
#autor francisco marinho
sudo clear
echo "criado na aula de script shell "
echo
echo "acesse http://www.linuxpentestbrasil.tk "
 if [ $1 = --help ]; then

   clear
   echo "digite bootpendrive.sh caminho da iso  caminho do pendrive "
   echo "  exemplo :./bootpendrive.sh  /home/francisco/Downloads/ubuntu"
   echo "-gnome-16.10-desktop-amd64.iso /dev/sdb1 "

  else
     sudo umount $2
     sudo mkfs.fat $2
     echo " Aperte ctrl c para cancelar"
     echo
     echo
     sudo  dd if=$1 of=$2 status=progress && sync && clear && echo                 "Finalizado   com sucesso o seu pendrive bootavel "
 fi




Vamos explicar

Dei um clear para limpar a tela.
Escrevi algumas propagandas , parecendo app do android rsrs.
Começei uma estrutura de repetição onde se o primeiro parâmetro $1 fosse " --help " que ele desce um clear pra limpar a tela e desse um exemplo do uso do programa .
Que é   bootpendrive.sh caminho da iso  caminho do pendrive
Senão ( else ) ele iria partir para a ação de criar o pendrive bootável.
Dei o comando "umount" para  desmontar o parâmetro $2 que no caso seria o pendrive.
Dei o comando de formatação da váriavel $2 .
 Escrevi uma mensagem , mostrando como o usuário poderia abortar o processo.
E por fim dei o comando "DD" que irá descomprimir a variavel $1 no caso a iso
 no pendrive .
Se quer saber o que mais o comando dd faz clique aqui
E se ocorrido com sucesso , mostrar uma mensagem no final afirmando isso.

Para saber qual o caminho do pendrive você pode usar o comando  :

sudo fdisk-l

a saída do comando será parecida com essa .


Onde mostra o tamanho e onde está montado no meu caso /dev/sdb.
Normalmente o último da lista é o seu pendrive .

Depois de terminado de salvar o programa de o comando :

sudo chmod a+x nomedoscript
para da permissão de execusão .

E criado nosso programa , vc pode usar-lo a vontade sem a necessidade de um ambiente gráfico, que faz a maioria dos programas perderem desempenho.

Segue as imagens da execusão completa do programa :

./bootpendrive.sh --help




  



Até mais, Voltem sempre.

Comentários :

  1. Sugestão: por favor, se possível, passe os códigos com caracteres mono-espaçados. Tive um pequeno problema na execução pq o certo é ter um espaço entre if (espaço) [ (espaço) $1... Como sou iniciante tive que ir testando onde acrescentar ou tirar espaço. Isso acontece na linha 8 do código.

    ResponderExcluir

Postar um comentário