tira_usb.sh - Remover dispositivo USB
Publicado por Emerson Prado e Souza (última atualização em 05/03/2015)
[ Hits: 2.951 ]
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
ip - Imprimi ip externo na tela
Atenção a quem posta conteúdo de dicas, scripts e tal (1)
Manutenção de sistemas Linux Debian e derivados com apt-get, apt, aptitude e dpkg
Melhorando o tempo de boot do Fedora e outras distribuições
Como instalar as extensões Dash To Dock e Hide Top Bar no Gnome 45/46
Como Atualizar Fedora 39 para 40
Instalar Google Chrome no Debian e derivados
Consertando o erro do Sushi e Wayland no Opensuse Leap 15
Instalar a última versão do PostgreSQL no Lunix mantendo atualizado
Flathub na sua distribuição Linux e comandos básicos de gerenciamento
Dongle Bluetooth 5.0 não funciona no Pop Os 22.04 (2)
Impressora Canon Ip 1800 (Drivers) 64 bit (2)
[Shell Script] Script para desinstalar pacotes desnecessários no OpenSuse
[Shell Script] Script para criar certificados de forma automatizada no OpenVpn
[Shell Script] Conversor de vídeo com opção de legenda
[C/C++] BRT - Bulk Renaming Tool
[Shell Script] Criação de Usuarios , Grupo e instalação do servidor de arquivos samba