BASH SCRIPTING LINUX
Primeiro passo é escolher um editor de texto (Nas aulas será usado o NANO)
Comando = nano [Link] (a extensão para bash é sh)
Primeiro script
Antes abrir um Arquivo pelo Nano: nano [Link]
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 ([Link]) = nano [Link]
Dar a permissão = chmod +x [Link]
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 [Link]
O comando acima pega o [Link] da página
Para ler o código acima baixado, é só dar o comando cat [Link] (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