MENU
#!/bin/sh
clear
echo
echo ............................ GERENCIADOR DE USUARIOS .....................$
echo
echo . 1 - Adicionar usuário
echo . 2 - Alterar senha de Usuario
echo . 3 - Listar usuario
echo . 4 - Excluir usuario
echo
echo Digite uma opcao:
read opcao;
if [ $opcao == "1" ];
then
clear
cd /opt/r2d2/
./add_user.sh
elif [ $opcao == "2" ];
then
clear
cd /opt/r2d2/
./add_pass_user.sh
elif [ $opcao == "3" ];
then
clear
cd /opt/r2d2/
./list_users.sh
elif [ $opcao == "4" ];
then
clear
cd /opt/r2d2/
./del_user.sh
else
clear
echo “Opcao Invalida”
fi
============================================================================================
MONITORAR POR PING
#!/bin/bash
#3 requisições para o host
x=$(ping -c3 8.8.8.8)
case $? in
0)
data=`date`
echo "O LINK OK!! - $data " >> /var/log/m
;;
1)
data=`date`
echo -e '\e[31;1mO LINK NAO RESPONDE!! - \e[m' $data >> /var/log/m
;;
*)
data=`date`
echo "O LINK FORA DO AR!! - $data " >> /var/log/m
;;
esac
============================================================================================
WHILE TRUE - CASE
#!/bin/sh
clear
echo
echo
echo OPCAO 1
echo OPCAO 2
echo
x="teste"
menu ()
{
while true $x != "teste"
do
echo
echo
read x
case "$x" in
# OPCAO 1
1)
echo OLA
echo "================================================"
;;
# OPCAO 2
2)
echo TCHAU
echo "================================================"
;;
*)
echo "Opção inválida!"
esac
done
}
menu
===================================================================
PASTA EXISTE OU NÃO EXISTE
if [ -e "/bin/bash" ]; then
echo "O arquivo ou diretório existe"
else
echo "O arquivo ou diretório não existe"
fi
====================================================================
01 - TROCA PALAVRAS DE UM ARQUIVO
sed -i 's/palavra/outra-palavra/' arquivo.txt
02 - IMPRIME SÓ A NONA LINHA
sed -n '9p' arquivo.txt
03 - IMPRIME DA SEXTA A NONA LINHA
sed -n '6,9p' arquivo.txt
04 - Deleta todas as linhas que contém a palavra string no arquivo
sed -i '/dmx/d' arquivo.txt
05 - Coloca uma palavra no INÍCIO de cada linha
sed 's/^/palavra/' arquivo.txt
06 - Coloca uma palavra no final de cada linha
sed 's/$/palavra/' arquivo.txt
07 - Imprime só as linhas que COMEÇAM com a string ‘http’
sed -n '/^http/p' arquivo.txt
08 - Deleta só as linhas que COMEÇAM com a string ‘http’
sed -n '/^http/d' arquivo.txt
09 - Troca TODAS ocorrências da palavra “marcos”, “eric”, “camila” pela palavra “pinguim”
sed 's/marcos\|eric\|camila/pinguim/g' arquivo.txt
10 - Troca tudo que estiver ENTRE as palavras “Marcos” e “Eric” pela palavra “eles”, exemplo, o texto é:
“No sábado Marcos saiu de pra brincar de bicicleta com o Eric, mas não ficaram até tarde.” e ficará assim: “No sábado eles, mas não ficaram até tarde.”
sed 's/Marcos.*Eric/eles/' arquivo.txt
11 - Deleta linha em branco e altera o arquivo
sed -i '/^$/d' arquivo.txt
12 - Substitui “foo” por “bar” somente as linhas que contém “plop”
sed '/plop/ s/foo/bar/g' arquivo.txt
13 - Substitui “foo” por “bar” exceto as linhas que contém “plop”
sed '/plop/! s/foo/bar/g' arquivo.txt
14 - Insere da Linha 2 a linha 7 o “#” no início de cada linha
sed '2,7s/^/#/' arquivo.txt
15 - Insere a palavra ‘NEW’ no início de cada linha, da linha 21 até a linha 28
sed -i '21,28s/^/NEW/' arquivo.txt
16 - Troca tudo entre as tags “<” e “>” pela palavra “CODIGO”:
sed 's/<[^>]*>/CODIGO/g' arquivo.txt
17 - Imprime somente a primeira ocorrência da linha com determinada string
sed -n '/dia/{p;q;}' arquivo.txt
18 - Inclue texto no final da linha 9
sed '9s/$/final da linha/' arquivo.txt
19 - Coloca todas as linhas em uma só
sed ':a;$!N;s/\n//;ta;' arquivo.txt
20 - Substitui a palavra “BELEZA” por “SIM” somente entre determinadas linhas
sed '3,6s/BELEZA/SIM/' arquivo.txt
21 - Apaga o que está entre a palavra “falou” e “segundo” ( delimitadores )
sed '/segundo/{/falou/{s/segundo.*falou//;t};:a;/falou/!{N;s/\n//;ta;};s/segundo.*falou/\n/;}' arquivo.txt
22 - Retira comandos HTML (tudo entre < e > )
sed 's/<[^>]*>//g' arquivo.txt
23 - Apaga o 1o caracter da frase
sed 's/.//' arquivo.txt
24 - Apaga o 4o caractere da frase
sed 's/.//4' arquivo.txt
25 - Apaga os 4 primeiros caracteres
sed 's/.\{4\}//' arquivo.txt
26 - Apaga no mínimo 4 caracteres
sed 's/.\{4,\}//' arquivo.txt
27 - Apaga de 2 a 4 caracteres (o máx. que tiver)
sed 's/.\{2,4\}//' arquivo.txt
28 - Exemplos de intervalo
echo "aáeéiíoóuú" | sed "s/[a-u]//g"
áéíóú
echo "aáeéiíoóuú" | sed "s/[á-ú]//g"
aeiou
29 - Transforma texto (URL) em tags HTML de links.
Era : http://www.com
Fica: <a href=”http://www.com”>http://www.com</a>
sed 's_\<\(ht\|f\)tp://[^ ]*_<a href="&">&</a>_' arquivo.txt
30 - Expressões Regulares com SED ( sed regex )
Este sed lê dados do arquivo.txt e apaga (comando d) desde a primeira linha, até a linha que contenha 3 números seguidos, jogando o resultado na tela. Se quiser gravar o resultado, redirecione-o para outro arquivo, não o próprio arquivo.txt .
sed '1,/[0-9]\{3\}/d' arquivo.txt
Apagar números
s/[0-9]\+//g' arquivo.txt
Imprime só linhas que contém PONTUAÇÃO
sed -n '/[[:punct:]]/p' arquivo.txt
Imprime só linhas que começam com Números
sed -n '/^[[:digit:]]/p' arquivo.txt
Formatando numero de telefone
temos um arquivo com os números de telefone assim:
7184325689
4333285236
1140014004
3633554488
Executando alguns desse modos de comando em SED:
Modo Neandertal
Substitui 2 caracteres “..” por “&” que é a saída da solicitação
Executa outro sed pra substituir 8 caracteres de novo pelo “&”
Obs.: Precisa sempre escapar os parênteses “\(“ e “\)”
sed 's/../\(&\)/' arquivo.txt | sed 's/......../&-/' arquivo.txt
Modo Medieval
O mesmo do de cima, só pus o “{8}” pra marcar 8 caracteres “.”
Também precisa, SEMPRE, escapar as chaves “\{“ e “/}”
sed 's/../\(&\)/' arquivo.txt | sed 's/.\{8\}/&-/' arquivo.txt
Modo Moderno
Ao invés de jogar a saída, separei o comando com ponto-vírgula “;” e lancei outro sed “s”
sed 's/../\(&\)/;s/.\{8\}/&-/' arquivo.txt
Modo Pós-Moderno
Esse modo é pra entender o seguinte
O primeiro comando entre parênteses “\(..\)”
Depois separado por barra \
Lancei ou comando entre parênteses “\(.\{4\}\)”
A saída do primeiro comando vai pro barra 1 “\1”
E a do segundo comando pro barra 2 “\2”
Poderia ter também o barra 3, n, …
sed 's/\(..\)\(.\{4\}\)/(\1)\2-/g' arquivo.txt
Fica assim:
(71)8432-5689
(43)3328-5236
(11)4001-4004
(36)3355-4488
====================================================================
ARQUIVO OU DIRETÓRIO MAIS ANTIGO
if [ "arquivo1" -ot "arquivo2" ]
then
echo "O arquivo é mais antigo."
else
echo "O arquivo NÃO é mais antigo."
fi
=====================================================================
ARQUIVO OU DIRETÓRIO MAIS RECENTE
if [ "arquivo2" -nt "arquivo1" ]
then
echo "O arquivo é mais recente."
else
echo "O arquivo NÃO é mais recente."
fi
=============================================================================================
https://www.livrosdelinux.com.br/if-then-else/
=============================================================================================
Contador
#!/bin/sh
contar() {
echo "$conta"
}
while true
do
conta=$(($conta+1))
contar
sleep 1
done
==============================================================================================
Contador com FOR - e numero de saltos
#!/bin/bash
for((i = 5; i >= 1; i--))
do
clear
echo "Continuando em $i..."
sleep 1
done
=============================================================================================
Loop infinito
#!/bin/bash
for (( loop=1;loop>0;loop++));do
#código aqui dentro
done
=============================================================================================
Buscar Diretórios com a maior quantidade de arquivos:
du -k . | sort -n -k 1 | tail -30
Lista em um diretório os arquivos mais velhos/antigos:
ls -lt | tail -30
Listar os arquivos maiores:
ls -l | sort -n -k 5 | tail -30
=============================================================================================
Mover arquivos com mais de 30 dias
find /home/teste -mtime +30 -exec mv {} /home/backup \;
=============================================================================================
Listar arquivos por data
ls --full-time|awk -F" " '$6 ~ /2016-12-01/ {print $9}'
=============================================================================================
Encontrando arquivos maiores de 500M
find . -size +500M
=============================================================================================
Verificar tamanho de Pastas
du -sch *
=============================================================================================
Remover muitos arquivos em um diretorio
ls -1 |xargs rm
=============================================================================================
Encontrar arquivos, por permissão, data de criação ou modificação etc...
https://e-tinet.com/linux/comando-find-linux/
=============================================================================================
Limpar swap
Para limpar o Cache/Buffer de RAM:
$ sudo -i
# sync; echo 1 > /proc/sys/vm/drop_caches
Para limpar dentries e inodes:
$ sudo -i
# sync; echo 2 > /proc/sys/vm/drop_caches
Para limpar tudo: Cache/Buffer, Dentries e Inodes:
$ sudo -i
# sync; echo 3 > /proc/sys/vm/drop_caches
Para limpar o espaço em disco consumido pela SWAP:
$ sudo -i
# swapoff -a && swapon -a
=============================================================================================
Excluir arquivos com mais de 5 dias
Listar primeiro
find /home/user -type f -mtime 5 -exec ls -lrth {} \;
Depois excluir com rm -rf
find /home/user -type f -mtime 5 -exec rm -rf {} \;
=============================================================================================
Criando arquivos de 100M
dd if=/dev/zero of=/tmp/arquivo.img bs=1M count=100
=============================================================================================
Comando cut
Outro comando muito útil é o cut. Para nossos exemplos, utilizaremos um arquivo chamado exemplos_cut.txt:
$ cat exemplos_cut.txt
abcdefgh
12345678
ijklmnop
9ABCDEFG
1. Seleção de uma coluna
Para selecionar uma coluna de um arquivo, usamos a diretiva -c. O comando a seguir seleciona a terceira coluna de cada linha:
$ cut -c3 exemplos_cut.txt
c
3
k
B
2. Seleção de uma faixa de colunas
Em vez de apenas uma coluna, podemos especificar uma faixa:
$ cut -c3-5 exemplos_cut.txt
cde
345
klm
BCD
A diretiva -c3-5 instrui o comando cut a pegar as colunas 3, 4 e 5.
3. Seleção de colunas de caracteres especificando apenas a posição de início ou fim.
Podemos também instruir o programa a pegar todas as colunas a partir de uma posição:
$ cut -c3- exemplos_cut.txt
cdefgh
345678
klmnop
BCDEFG
A diretiva -c3- indica uma faixa de colunas, porém não especifica o fim, então todas as colunas começando na coluna 3 são selecionadas.
$ cut -c-3 exemplos_cut.txt
abc
123
ijk
9AB
Da mesma forma, a diretiva -c-3 indica uma faixa sem especificar o valor inicial, que é então assumido como a primeira coluna. Neste exemplo, todas as colunas até a coluna 3 são selecionadas.
4. Seleção de campos específicos de um arquivo
O comando cut também aceita delimitadores. Um exemplo clássico é o arquivo /etc/passwd, cujos registros contém diversos valores separados pelo delimitador ::
root:x:0:0:root:/root:/bin/bash
Como podemos ver, o arquivo /etc/passwd contém 8 campos.
Para selecionar o nome de todos os usuários definidos no arquivo /etc/passwd, fazemos:
$ cut -d: -f1 /etc/passwd
root
daemon
bin
sys
sync
games
man
lp
...
Da mesma forma como fizemos com as colunas nos exemplos anteriores, podemos selecionar múltiplos campos de um arquivo.
$ cut -d: -f1,7 /etc/passwd
root:/bin/bash
daemon:/usr/sbin/nologin
bin:/usr/sbin/nologin
sys:/usr/sbin/nologin
sync:/bin/sync
games:/usr/sbin/nologin
man:/usr/sbin/nologin
lp:/usr/sbin/nologin
Este comando seleciona dois campos do arquivo /etc/passwd: o nome do usuário e a shell atribuída a este usuário.
5. Exibição de todos os campos, com exceção de alguns
Vamos agora combinar o comando grep com o comando cut, exibindo todas as informações sobre determinados usuários, excluindo o campo 7, a shell definida para este usuário:
grep "/bin/bash" /etc/passwd | cut -d':' --complement -s -f7
root:x:0:0:root:/root
queiroz:x:1000:1000:Rubens Queiroz de Almeida,,,:/home/queiroz
Como este comando foi exibido em meu computador pessoal, apenas os usuários root e queiroz possuem a shell /bin/bash. Para estes usuários se exibiu a linha correspondente do arquivo /etc/passwd, com exceção do campo 7, a shell.
6. Alterar o delimitador dos campos na saída do comando cut
Como pudemos ver nos exemplos com o arquivo /etc/passwd, o delimitador utilizado para gerar a saída do comando cut foi o mesmo do arquivo original. Para alterar o delimitador a ser usado, utilizamos a diretiva --output-delimiter:
$ cut -d':' -s -f1,6,7 --output-delimiter='#' /etc/passwd
root#/root#/bin/bash
daemon#/usr/sbin#/usr/sbin/nologin
bin#/bin#/usr/sbin/nologin
sys#/dev#/usr/sbin/nologin
sync#/bin#/bin/sync
games#/usr/games#/usr/sbin/nologin
man#/var/cache/man#/usr/sbin/nologin
lp#/var/spool/lpd#/usr/sbin/nologin
mail#/var/mail#/usr/sbin/nologin
news#/var/spool/news#/usr/sbin/nologin
...
7. Combinação do comando cut com outros comandos
O comando cut é muito utilizado em conjunto com outros processos, visto que ele pode extrair trechos da saída gerada por outros comandos.
Vejamos um exemplo com o comando ps (listagem de processos). O comando ps gera uma saída como abaixo:
$ ps -ef | head
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 Nov03 ? 00:00:03 /sbin/init splash
root 2 0 0 Nov03 ? 00:00:00 [kthreadd]
root 3 2 0 Nov03 ? 00:00:00 [ksoftirqd/0]
root 5 2 0 Nov03 ? 00:00:00 [kworker/0:0H]
root 7 2 0 Nov03 ? 00:00:52 [rcu_sched]
root 8 2 0 Nov03 ? 00:00:00 [rcu_bh]
root 9 2 0 Nov03 ? 00:00:00 [migration/0]
root 10 2 0 Nov03 ? 00:00:00 [watchdog/0]
root 11 2 0 Nov03 ? 00:00:00 [watchdog/1]
A saída é formatada em colunas e para isto, o que separa os campos são um ou mais espaços em branco. Isto é um problema para nós, pois o comando cut aceita apenas um caractere como separador.
Precisamos então combinar o comando cut com outros comandos para eliminar os múltiplos espaços em branco em sequência.
Vejamos como podemos fazer isto:
$ ps -ef | sed 's/\s\+/ /g' | cut -d' ' -f2,8
PID CMD
1 /sbin/init
2 [kthreadd]
3 [ksoftirqd/0]
5 [kworker/0:0H]
7 [rcu_sched]
8 [rcu_bh]
9 [migration/0]
10 [watchdog/0]
11 [watchdog/1]
... várias linhas removidas
A diretiva \s do sed casa com os caracteres em branco <TAB> e o próprio espaço em branco, e o caractere + indica que dois ou mais caracteres em branco ou tabulações devem ser substituídas por apenas um espaço em branco, tornando assim a saída gerada adequada para processamento pelo comando cut.
Para substituir os espaços em branco em sequência, podemos também usar o comando tr:
$ ps -ef | tr -s ' ' | cut -d' ' -f2,8
Monitorar hosts gerando chamados e os gerenciando
1 - Realizar o download em /opt - Download
2 - Acessar /opt/install.monitor
3 - Para instalar, execute install-monitor.sh
4 - Para criar elementos - /opt/MONITOR/create_monitor.sh
5 - Para Monitorar execute - monitor
################################################################################################
DATA STATUS HOST IP
################################################################################################
. 02/04/2020_14:14:34 -- STATUS | SERVIDOR - NODE DOWN --- LX001 192.168.15.2 |||||||
6 - Para visualizar incidentes execute - /opt/MONITOR/incid-dash.sh
==================================== CHAMADOS PENDENTES =======================================
INC-LX001-02042020141228 INC-LX003-02042020141416 INC-WS001-02042020141448 INC-WS003-02042020141258
7 - Para visualizar os chamados abertos - /opt/MONITOR/gestor-inc.sh
================================================================================================
Cripter Spartacus é um encriptador de textos.
1 - Realizar o download em /opt - Download
2 - Descompactar : tar -xzvf CRYPTER_SPARTACUS.tar.gz
3 - Instalar executando : /opt/CRYPTER_SPARTACUS/install.sh