tira_usb.sh - Remover dispositivo USB
Publicado por Emerson Prado e Souza (última atualização em 05/03/2015)
[ Hits: 3.707 ]
Este script serve para remover um dispositivo USB via linha de comando. Ele apresenta os dispositivos em um menu simples, como este abaixo:
1 USB Keykoard
2 USB OPTICAL MOUSE
Basta escolher o número do dispositivo, e o script o remove. É necessário ter permissão de sudo.
Para remover dispositivos de armazenamento, é necessário desmontar o sistema de arquivos antes (há um aviso no script).
#!/bin/bash
# tira_usb.sh - Script para ejetar dispositivos USB
# Os dispositivos ficam em subdiretórios do diretório /sys/bus/usb/devices
# Nestes diretórios, há dois arquivos importantes:
# product - A descrição do dispositivo
# remove - Remove o dispositivo se direcionarmos "1" para ele
# O script considera apenas diretórios cujo nome começa com dígito
# e que contenham o arquivo "product"
# Os outros diretórios não parecem úteis para a remoção de dispositivos
# Entra no diretório dos dispositivos e lista as descrições com o comando
# ls -1 - Lista um diretório por linha
# awk '/^[[:digit:]]/ - Filtra diretórios com nome começando por dígito
# { system(" - Executa comando dentro do "awk"
# [ -f "$1"/product ] - Testa a existência de arquivo chamado
# $1/product - Para o "awk", $1 é o 1º campo - o nome do diretório
# && echo $1 - Caso exista, retorna o nome do diretório
# Os parênteses transformam o resultado em uma matriz
# A notação #DIRS[*] retorna a quantidade de elementos da matriz
cd /sys/bus/usb/devices
DIRS=(`ls -1 | awk '/^[[:digit:]]/ { system("[ -f "$1"/product ] && echo "$1) }'`)
QTD=${#DIRS[*]}
# Gera uma segunda matriz com as descrições dos dispositivos USB
for INDICE in ${!DIRS[*]} ; do
DISP[INDICE]="`cat ${DIRS[$INDICE]}/product`"
done
# Cria um menu com os índices e os dispositivos
# Soma 1 ao índice para ficar mais natural ao usuário
# e para reservar a opção "0" para sair do script
# Executa o menu até que o usuário digite "0"
while [ "$INDICE" != "0" ] ; do
clear
echo "Escolha um dos números mostrados ou 0 para sair"
echo "Para dispositivos de armazenamento - pen drives, HDs/SDDs externos, etc - desmontar sistema de arquivos antes!"
echo
for INDICE in ${!DIRS[*]} ; do
echo -e "`expr $INDICE + 1`\t${DISP[INDICE]}"
done
echo
read INDICE
# Verifica se o usuário digitou apenas dígitos
if [[ ! $INDICE =~ ^[[:digit:]]+$ ]] ; then
echo "Entrada inválida"
# Verifica se o usuário digitou número dentro do limite da matriz
elif [ $INDICE -gt $QTD ] ; then
echo "Entrada inválida"
# Verifica se o usuário digitou um elemento ou "0"
elif [ $INDICE -gt 0 ] ; then
echo 1 | sudo tee "${DIRS[`expr $INDICE - 1`]}/remove"
fi
done
Script para verificar o Status da bateria
Limpe bibliotecas não utilizadas - new release
Script para monitorar os 10 processos que mais consomem CPU e Memória
Instalar e Configurar a santíssima trindade (PAP) no Void Linux
O Editor de Texto Nano: Simplicidade no Terminal
SynapSeq - programa para estimular as ondas cerebrais
Por que seu __DIR__ falhou ou o "inferno" dos caminhos no PHP
[Resolvido] Meu monitor suporta 100fps. Por que o máximo é 60fps nos jogos?
Jogando "Magic" gratuitamente no Linux
Zoxide e fzf no bash para incrementar o uso do Terminal
[pedido] biglinux versao 1 (0)
A falsa sensação de que entende a tal da palavra! (1)









