Script para buscar discos não utilizados no Linux [RESOLVIDO]

1. Script para buscar discos não utilizados no Linux [RESOLVIDO]

Iara Rodrigues Soares
arairs

(usa CentOS)

Enviado em 21/12/2021 - 12:45h

Olá pessoal,

Estou tentando construir um script que me traga os discos não utilizados no Linux (Oracle Linux). Para isso, estou fazendo em duas partes, primeiro vou verificar discos que não têm nenhuma partição criada ($i), e depois verificar os discos sem ponto de montagem ($x). Porém, em algum momento haverá duplicidade nesses dois arquivos, e estou com problemas justo nessa parte de eliminar o que está repetido. Vou postar o script todo e comentar a parte que estou com problemas:

#cria lista com a quantidade de partições de cada disco
var1=$(partprobe -ds | awk '{print $NF}')

#Filtra a saída acima para que aparece apenas o disco e o numero da partição
var2=$(partprobe -ds| tr -d : | awk -F " " '{print $1 $NF}' | awk '{print substr($1,6); }' )

#Filtra todos os discos que não possuem ponto de montagem
var3=$(lsblk --noheadings --raw | awk '$1~/s.*[[:digit:]]/ && $7==""' | awk '{print $1}' | awk 'NR > 1 { print prev } { prev = $0 }')

#Esse for compara a saida do partprobe com a quantidade de partição. Menos que uma partição, o disco não tem nenhuma partição. Mais que uma ele tem, ai gera os arquivos txt
for i in $var1
do
if [ "$i" -lt 1 ]; then
partprobe -ds | awk '{print $1, $NF}' > menor_que_1.txt
else
partprobe -ds | awk '{print $1, $NF}' > igual_ou_maior_que_1.txt
fi
done


#Pega o resultado desejad da $var1 e formata para retirar /dev e outros caracteres
var4=$(tr -d : <igual_ou_maior_que_1.txt | awk -F " " '{print $1 $NF}' | awk '{print substr($1,6); }' )

#ESTOU COM PROBLEMA AQUI. Quero que esse for compare: tudo que tem na var4 e var3, de maneira que, o que ja existe na var4(que é a mesma var1 mas sem caracteres indesejados), não seja exibido na var3.
#Atualmente esse for retorna apenas linhas vazias

for i in $var4 and x in $var3
do
if [ $x!=$i ]; then
echo $x

else
echo "Arquivo vazio"
fi
done

Também tentei um for dentro do outro, mas saiu tudo errado rsrs. Tentei também gerar um txt no lugar da var4, e usar esse txt pra comparar com a var3. Estou preferindo usar variáveis, porque eu não queria gerar um monte de arquivos de texto
Eu queria saber se da pra fazer esse tipo de comparação (linha a linha) com o for. Alguém poderia me ajudar, com o for ou mesmo com outra maneira de fazer essa comparação?


  


2. MELHOR RESPOSTA

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 22/12/2021 - 16:35h

arairs escreveu:

msoliver
Esses comando que você mandou, eu substitui o --sort por --output e ficou assim

c1='\x1b[1;32m';fc='\x1b[m';

lsblk --output NAME|awk '$1~/^sd[a-z][0-9]/{if(NF==6) print $1,"Sem Uso";else print $1,"'"$c1"'Em Uso'"$fc"'"}'
#-------------------------------------------------------------------
#Só as partições não utilizadas, não montadas
awk '$1~/^sd[a-z][0-9]/{if(NF<7) print $1}' <<< $(lsblk --output NAME)


Porém não retornou nada.
Se não for pedir demais, poderia me explicar um pouco as linhas?

Estranho seria se retornasse algo... :)
Com a sua alteração, "lsblk --output NAME",
temos somente 1 campo por registro, e o mesmo não "casa" com a REGEX!:
--------------------------------------------------------------------------------------------------
Como funciona:
A lógica é:
Para a saída de: => lsblk --raw
Registro com 7 campos, está montado, com 6 campos não montado.
---------------------------------------------------------------------------------------
Casa o campo $1 com a regex:
'$1~/^sd[a-z][0-9]/
printa somente o campo 1, dos registros que tem menos que 7 Campos, partições não montadas:
if(NF<7) print $1
-------------------------------------------------------
Alterado para funcionar "com a sua alteração":
Lista Não Montados:
lsblk --raw --output NAME,MOUNTPOINT|awk '$1~/^[a-z]{3}[0-9]/ && NF==1{printf "%s\n",$1}'
-------------------------------------------------------
Lista Montados:
lsblk --raw --output NAME,MOUNTPOINT|awk '$1~/^[a-z]{3}[0-9]/ && NF==2{printf "%s\n",$1}'
--------------------------------------------------------
É isso...


