tira_usb.sh - Remover dispositivo USB
Publicado por Emerson Prado e Souza (última atualização em 05/03/2015)
[ Hits: 3.506 ]
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
Font Installer v1.0 - Instalação de Fontes no Sistema
Monitorando processos, CPU e memória
Backup automático MySQL + arquivos do servidor web
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Como instalar o repositório do DBeaver no Ubuntu
Como instalar o Plex Media Server no Ubuntu
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
PIP3 - erro ao instalar módulo do mariadb para o Python (9)
É normal não gostar de KDE? (8)
O programa assinador digital (0)
dpkg: erro: gatilho de arquivo duplicado chamado pelo arquivo de nome (6)









