Pendetect
Publicado por Victor Guimarães Nunes 15/07/2008
[ Hits: 5.881 ]
Download pendetect-0.2-noarch-1vn.tgz
Detecta pendrives com bash e kdialog.
Uma vantagem deste script para outros feitos para Slackware (kernel 2.4) é que trabalha integrado com o KDE (interface padrão do sistema) e detecta apenas mídias de armazenamento USB, nao trabalha, por exemplo, com webcam nem mouse.
Espero que gostem (eu achei melhor do que compilar o kernel 2.6 e instalar o HAL. Dá muito trabalho no slack 11)
ps.: Postando o pacote .tgz, em vista de algumas dependências, como os arquivos de áudio (alarmes de conexão e desconexão).
#!/bin/bash ###################################################################################### # # Pendetect: # detecta pendrives junto ao ambiente Linux/KDE. # # Este script pode ser alterado livremente. # desenvolvido por Victor Nunes - vitimnunes@gmail.com # ###################################################################################### loadconfig() { ###################################################################################### # # Configuracoes de opcao de pendetect # # Modifique com cuidado! # ###################################################################################### # LOCK: arquivo temporario de pendetect LOCK=\"/tmp/.pendetect.lock\" # penIn_Wav: som wav que é reproduzido quando um pendrive é detectado penIn_Wav=\"/usr/share/pendetect/audio/pendriveIn.wav\" # penOut_Wav: som wav que é reproduzido quando um pendrive é desconectado penOut_Wav=\"/usr/share/pendetect/audio/pendriveOut.wav\" # errormsg: mostra a mensgem de erro no dialogo errormsg=\"Nao foi possivel montar o dispositivo conectado. Abortado!\" # devpath: dispostivos que podem ser montados como pendrives devpath=\"/dev/sda:/dev/sdb:/dev/sdc:/dev/sdd:/dev/sde:/dev/sdf:/dev/sdg:/dev/sdh\" # filemanager: nome do gerenciador de arquivos que aparecera no menu filemanager=\"konqueror\" # mountpoint: ponto de montagem do pendrive mountpoint=\"/mnt/pen\" # opendircmd: comando para abrir o diretorio montado opendircmd=\"kfmclient exec $mountpoint\" # msgconnected: mensagem da janela do menu msgconnected=`echo -e \"Novo dispositivo USB conectado.\\nO que deseja fazer?\"` # opc1: primeira opcao do menu opc1=\"Abrir com $filemanager\" # opc2: segunda opcao do menu opc2=\"Nao fazer nada\" # geometry: geometria da janela do menu geometry=\"250x250++\" } configure() { ###################################################################################### # # Prepara o pendetect para rodar sem erros, cria e resolve as dependencias # ###################################################################################### mkdir -p $mountpoint rm -f $LOCK } reporterror() { ###################################################################################### # # Reporta um erro de montagem do pendrive # ###################################################################################### echo \"erro\" kdialog --caption \"Erro\" --error \"$errormsg\" exit 1 } checkdisconnection() { ###################################################################################### # # Verifica se um pendrive desmontado ja foi desconectado da porta usb # ###################################################################################### C_LOCK=`cat $LOCK` lsusb | grep \"$C_LOCK\" >&/dev/null # verifica se o usuario removeu o pendrive rcd=$? case $rcd in 0) return 0 ;; # caso o usuario NAO tenha removido o dispositivo 1) return 1 ;; # caso o usuario tenha removido o dispositivo esac } ejectactions() { ###################################################################################### # # Acoes executadas quando o usuario desmonta o pendrive # ###################################################################################### SHORTCUT=$1 kdialog --caption \"usb-removido\" --msgbox \"O dispositivo ja pode ser removido com segurança!\" echo -n \'Aguardando desconexao do dispostivo...\' while [ true ] ; do sleep 0.5 checkdisconnection ; # funcao que verifica se o usuario removeu o pendrive rd=$? case $rd in 0) continue ;; 1) echo \'desconectado\' ; rm -f $SHORTCUT ; play $penOut_Wav ; start ;; esac done } waitforumount() { ###################################################################################### # # Acoes executadas quando o pendrive esta sendo usado, espera o comando para excutar # os procedimentos de remocao do dispositivo # ###################################################################################### DEVICE=$1 SHORTCUT=\"$HOME/Desktop/`basename $DEVICE`.desktop\" echo -n \'Monitorando dispositivo...\' while [ true ] ; do sleep 1 mount -l | grep $DEVICE >&/dev/null rcmd=$? case $rcmd in 0) continue ;; 1) echo \'desmontado\' ; ejectactions $SHORTCUT ;; esac done } shortcutgenerate() { ###################################################################################### # # Gera o atalho para o pendrive na area de trabalho, futuramente também na system tray # ###################################################################################### DEVICE=$1 MOUNTPOINT=$2 SHORTCUT=\"$HOME/Desktop/`basename $DEVICE`.desktop\" echo \"[Desktop Entry]\" > $SHORTCUT echo \"Dev=$DEVICE\" >> $SHORTCUT echo \"Encoding=UTF-8\" >> $SHORTCUT echo \"Icon=usbpendrive_mount\" >> $SHORTCUT echo \"MountPoint=$MOUNTPOINT\" >> $SHORTCUT echo \"ReadOnly=false\" >> $SHORTCUT echo \"Type=FSDevice\" >> $SHORTCUT echo \"UnmountIcon=usbpendrive_unmount\" >> $SHORTCUT } mountpen() { ###################################################################################### # # Executa a montagem do dispositivo, isto anexa o conteudo do pendrive ao sistema # deixando-o pronto para usar # ###################################################################################### OPENDIR=$1 npath=1 montado=0 while [ $npath -lt 9 ] ; do device=`echo $devpath | cut -d: -f$npath` devicenow=1 while [ $devicenow -lt 10 ] ; do echo -en \"\\rtentando montar a partir de $device$devicenow...\" mount -t vfat $device$devicenow $mountpoint >&/dev/null r=$? case $r in 0) echo \'ok\' ; shortcutgenerate $device$devicenow $mountpoint ; montado=1 ; break ;; *) devicenow=`expr $devicenow + 1` ;; esac done case $montado in 0) continue ;; 1) break ;; esac npath=`expr $npath + 1` done if [ $montado == 1 ] ; then case $OPENDIR in 0) waitforumount $device$devicenow ;; 1) $opendircmd ; waitforumount $device$devicenow ;; esac else reporterror ; fi } getbus() { ###################################################################################### # # Obtem informacoes sobre o bus de dispostivos que ja foram plugados # ###################################################################################### bus=`lsusb | grep -v \'0000:0000\' | cut -d\' \' -f2` bus=`echo $bus | tr \\n \\t` } getdev() { ###################################################################################### # # Obtem informacoes sobre o dev de dispostivos que ja foram conectados # ###################################################################################### dev=`lsusb | grep -v \'0000:0000\' | cut -d\' \' -f4 | cut -d: -f1` dev=`echo $dev | tr \\n \\t` } start() { ###################################################################################### # # Inicia o monitoramento das portas usb, esta funcao detecta as conexoes de # dispositivos USB-STORAGE, ou seja, de drives de armazenamento. Nao detecta mouses # ou qualquer outro ustilitario usb que nao seja de armazenamento. # ###################################################################################### while [ true ] ; do sleep 1.5 getbus; getdev; if [ \"$bus\" != \"\" ] ; then ndrv=`echo $bus | wc -w` limit=`expr $ndrv + 1` ndrvnow=1 while [ $ndrvnow -lt $limit ] ; do echo -en \"\\rnumero de drives: $ndrv\" busnow=`echo $bus | cut -d\' \' -f$ndrvnow` devnow=`echo $dev | cut -d\' \' -f$ndrvnow` mod=`usbmodules --device /proc/bus/usb/$busnow/$devnow` if [ \"$mod\" == \"usb-storage\" ] ; then echo -e \"\\nusb-storage encontrado em [bus=$busnow|dev=$devnow]\" echo `lsusb | grep \"Bus $busnow Device $devnow\"` > $LOCK play $penIn_Wav menu=`kdialog --caption \"usb-drive\" --miniicon \"usbpendrive_unmount\" --menu \"$msgconnected\" 0 \"$opc1\" 1 \"$opc2\" --geometry \"$geometry\"` case $menu in 0) mountpen 1 ;; *) mountpen 0 ;; esac else ndrvnow=`expr $ndrvnow + 1` fi done fi done } echo -n \"Carregando configuracoes...\" loadconfig ; echo \"ok\" echo -n \"Aplicando configuracao...\" configure ; echo \"ok\" echo \"Iniciando monitoramento...\" start ;
SlackBuild para empacotar o Firefox (binário) pro Slackware
Script - muda nomes de arquivos de iso-8859-1 para utf8 recursivamente
Gerenciador de arquivos youtube-dl
Configurar data e hora em Xdialog
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
E a guerra contra bots continua
Tradução do artigo do filósofo Gottfried Wilhelm Leibniz sobre o sistema binário
Conheça o firewall OpenGFW, uma implementação do (Great Firewall of China).
Instalando o FreeOffice no LMDE 6
Anki: Remover Tags de Estilo HTML de Todas as Cartas
Colocando uma opção de redimensionamento de imagem no menu de contexto do KDE
Criar uma base de reconhecimento de HW no VOL (9)
Não consigo acessar os modos de desempenho no mint 2.3 (8)
[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