Você está na página 1de 13

BASH SCRIPTING LINUX

Primeiro passo é escolher um editor de texto (Nas aulas será usado o NANO)
Comando = nano script.sh (a extensão para bash é sh)

Primeiro script
Antes abrir um Arquivo pelo Nano: nano script.sh

Comando para dar permissão de execução e executar

Inserir comandos do próprio Linux para exibir na Tela

Saída

Para que o a saída anterior apareça na frente da frase e não mais embaixo = echo “sistema ligado
por:” $ (uptime-p)

Outros Comandos que podem ser exibidos: pwd (diretório) e whoami (usuário)

Saída
Trabalhando com Variáveis

Saída

Para ler um valor e exibir na tela (comando READ)

Saídas

Trabalhando com mais de uma variável

Realizando um Ping em um valor lido

Criando um programa que junta tudo que foi aprendido até agora
Saídas

Condições

if e else

Saída

Exemplo básico de saída sem usar alguma condição padrão


Agora usando a condição: “Maior ou Igual”

Criando um Menu para as condições

Saída

Trabalhando com Argumentos

Pegando argumentos digitados

Se salvarmos como está acima a saída será

Mas, se passarmos argumentos a saída será

Menu que ajuda o usuário

Saída
Repetições
Alguns recursos que o Bash tem:
Criando uma sequencia de 1 a 10 = echo {1..10}

*Também pode ser feito de A a Z = echo {a..z}

Comando SEQ, também usado para sequências (saída na vertical)

Laço for e while

Usando os laços dentro de um script (outra opção)

Saída

Opção com texto


Podemos criar um laço infinito com o laço while para ficar escutando algo

Exercício de Fixação

Importante: Sempre quando tem resposta no ping, contém 64 bytes

- Abrir um arquivo com NANO


- Condição: se não for passado nem um argumento o programa deve exibir uma mensagem
caso contrário: ele exibe uma lista de 255 hosts (rede classe C) com o ping
Explicação: $1 = variável que pega a rede que usuário digitar
$host = variável que pega de 1 a 254

Saída (uma saída muito cheia)


Filtrando (pegando somente as linhas que tenham 64 bytes, porque representam aquelas que contém
a resposta do ping)

Saída

Filtro que pega somente os endereços IP (delimitar pelos dois pontos)

Saída

Filtro pegando somente a 4ª coluna (coluna do IP)

Saída

Outro forma de filtra somente para aparecer os IPs (Filtro somente pelo espaço)

Saída
Tirando os dois pontos da saída acima (Comando SED)

Explicação
-Depois do primeiro ‘s’ vem o ‘.$’ porque queremos tirar um caracter do final e substituir por nada,
por isso as duas barras finais não tem nada no meio. Se eu quiser eliminar os dois caracteres da
saída então o comando seria: sed ‘s/..$//’
Saída

Portscan de Rede

Comando hping3 = que envia comando de ping para um host que eu quero

Saída

Outras saída = RA (rest, ack ou sem retorno) = não tem porta aberta

Construindo o programa (scannet.sh) = nano scannet.sh

Dar a permissão = chmod +x scannet.sh


Saída (Sem argumentos e com argumentos)

Filtrando uma nova saída para pegar somente com flags SA

Saída (traz SA, mas traz as estatísticas junto)

Existe a opção de mandar a saída padrão para um log e as saídas de erro para outro lugar
Exemplos

No caso acima as estatísticas são exibidas na tela e a saída que eu quero fica em log
Posso inverter = mandar a saída de erro p/ joutro lugar que não seja o log (excluir) e jogar na tela o
que eu preciso:
Obs – Mensagem do Linux
1 = STDOUT (saída na tela)
2 = STDERRO (saída de erro)
0 = STDIN
Adicionando a solução anterior para o programa

Saída

Aplicando o novo filtro para pegar somente o que tem flags SA

Saída

Novo filtro (pegando somente o endereço IP)

Saída
Retirar a palavra IP=

Saída

Criando agora no mesmo script um programa onde o usuário escolhe a porta a ser pesquisada

Saída

Parsing HTML

Pegando o código HTML de uma página: Comando wget www.algumacoisa.com

O comando acima pega o index.html da página

Para ler o código acima baixado, é só dar o comando cat index.html (e localizar tudo quem tem
href)
Em códigos mais extensos temos que dar um grep “href” para pegar tudo

Usando o filtro para pegar somente os IPs

Como todos os IPs possuem pontos, então podemos filtrar somente as linhas que contém pontos

Filtrar agora somente os lados que contém os domínios (usar as aspas como delimitador)

Podemos tirar as linhas que estão sobrando (<link rel= e <li><a href=)

Vamos agora direcionar todo o encontrado acima para um arquivo chamado “lista”

Para ler o arquivo lista criado é só dar o comando = cat lista (irá exibir a saída)
Resolver os endereços encontrados acima (encontrar os respectivos IPs)
O comando host encontra os endereços IPs dos nomes
Ex:

Quando ele não encontra o endereço:

Agora para pegar todas as saídas de nomes e convertê-las em IPs vamos usar o laço for

O comando acima usa a variável “url” que é pega no arquivo lista e enquanto estiver um host ele irá
ler e encontrar o IP.

Filtrando as informações no programa e colocando apenas os endereços IP que funcionaram

Você também pode gostar