______________________________________________________________________
Importante:
lynx --dump https://www.vivaolinux.com.br/termos-de-uso/|sed -nr '/^[ ]+Se/,/dou.$/p'
______________________________________________________________________
Nota de esclarecimento:
O comando: ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________


3. Re: Script para buscar discos não utilizados no Linux

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 21/12/2021 - 20:37h

a principio 'VAR1' vai te causar erro .. veja .. eu tenho 4 partições no disco 'b' !!!

root@phantom /home/mauricio # partprobe -ds | awk '{print $NF}'
4
3
root@phantom /home/mauricio # partprobe -ds
/dev/sda: msdos partitions 1 2 3 4
/dev/sdb: gpt partitions 1 2 4 3
root@phantom /home/mauricio #



------------------------------------------------------| Linux User #621728 |------------------------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------------------| Linux User #621728 |------------------------------------------------------




4. Re: Script para buscar discos não utilizados no Linux [RESOLVIDO]

leandro peçanha scardua
leandropscardua

(usa Ubuntu)

Enviado em 21/12/2021 - 22:31h


/proc/partitions fornece os discos e partitições(se tiver) numa sequência parecida com a saída do lsblk.


5. Re: Script para buscar discos não utilizados no Linux

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 21/12/2021 - 22:34h

Partições montadas/Desmontadas.
c1='\x1b[1;32m';fc='\x1b[m';
lsblk --sort NAME|awk '$1~/^sd[a-z][0-9]/{if(NF==6) print $1,"Sem Uso";else print $1,"'"$c1"'Em Uso'"$fc"'"}'
-------------------------------------------------------------------
Só as partições não utilizadas, não montadas
awk '$1~/^sd[a-z][0-9]/{if(NF<7) print $1}' <<< $(lsblk --sort NAME)





______________________________________________________________________
Importante:
lynx --dump https://www.vivaolinux.com.br/termos-de-uso/|sed -nr '/^[ ]+Se/,/dou.$/p'
______________________________________________________________________
Nota de esclarecimento:
O comando: ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________



6. Re: Script para buscar discos não utilizados no Linux [RESOLVIDO]

Iara Rodrigues Soares
arairs

(usa CentOS)

Enviado em 22/12/2021 - 12:15h

msoliver
Esses comando que você mandou, eu substitui o --sort por --output e ficou assim

c1='\x1b[1;32m';fc='\x1b[m';

lsblk --output NAME|awk '$1~/^sd[a-z][0-9]/{if(NF==6) print $1,"Sem Uso";else print $1,"'"$c1"'Em Uso'"$fc"'"}'
#-------------------------------------------------------------------
#Só as partições não utilizadas, não montadas
awk '$1~/^sd[a-z][0-9]/{if(NF<7) print $1}' <<< $(lsblk --output NAME)


Porém não retornou nada. Se não for pedir demais, poderia me explicar um pouco as linhas?



7. Re: Script para buscar discos não utilizados no Linux [RESOLVIDO]

Iara Rodrigues Soares
arairs

(usa CentOS)

Enviado em 22/12/2021 - 12:17h

leandropscardua

Nesse caso uso o lsblk porque queria trazer o que está montado/desmontado. Mas obrigada pela dica



8. Re: Script para buscar discos não utilizados no Linux [RESOLVIDO]

Iara Rodrigues Soares
arairs

(usa CentOS)

Enviado em 22/12/2021 - 12:18h

@Mauriciodez,
Não entendi. Aqui no meu caso retorna direitinho



9. Re: Script para buscar discos não utilizados no Linux [RESOLVIDO]

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 22/12/2021 - 15:56h


arairs escreveu:
@Mauriciodez,
Não entendi. Aqui no meu caso retorna direitinho


Só te mostrei uma falha no seu script, usar ele assim é com vc !!!

------------------------------------------------------| Linux User #621728 |------------------------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------------------| Linux User #621728 |------------------------------------------------------




10. SCRIPT PARA BUSCAR DISCOS NÃO UTILIZADOS NO LINUX

Hertz Raya Zocolan Silva
hertzraya

(usa Outra)

Enviado em 18/01/2022 - 09:13h

Perfeito !! Parabens !! Me ajudou muito







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts