Pendetect
Publicado por Victor Guimarães Nunes 15/07/2008
[ Hits: 6.012 ]
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 ;
Script de cópia (destino - origem) otimizado
filelist2link - converte lista de pacotes de um repositório em uma lista de links para o wget
Para quem esquece facil das coisas
Transformar eBook em Audiobook
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Não to conseguindo resolver este problemas ao instalar o playonelinux (1)
Excluir banco de dados no xampp (1)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta