Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
Problemas com vol_id [RESOLVIDO]
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Portuguese
View previous topic :: View next topic  
Author Message
GothicKnight
Tux's lil' helper
Tux's lil' helper


Joined: 02 Aug 2004
Posts: 123
Location: Santa Maria da Feira/Portugal

PostPosted: Fri Sep 02, 2005 7:29 pm    Post subject: Problemas com vol_id [RESOLVIDO] Reply with quote

Eu à uns tempos atrás andei à procura de um script que me fizesse o automount dos dispositivos USB.

Que era o seguinte tirando algumas modificações que eu fiz:
Code:

#!/bin/bash
base=$(basename $DEVNAME)

#Send info to logger
#logger -t automount_dev "`env`"
echo " " >> /var/log/messages
echo " >> Automounter Script on $DEVNAME" >> /var/log/messages



#Check to see if the device is a sdX1 device
if [[ $base != sd[a-h][1-9] ]]
#if [ ! -b /dev/$base ]
then
 echo "  > Rejecting device..." >> /var/log/messages
 exit
fi

#Do this when adding the plugged device
if [ "$ACTION" == "add" ]
 then
 echo "  > Action: $ACTION device: /dev/$base" >>  /var/log/messages
 #Retrieve info about the added device and store into variables
 #product=$(udevinfo -a -p $DEVPATH | grep SYSFS{product} -m 1 | cut --delim='"' -f2)
 #vendor=$(udevinfo -a -p $DEVPATH | grep SYSFS{vendor} -m 1 | cut --delim='"' -f2)
 #serial=$(udevinfo -a -p $DEVPATH | grep SYSFS{serial} -m 1 | cut --delim='"' -f2)
 #volumeID=`udev_volume_id -l /dev/$base`
 #echo "  > Product: $product, Vendo: $vendor, Serial: $serial" >> /var/log/messages

 #echo "$base+$DEVPATH+$vendor+$product+$serial" >> /tmp/$base

 #Create mount point and mount the device to it with proper access
 mkdir /mnt/USB/$base
 FS=`vol_id -t /dev/$base`
 echo "  > Volume Filesystem is: $FS" >> /var/log/messages

 if [ $FS = "reiserfs" ]
 then
  mount -t $FS -o sync /dev/$base /mnt/USB/$base
  echo " > Mounted /dev/$base in /mnt/USB/$base with code $?" >> /var/log/messages
 fi
 if [ $FS = "vfat" ]
 then
  mount -t $FS -o sync,defaults,umask=0 /dev/$base /mnt/USB/$base
  echo " > Mounted /dev/$base in /mnt/USB/$base with code $?" >> /var/log/messages
 fi
 if [ $FS = "ntfs" ]
 then
  mount -t $FS -o sync,umask=0 /dev/$base /mnt/USB/$base
  echo " > Mounted /dev/$base in /mnt/USB/$base with code $?" >> /var/log/messages
 fi

 #Create a KDE link file for use on the desktop (used for KDE 3.4)
 #--Link name is generated from the devices' vendor, product, serial and $base
 #echo "[Desktop Entry]" >> /tmp/link2$base
 #echo "Dev=/dev/$base" >> /tmp/link2$base
 #echo "Encoding=UTF-8" >> /tmp/link2$base
 #echo "Icon=usbpendrive_mount" >> /tmp/link2$base
 #echo "MountPoint=/mnt/usb/$base" >> /tmp/link2$base
 #echo "Name=$vendor $product [$serial] on $base" >> /tmp/link2$base
 #echo "Name[en_US]=$vendor $product [$serial] on $base" >> /tmp/link2$base
 #echo "ReadOnly=False" >> /tmp/link2$base
 #echo "Type=FSDevice" >> /tmp/link2$base
 #echo "UnmountIcon=usbpendrive_unmount" >> /tmp/link2$base
 #echo "Encoding=UTF-8" >> /tmp/link2$base
 #Copy the link file to all users' Desktops and to the root's
 #for x in /home/*; do cp /tmp/link2$base $x/Desktop/link2$base; done
 #cp /tmp/link2$base /root/Desktop/link2$base
fi

#Do this when the device is unplugged
if [ "$ACTION" == "remove" ]
then
 echo "  > ACTION: $ACTION DEVICE: /dev/$base" >>  /var/log/messages
 #Retrieve the serial number of the device from the /tmp/$base file
 #--only needed for checking for specific devices
 #serial=$(cat /tmp/$base | cut --delim='+' -f5)

 #Unmount the device and cleanup references
 #fuser -m -k /mnt/USB/$base
 umount -l /mnt/USB/$base
 rm -rf /mnt/USB/$base
 #rm -f /tmp/link2$base
 #rm -f /tmp/$base
 #Remove KDE Desktop links created
 #for x in /home/*; do rm -f $x/Desktop/link2$base; done
 #rm -f /tmp/$base /root/Desktop/$base

fi


O problema que tenho agora é que o FS=`vol_id -t /dev/$base` não me devolve qualquer valor quando executado no script. Executando à parte não tenho qualquer problema. O script está no local /etc/dev.d/ e tem como nome new.script.dev.

Tirando do /var/log/messages tenho...
Code:

 >> Automounter Script on /dev/sdf1
  > Action: add device: /dev/sdf1
 > Volume Filesystem is:


Copiando só a linha aparece-me
Code:

DarkStar log # FS=`vol_id -t /dev/sdf1`
DarkStar log # echo $FS
ntfs


Já tentei por um sleep acima para que o programa tivesse tempo para averiguar o FS do dispositivo, mas sem sucesso.
Dado que sou um bocado novo nas andanças de programação de bash script gostava de saber opiniões de possiveis razões.
_________________
Se a vida não te sorri... Faz-lhe cocegas.


Last edited by GothicKnight on Sat Sep 03, 2005 1:56 pm; edited 1 time in total
Back to top
View user's profile Send private message
MetalGod
Bodhisattva
Bodhisattva


Joined: 10 Mar 2003
Posts: 816
Location: Portugal

PostPosted: Sat Sep 03, 2005 3:12 am    Post subject: Reply with quote

para fazer isso sem trabalho nenhum basta usares

udev+dbus+hal e por exemplo o gnome-volume-manger que e' o que uso
ao que parece o KDE 3.4.x ja traz tb um deamon que faz o mesmo
_________________
ex: Gentoo Linux Developer: amd64 media-optical sound gnome
ex: Portuguese Moderator
------------------------------------------------------------------------------
God Doesn't Play Dice
Back to top
View user's profile Send private message
GothicKnight
Tux's lil' helper
Tux's lil' helper


Joined: 02 Aug 2004
Posts: 123
Location: Santa Maria da Feira/Portugal

PostPosted: Sat Sep 03, 2005 7:33 am    Post subject: Reply with quote

Não o KDE tem um pseudo mounter que monta dispositivos que estejam no fstab e com os devidas permissões.
Ok instalei o gnome-volume-manager e está a montar os dispositivos mas não consigo aceder aos NTFS usando um utilizador normal. Já andei a procurar nos forums, mas nada em concreto ou que consiga perceber.
_________________
Se a vida não te sorri... Faz-lhe cocegas.
Back to top
View user's profile Send private message
MetalGod
Bodhisattva
Bodhisattva


Joined: 10 Mar 2003
Posts: 816
Location: Portugal

PostPosted: Sat Sep 03, 2005 12:52 pm    Post subject: Reply with quote

de volta ao velho topico das permissoes.
Nao sei bem ao certo (pq ha anos que nao uso dualboot) mas sei que se adicionares uma linha no /etc/fstab consegues ler e escrever em partiçoes fat32/ntfs como user.

Nao sei se dara mas tenta adiconar a linha user ao /etc/fstab
/dev/cdroms/cdrom0 /mnt/cdrom iso9660 noauto,ro,users

por exemplo.
_________________
ex: Gentoo Linux Developer: amd64 media-optical sound gnome
ex: Portuguese Moderator
------------------------------------------------------------------------------
God Doesn't Play Dice
Back to top
View user's profile Send private message
GothicKnight
Tux's lil' helper
Tux's lil' helper


Joined: 02 Aug 2004
Posts: 123
Location: Santa Maria da Feira/Portugal

PostPosted: Sat Sep 03, 2005 1:10 pm    Post subject: Reply with quote

lol, parece que sim... Neste caso não se pode fazer nada com o fstab pois este é modificado quando o dispositivo é desligado e/ou ligado.
Eu neste portatil tenho que ter dualboot para trabalhos de escola (Borland C++,....) e o disco em questão é um externo de 200GB que infelismente tem que estar em NTFS porque FAT32 só suporta partições até cerca de 30GB.
Já agora a questão das permissões ainda não foi resolvida e quando tento enviar algo atravez do KDE usando o menu copyto->Root-> crash :( dai que precisava de saber também como ler a pasta /
_________________
Se a vida não te sorri... Faz-lhe cocegas.
Back to top
View user's profile Send private message
GothicKnight
Tux's lil' helper
Tux's lil' helper


Joined: 02 Aug 2004
Posts: 123
Location: Santa Maria da Feira/Portugal

PostPosted: Sat Sep 03, 2005 1:55 pm    Post subject: Reply with quote

Eu nunca gostei de resolver problemas simplesmente mudando para outros problemas. Daí que me apercebi de uma coisa muito simples e desde já obrigado em lembrar-me das permissões. O problema era, quando chamava o programa vol_id o udev (não sei se tem utilizador próprio ou executa como root) não o encontrava e tive que trocar simplesmente para /sbin/vol_id :) fossem todos os meus problemas assim...

Script completo caso alguem queira experimentar
Code:

#!/bin/bash
base=$(basename $DEVNAME)

#Send info to logger
#logger -t automount_dev "`env`"
echo " " >> /var/log/messages
echo " >> Automounter Script on $DEVNAME" >> /var/log/messages

#Check to see if the device is a sdX1 device
if [[ $base != sd[a-h][1-9] ]]
#if [ ! -b /dev/$base ]
then
 echo "  > Rejecting device..." >> /var/log/messages
 exit
fi

#Do this when adding the plugged device
if [ "$ACTION" == "add" ]
 then
 echo "  > Action: $ACTION device: /dev/$base" >>  /var/log/messages
 #Retrieve info about the added device and store into variables
 #product=$(udevinfo -a -p $DEVPATH | grep SYSFS{product} -m 1 | cut --delim='"' -f2)
 #vendor=$(udevinfo -a -p $DEVPATH | grep SYSFS{vendor} -m 1 | cut --delim='"' -f2)
 #serial=$(udevinfo -a -p $DEVPATH | grep SYSFS{serial} -m 1 | cut --delim='"' -f2)
 #volumeID=`udev_volume_id -l /dev/$base`
 #echo "  > Product: $product, Vendo: $vendor, Serial: $serial" >> /var/log/messages

 #echo "$base+$DEVPATH+$vendor+$product+$serial" >> /tmp/$base

 #Create mount point and mount the device to it with proper access
 mkdir /mnt/USB/$base
 FS=`/sbin/vol_id -t /dev/$base`

 if [ $FS = "reiserfs" ]
 then
  mount -t $FS -o sync /dev/$base /mnt/USB/$base
  echo " > Mounted /dev/$base in /mnt/USB/$base with code $?" >> /var/log/messages
 fi
 if [ $FS = "vfat" ]
 then
  mount -t $FS -o sync,defaults,umask=0 /dev/$base /mnt/USB/$base
  echo " > Mounted /dev/$base in /mnt/USB/$base with code $?" >> /var/log/messages
 fi
 if [ $FS = "ntfs" ]
 then
  mount -t $FS -o sync,umask=0 /dev/$base /mnt/USB/$base
  echo " > Mounted /dev/$base in /mnt/USB/$base with code $?" >> /var/log/messages
 fi

 #Create a KDE link file for use on the desktop (used for KDE 3.4)
 #--Link name is generated from the devices' vendor, product, serial and $base
 #echo "[Desktop Entry]" >> /tmp/link2$base
 #echo "Dev=/dev/$base" >> /tmp/link2$base
 #echo "Encoding=UTF-8" >> /tmp/link2$base
 #echo "Icon=usbpendrive_mount" >> /tmp/link2$base
 #echo "MountPoint=/mnt/usb/$base" >> /tmp/link2$base
 #echo "Name=$vendor $product [$serial] on $base" >> /tmp/link2$base
 #echo "Name[en_US]=$vendor $product [$serial] on $base" >> /tmp/link2$base
 #echo "ReadOnly=False" >> /tmp/link2$base
 #echo "Type=FSDevice" >> /tmp/link2$base
 #echo "UnmountIcon=usbpendrive_unmount" >> /tmp/link2$base
 #echo "Encoding=UTF-8" >> /tmp/link2$base
 #Copy the link file to all users' Desktops and to the root's
 #for x in /home/*; do cp /tmp/link2$base $x/Desktop/link2$base; done
 #cp /tmp/link2$base /root/Desktop/link2$base
fi

#Do this when the device is unplugged
if [ "$ACTION" == "remove" ]
then
 echo "  > ACTION: $ACTION DEVICE: /dev/$base" >>  /var/log/messages
 #Retrieve the serial number of the device from the /tmp/$base file
 #--only needed for checking for specific devices
 #serial=$(cat /tmp/$base | cut --delim='+' -f5)

 #Unmount the device and cleanup references
 #fuser -m -k /mnt/USB/$base
 umount -l /mnt/USB/$base
 rm -rf /mnt/USB/$base
 #rm -f /tmp/link2$base
 #rm -f /tmp/$base
 #Remove KDE Desktop links created
 #for x in /home/*; do rm -f $x/Desktop/link2$base; done
 #rm -f /tmp/$base /root/Desktop/$base

fi

_________________
Se a vida não te sorri... Faz-lhe cocegas.
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Portuguese All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum