My first usb storage automount script :)
Hi there,
I just wanted to share what I hacked up through some frustration. It's a script that will automatically mount usb devices that are attached.
It ties in to the hotplug architecture as closely as possible, without changing anything. So then I subscribed to this list to announce it.
Of course, that's when I discovered
http://users.actrix.co.nz/michael/usbmount.html by Michael Hamilton.
So I'll first give a rundown of differences:
My solution:
- only mounts the device that was just inserted (with some luck)
- is called automount_usb, so that, by changing the usb.usermap, it gets called every time a device is inserted and not just the first time
- creates remover scripts that have /bin/sh as the only dependency
- creates nicely readable names as mount points
- supports devices with multiple partitions
- is really small
But Michael's solution:
- makes KDE icons
- is easier to read
So, please have a look at the attached code, and tell me what you think about the device detection code. Michael, if you read this, we could perhaps merge the two efforts and get all the features.
Also, let's start a thread on making a gui.agent script that gets called by the hotplug scripts. It would notify the user of hotplug events. I feel that it should be called with the same environment as the other agents, with an extra HOTPLUG_PATH variable indicating the path on which the device is available, if applicable.
This could then be used by KDE, Gnome etc to notify the user.
Cheers,
Wout.
PS: /Please/ change usb.agent so that it creates /var/run/usb/ before pointing remover scripts there...
#!/bin/sh
# Automount hotplugged usb storage devices. Copyright (c) 2002, Wout Mertens # This script is released under the GPL.
# The usb devices will be mounted for the console user. # To work, this needs:
# - kernel support:
# - hotplugging, /proc, usbdevfs and devfs # - as modules: usb-storage, sd_mod, scsi_mod # - filesystems that will be mounted, like vfat
# - ls, tr, echo, awk, basename, stat, grep, mount, umount, mkdir, rm, sed
# TODO Fix usb.agent so that /var/run/usb gets created if missing
# TODO Some rigid way of getting this run. Currently, I do
# grep usb-storage /lib/modules/*/modules.usbmap|sed 's/usb-storage/automount_usb/' >> /etc/hotplug/usb.usermap # TODO Lots of testing
# TODO nice way of setting options
# TODO Also, the error checking should probably be more robust
# TODO Some clean way of handling disconnects while writing.
# TODO Make a generic event system for GUIs that shows that something was
# mounted for the user. Proposal: /etc/hotplug/gui.agent gets # called with ACTION=add/remove, NAME=nice_name, PATH=new_path, etc. # Not just for new storage, scanners and so on are useful too...
# Dump debug
mesg () {
#return
/usr/bin/logger -t $0 "$*"
}# Figure out the device to mount
NUM=basename $DEVICE|sed 's/^0*//'
SERIAL=awk -F= '/^T:.*/{if($0~/Dev#= *'$NUM' /){t=1}else{t=0}}t==1&&/SerialNumber/{print $2;exit}' /proc/bus/usb/devices PRODUCT=awk -F= '/^T:.*/{if($0~/Dev#= *'$NUM' /){t=1}else{t=0}}t==1&&/Product/{print $2;exit}' /proc/bus/usb/devices # Use the serial or the product name to find which scsi host was just created
if [ -n "$SERIAL" ]; then
SCSI=`grep -l $SERIAL /proc/scsi/usb-storage-*/*|tail -1` elif [ -n "$PRODUCT" ]; then SCSI=`grep -l $PRODUCT /proc/scsi/usb-storage-*/*|tail -1`
fi
mesg Device No. $NUM, serial $SERIAL, name $PRODUCT, path $SCSI
# Mount it
if [ -n "$SCSI" ]; then
# The name of the file is the number of the SCSI host SCSI=basename $SCSI
PARTS=ls /dev/scsi/host$SCSI/*/*/*/part* MOUNTPATH=/mnt/usb/echo $PRODUCT|tr '[ /?*"]' _
if [ -e "$MOUNTPATH" ]; then
if mount|grep "$MOUNTPATH">/dev/null; then
# TODO I'm too lazy to write proper collision avoidance code MOUNTPATH="$MOUNTPATH".$$
fi
fi
# I'm hoping that mount ignores options that don't apply to the fs # These options should prevent abuse and make it writeable for the # console user.
MOUNTOPTS='-osync,nosuid'stat -c',uid=%u,gid=%g' /dev/console mesg Mounting $PARTS on $MOUNTPATH, options $MOUNTOPTS
[ echo $PARTS|wc -w -eq 1 ] && MOUNTDIRECT=1 REMOVE=
for i in $PARTS; do
if [ -n "$MOUNTDIRECT" ]; then
T=$MOUNTPATH
else
T=$MOUNTPATH/basename $i
fi
mkdir -p $T
if mount $MOUNTOPTS $i $T; then
REMOVE="umount $T;$REMOVE;rmdir $T"
else
rmdir $T
fi
done
# Create remover
echo "#!/bin/sh" > $REMOVER
echo $REMOVE | sed 's/;;/;/g' >> $REMOVER
chmod +x $REMOVER
else
exit 1
fi
Hi,
Does anyone know whether this will work on the following situation:
1. The usb-storage device (ie USB card reader) is alreay plugged in the
system.
2. No CF/MS/SM/SD are plugged in yet.
Given the above assumption , Will the system automount the CF when the CF
card is plugged in ? Or We still need to manually enter " mount -t vfat /dev/sda1 /cf ".
I guess what I would like to see is to have something like CD's automount
when a CD is inserted.
Thanks
Eddie
----------------------------------------------------------------------------
------------------
Hi there,
I just wanted to share what I hacked up through some frustration. It's a script that will automatically mount usb devices that are attached.
It ties in to the hotplug architecture as closely as possible, without changing anything. So then I subscribed to this list to announce it.
Of course, that's when I discovered
http://users.actrix.co.nz/michael/usbmount.html by Michael Hamilton.
So I'll first give a rundown of differences:
My solution:
- only mounts the device that was just inserted (with some luck)
- is called automount_usb, so that, by changing the usb.usermap, it gets called every time a device is inserted and not just the first time
- creates remover scripts that have /bin/sh as the only dependency
- creates nicely readable names as mount points
- supports devices with multiple partitions
- is really small
But Michael's solution:
- makes KDE icons
- is easier to read
So, please have a look at the attached code, and tell me what you think about the device detection code. Michael, if you read this, we could perhaps merge the two efforts and get all the features.
Also, let's start a thread on making a gui.agent script that gets called by the hotplug scripts. It would notify the user of hotplug events. I feel that it should be called with the same environment as the other agents, with an extra HOTPLUG_PATH variable indicating the path on which the device is available, if applicable.
This could then be used by KDE, Gnome etc to notify the user.
Cheers,
Wout.
PS: /Please/ change usb.agent so that it creates /var/run/usb/ before pointing remover scripts there...
["automount_usb" (TEXT/PLAIN)]
#!/bin/sh
# Automount hotplugged usb storage devices. Copyright (c) 2002, Wout Mertens # This script is released under the GPL.
# The usb devices will be mounted for the console user. # To work, this needs:
# - kernel support:
# - hotplugging, /proc, usbdevfs and devfs # - as modules: usb-storage, sd_mod, scsi_mod # - filesystems that will be mounted, like vfat
# - ls, tr, echo, awk, basename, stat, grep, mount, umount, mkdir, rm, sed
# TODO Fix usb.agent so that /var/run/usb gets created if missing # TODO Some rigid way of getting this run. Currently, I do # grep usb-storage /lib/modules/*/modules.usbmap|sed 's/usb-storage/automount_usb/' \
Quoted 1 line
Quoted 1 line
/etc/hotplug/usb.usermap# TODO Lots of testing
# TODO nice way of setting options
# TODO Also, the error checking should probably be more robust # TODO Some clean way of handling disconnects while writing. # TODO Make a generic event system for GUIs that shows that something was
# mounted for the user. Proposal: /etc/hotplug/gui.agent gets # called with ACTIONd/remove, NAME=nice_name, PATH=new_path, etc. # Not just for new storage, scanners and so on are useful too...
# Dump debug
mesg () {
#return
/usr/bin/logger -t $0 "$*"
}# Figure out the device to mount
NUM=basename $DEVICE|sed 's/^0*//'
SERIAL=`awk -F= '/^T:.*/{if($0~/Dev#= *'$NUM' \
/){t=1}else{t=0}}t=1&&/SerialNumber/{print $2;exit}' /proc/bus/usb/devices` \
PRODUCT=`awk -F= '/^T:.*/{if($0~/Dev#= *'$NUM' /){t=1}else{t=0}}t=1&&/Product/{print \
$2;exit}' /proc/bus/usb/devices` # Use the serial or the product name to find which \
scsi host was just created if [ -n "$SERIAL" ]; then
SCSI=`grep -l $SERIAL /proc/scsi/usb-storage-*/*|tail -1` elif [ -n "$PRODUCT" ]; then SCSI=`grep -l $PRODUCT /proc/scsi/usb-storage-*/*|tail -1`
fi
mesg Device No. $NUM, serial $SERIAL, name $PRODUCT, path $SCSI
# Mount it
if [ -n "$SCSI" ]; then
# The name of the file is the number of the SCSI host SCSI=basename $SCSI
PARTS=ls /dev/scsi/host$SCSI/*/*/*/part* MOUNTPATH=/mnt/usb/echo $PRODUCT|tr '[ /?*"]' _
if [ -e "$MOUNTPATH" ]; then
if mount|grep "$MOUNTPATH">/dev/null; then
# TODO I'm too lazy to write proper collision avoidance code MOUNTPATH="$MOUNTPATH".$$
fi
fi
# I'm hoping that mount ignores options that don't apply to the fs # These options should prevent abuse and make it writeable for the # console user.
MOUNTOPTS='-osync,nosuid'stat -c',uid=%u,gid=%g' /dev/console mesg Mounting $PARTS on $MOUNTPATH, options $MOUNTOPTS
[ echo $PARTS|wc -w -eq 1 ] && MOUNTDIRECT=1
REMOVE for i in $PARTS; do
if [ -n "$MOUNTDIRECT" ]; then
T=$MOUNTPATH
else
T=$MOUNTPATH/basename $i
fi
mkdir -p $T
if mount $MOUNTOPTS $i $T; then
REMOVE="umount $T;$REMOVE;rmdir $T"
else
rmdir $T
fi
done
# Create remover
echo "#!/bin/sh" > $REMOVER
echo $REMOVE | sed 's/;;/;/g' >> $REMOVER
chmod +x $REMOVER
else
exit 1
fi
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel
Hmmm,
Only one way to find out :)
The script is real easy to install, just copy it to /etc/hotplug, and run the line that registers it (you can find it inside the script).
I think the issue will be if the card reader sends usb plug/unplug events or not... if it doesn't, I really wouldn't know how to do it.
Actually, there's an easier way to test:
Plug in the reader, have hotplug enabled, and watch /var/log/messages to see what the kernel thinks is happening. If you see messages every time you plug/unplug a card, you're lucky, and it will probably work.
Good luck,
Wout.
Quoted 164 lines · Eddie Shi
Hi,
Does anyone know whether this will work on the following situation:1. The usb-storage device (ie USB card reader) is alreay plugged in the
system.2. No CF/MS/SM/SD are plugged in yet.
Given the above assumption , Will the system automount the CF when the CF
card is plugged in ? Or We still need to manually enter " mount -t vfat/dev/sda1/cf ".I guess what I would like to see is to have something like CD's automount
when a CD is inserted.Thanks
Eddie
----------------------------------------------------------------------------
------------------
Hi there,I just wanted to share what I hacked up through some frustration. It's a script that will automatically mount usb devices that are attached.
It ties in to the hotplug architecture as closely as possible, without changing anything. So then I subscribed to this list to announce it.
Of course, that's when I discovered
http://users.actrix.co.nz/michael/usbmount.html by Michael Hamilton.So I'll first give a rundown of differences:
My solution:
- only mounts the device that was just inserted (with some luck)
- is calledautomount_usb, so that, by changing the usb.usermap, it gets called every time a device is inserted and not just the first time
- creates remover scripts that have/bin/shas the only dependency
- creates nicely readable names as mount points
- supports devices with multiple partitions
- is really smallBut Michael's solution:
- makes KDE icons
- is easier to readSo, please have a look at the attached code, and tell me what you think about the device detection code. Michael, if you read this, we could perhaps merge the two efforts and get all the features.
Also, let's start a thread on making a gui.agent script that gets called by the hotplug scripts. It would notify the user of hotplug events. I feel that it should be called with the same environment as the other agents, with an extra
HOTPLUG_PATHvariable indicating the path on which the device is available, if applicable.This could then be used by KDE, Gnome etc to notify the user.
Cheers,
Wout.
PS: /Please/ change usb.agent so that it creates
/var/run/usb/before pointing remover scripts there...
["automount_usb" (TEXT/PLAIN)]#!/bin/sh
# Automount hotplugged usb storage devices. Copyright (c) 2002, Wout Mertens # This script is released under the GPL.# The usb devices will be mounted for the console user. # To work, this needs:
# - kernel support:# - hotplugging, /proc, usbdevfs and devfs # - as modules: usb-storage, sd_mod, scsi_mod # - filesystems that will be mounted, like vfat# - ls, tr, echo, awk, basename, stat, grep, mount, umount, mkdir, rm, sed
# TODO Fix usb.agent so that
/var/run/usbgets created if missing # TODO Some rigid way of getting this run. Currently, I do # grep usb-storage /lib/modules/*/modules.usbmap|sed 's/usb-storage/automount_usb/' \Quoted 1 line
Quoted 1 line
/etc/hotplug/usb.usermap# TODO Lots of testing# TODO nice way of setting options
# TODO Also, the error checking should probably be more robust # TODO Some clean way of handling disconnects while writing. # TODO Make a generic event system for GUIs that shows that something was# mounted for the user. Proposal: /etc/hotplug/gui.agent gets # called with ACTIONd/remove, NAME=nice_name, PATH=new_path, etc. # Not just for new storage, scanners and so on are useful too...# Dump debug
mesg () { #return /usr/bin/logger -t $0 "$*" }# Figure out the device to mount
NUM=basename $DEVICE|sed 's/^0*//'
SERIAL=`awk -F= '/^T:.*/{if($0~/Dev#= *'$NUM' \
/){t=1}else{t=0}}t=1&&/SerialNumber/{print $2;exit}' /proc/bus/usb/devices` \
PRODUCT=`awk -F= '/^T:.*/{if($0~/Dev#= *'$NUM' /){t=1}else{t=0}}t=1&&/Product/{print \
$2;exit}' /proc/bus/usb/devices` # Use the serial or the product name to find which \
scsi host was just created if [ -n "$SERIAL" ]; thenSCSI=`grep -l $SERIAL /proc/scsi/usb-storage-*/*|tail -1` elif [ -n "$PRODUCT" ]; then SCSI=`grep -l $PRODUCT /proc/scsi/usb-storage-*/*|tail -1`fi
mesg Device No. $NUM, serial $SERIAL, name $PRODUCT, path $SCSI
# Mount it
if [ -n "$SCSI" ]; then
# The name of the file is the number of the SCSI host SCSI=basename $SCSI
PARTS=ls /dev/scsi/host$SCSI/*/*/*/part*MOUNTPATH=/mnt/usb/echo $PRODUCT|tr '[ /?*"]' _
if [ -e "$MOUNTPATH" ]; then
if mount|grep "$MOUNTPATH">/dev/null; then
# TODO I'm too lazy to write proper collision avoidance code MOUNTPATH="$MOUNTPATH".$$
fi
fi
# I'm hoping that mount ignores options that don't apply to the fs # These options should prevent abuse and make it writeable for the # console user.
MOUNTOPTS='-osync,nosuid'stat -c',uid=%u,gid=%g' /dev/consolemesg Mounting $PARTS on $MOUNTPATH, options $MOUNTOPTS[
echo $PARTS|wc -w-eq 1 ] && MOUNTDIRECT=1
REMOVE> for i in $PARTS; do
if [ -n "$MOUNTDIRECT" ]; then
T=$MOUNTPATH
else
T=$MOUNTPATH/basename $i
fi
mkdir -p $T
if mount $MOUNTOPTS $i $T; then
REMOVE="umount $T;$REMOVE;rmdir $T"
else
rmdir $T
fi
done# Create remover
echo "#!/bin/sh" > $REMOVER
echo $REMOVE | sed 's/;;/;/g' >> $REMOVER
chmod +x $REMOVER
else
exit 1
fi
Quoted 9 lines
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel
-------------------------------------------------------
This SF.NET email is sponsored by:
SourceForge Enterprise Edition + IBM + LinuxWorld = Something 2 See!
http://www.vasoftware.com
_______________________________________________
Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel
The problem is you need a notification in the first place that a card has been inserted. Unfortunately, I don't think any card readers on the market provide this functionality. I've only been able to solve this with a kind of daemon that periodically tries to mount the card reader's filesystem and then pings it occasionally to make sure the card hasn't been removed. It's ugly and wasteful, but what other alternative is there?
-tc
Quoted 196 lines · Wout Mertens
Hmmm,
Only one way to find out :)
The script is real easy to install, just copy it to
/etc/hotplug, and run the line that registers it (you can find it inside the script).I think the issue will be if the card reader sends usb plug/unplug events or not... if it doesn't, I really wouldn't know how to do it.
Actually, there's an easier way to test:
Plug in the reader, have hotplug enabled, and watch/var/log/messagesto see what the kernel thinks is happening. If you see messages every time you plug/unplug a card, you're lucky, and it will probably work.Good luck,
Wout.
Quoted 164 lines · Eddie Shi
Hi,
Does anyone know whether this will work on the following situation:1. The usb-storage device (ie USB card reader) is alreay plugged in the
system.2. No CF/MS/SM/SD are plugged in yet.
Given the above assumption , Will the system automount the CF when the CF
card is plugged in ? Or We still need to manually enter " mount -t vfat/dev/sda1/cf ".I guess what I would like to see is to have something like CD's automount
when a CD is inserted.Thanks
Eddie
----------------------------------------------------------------------------
------------------
Hi there,I just wanted to share what I hacked up through some frustration. It's a script that will automatically mount usb devices that are attached.
It ties in to the hotplug architecture as closely as possible, without changing anything. So then I subscribed to this list to announce it.
Of course, that's when I discovered
http://users.actrix.co.nz/michael/usbmount.html by Michael Hamilton.So I'll first give a rundown of differences:
My solution:
- only mounts the device that was just inserted (with some luck)
- is calledautomount_usb, so that, by changing the usb.usermap, it gets called every time a device is inserted and not just the first time
- creates remover scripts that have/bin/shas the only dependency
- creates nicely readable names as mount points
- supports devices with multiple partitions
- is really smallBut Michael's solution:
- makes KDE icons
- is easier to readSo, please have a look at the attached code, and tell me what you think about the device detection code. Michael, if you read this, we could perhaps merge the two efforts and get all the features.
Also, let's start a thread on making a gui.agent script that gets called by the hotplug scripts. It would notify the user of hotplug events. I feel that it should be called with the same environment as the other agents, with an extra
HOTPLUG_PATHvariable indicating the path on which the device is available, if applicable.This could then be used by KDE, Gnome etc to notify the user.
Cheers,
Wout.
PS: /Please/ change usb.agent so that it creates
/var/run/usb/before pointing remover scripts there...
["automount_usb" (TEXT/PLAIN)]#!/bin/sh
# Automount hotplugged usb storage devices. Copyright (c) 2002, Wout Mertens # This script is released under the GPL.# The usb devices will be mounted for the console user. # To work, this needs:
# - kernel support:# - hotplugging, /proc, usbdevfs and devfs # - as modules: usb-storage, sd_mod, scsi_mod # - filesystems that will be mounted, like vfat# - ls, tr, echo, awk, basename, stat, grep, mount, umount, mkdir, rm, sed
# TODO Fix usb.agent so that
/var/run/usbgets created if missing # TODO Some rigid way of getting this run. Currently, I do # grep usb-storage /lib/modules/*/modules.usbmap|sed 's/usb-storage/automount_usb/' \Quoted 1 line
Quoted 1 line
/etc/hotplug/usb.usermap# TODO Lots of testing# TODO nice way of setting options
# TODO Also, the error checking should probably be more robust # TODO Some clean way of handling disconnects while writing. # TODO Make a generic event system for GUIs that shows that something was# mounted for the user. Proposal: /etc/hotplug/gui.agent gets # called with ACTIONd/remove, NAME=nice_name, PATH=new_path, etc. # Not just for new storage, scanners and so on are useful too...# Dump debug
mesg () {
#return/usr/bin/logger-t $0 "$*"
}# Figure out the device to mount
NUM=basename $DEVICE|sed 's/^0*//'
SERIAL=`awk -F= '/^T:.*/{if($0~/Dev#= *'$NUM' \
/){t=1}else{t=0}}t=1&&/SerialNumber/{print $2;exit}' /proc/bus/usb/devices` \
PRODUCT=`awk -F= '/^T:.*/{if($0~/Dev#= *'$NUM' /){t=1}else{t=0}}t=1&&/Product/{print \
$2;exit}' /proc/bus/usb/devices` # Use the serial or the product name to find which \
scsi host was just created if [ -n "$SERIAL" ]; then
SCSI=grep -l $SERIAL /proc/scsi/usb-storage-*/*|tail -1
elif [ -n "$PRODUCT" ]; then
SCSI=grep -l $PRODUCT /proc/scsi/usb-storage-*/*|tail -1
fimesg Device No. $NUM, serial $SERIAL, name $PRODUCT, path $SCSI
# Mount it
if [ -n "$SCSI" ]; then
# The name of the file is the number of the SCSI host SCSI=basename $SCSI
PARTS=ls /dev/scsi/host$SCSI/*/*/*/part*MOUNTPATH=/mnt/usb/echo $PRODUCT|tr '[ /?*"]' _
if [ -e "$MOUNTPATH" ]; then
if mount|grep "$MOUNTPATH">/dev/null; then
# TODO I'm too lazy to write proper collision avoidance code MOUNTPATH="$MOUNTPATH".$$
fi
fi
# I'm hoping that mount ignores options that don't apply to the fs # These options should prevent abuse and make it writeable for the# console user. MOUNTOPTS='-osync,nosuid'`stat -c',uid=%u,gid=%g' /dev/console` mesg Mounting $PARTS on $MOUNTPATH, options $MOUNTOPTS[
echo $PARTS|wc -w-eq 1 ] && MOUNTDIRECT=1
REMOVE>> for i in $PARTS; do
if [ -n "$MOUNTDIRECT" ]; then
T=$MOUNTPATH
else
T=$MOUNTPATH/basename $i
fi
mkdir -p $T
if mount $MOUNTOPTS $i $T; then
REMOVE="umount $T;$REMOVE;rmdir $T"
else
rmdir $T
fi
done# Create remover
echo "#!/bin/sh" > $REMOVER
echo $REMOVE | sed 's/;;/;/g' >> $REMOVER
chmod +x $REMOVER
else
exit 1
fiQuoted 9 lines
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel
Quoted 8 lines
-------------------------------------------------------
This SF.NET email is sponsored by:
SourceForge Enterprise Edition + IBM + LinuxWorld = Something 2 See!
http://www.vasoftware.com
_______________________________________________
Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel
-------------------------------------------------------
This SF.NET email is sponsored by:
SourceForge Enterprise Edition + IBM + LinuxWorld = Something 2 See!
http://www.vasoftware.com
_______________________________________________
Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel
That's it, I think Window's must have done the same thing you described. BTW, when you say "ping it to make sure card is not removed", do you mean that you try to mount it and check the status return from the mount?
Thanks for the feedback.
Eddie
Quoted 159 lines
-----Original Message-----
From: Tom Clark [mailto:[email protected]]
Sent: Tuesday, January 07, 2003 6:56 AM
To: [email protected]
Cc: Eddie Shi; Wout Mertens
Subject: Re: My first usb storage automount script :)The problem is you need a notification in the first place that a card has been inserted. Unfortunately, I don't think any card readers on the market
provide this functionality. I've only been able to solve this with a kind of daemon that periodically tries to mount the card reader's filesystem and
then pings it occasionally to make sure the card hasn't been removed. It's
ugly and wasteful, but what other alternative is there?-tc
Quoted 5 lines · Wout Mertens
Hmmm,
Only one way to find out :)
The script is real easy to install, just copy it to
/etc/hotplug, and runQuoted 3 lines
the line that registers it (you can find it inside the script).
I think the issue will be if the card reader sends usb
plug/unplug events
Quoted 7 lines
or not... if it doesn't, I really wouldn't know how to do it.
Actually, there's an easier way to test:
Plug in the reader, have hotplug enabled, and watch/var/log/messagesto see what the kernel thinks is happening. If you see messages every time you plug/unplug a card, you're lucky, and it will probably work.Quoted 10 lines
Good luck,
Wout.
Quoted 4 lines · Eddie Shi
Hi,
Does anyone know whether this will work on the following situation:1. The usb-storage device (ie USB card reader) is alreay
plugged in the
Quoted 5 lines
Quoted 5 lines
system.
2. No CF/MS/SM/SD are plugged in yet.
Given the above assumption , Will the system automount the
CF when the CF
Quoted 4 lines
Quoted 4 lines
card is plugged in ? Or We still need to manually enter " mount -t vfat
/dev/sda1/cf ".I guess what I would like to see is to have something like
CD's automount
Quoted 8 lines
Quoted 8 lines
when a CD is inserted.
Thanks
Eddie
------------------------------------------------------------------
----------Quoted 4 lines
Quoted 4 lines
------------------
Hi there,I just wanted to share what I hacked up through some
frustration. It's a
Quoted 5 lines
Quoted 5 lines
script that will automatically mount usb devices that are attached.
It ties in to the hotplug architecture as closely as possible, without changing anything. So then I subscribed to this list to announce it.
Quoted 7 lines
Quoted 7 lines
Of course, that's when I discovered
http://users.actrix.co.nz/michael/usbmount.html by Michael Hamilton.So I'll first give a rundown of differences:
My solution:
- only mounts the device that was just inserted (with some luck)
- is calledautomount_usb, so that, by changing theusb.usermap, it gets
Quoted 10 lines
Quoted 10 lines
called every time a device is inserted and not just the first time
- creates remover scripts that have/bin/shas the only dependency
- creates nicely readable names as mount points
- supports devices with multiple partitions
- is really smallBut Michael's solution:
- makes KDE icons
- is easier to readQuoted 5 lines
Quoted 5 lines
So, please have a look at the attached code, and tell me what you think about the device detection code. Michael, if you read this, we could perhaps merge the two efforts and get all the features.
Also, let's start a thread on making a gui.agent script that
gets called
Quoted 3 lines
Quoted 3 lines
by the hotplug scripts. It would notify the user of hotplug events. I feel that it should be called with the same environment as the other agents, with an extra
HOTPLUG_PATHvariable indicating thepath on which
Quoted 6 lines
Quoted 6 lines
the device is available, if applicable.
This could then be used by KDE, Gnome etc to notify the user.
Cheers,
Quoted 8 lines
Quoted 8 lines
Wout.
PS: /Please/ change usb.agent so that it creates
/var/run/usb/before pointing remover scripts there...
["automount_usb" (TEXT/PLAIN)]#!/bin/sh
# Automount hotplugged usb storage devices. Copyright (c)2002, Wout Mertens
Quoted 9 lines
Quoted 9 lines
# This script is released under the GPL.
# The usb devices will be mounted for the console user. # To work, this needs:
# - kernel support:# - hotplugging, /proc, usbdevfs and devfs # - as modules: usb-storage, sd_mod, scsi_mod # - filesystems that will be mounted, like vfat# - ls, tr, echo, awk, basename, stat, grep, mount, umount,
mkdir, rm, sed
Quoted 10 lines
Quoted 10 lines
# TODO Fix usb.agent so that
/var/run/usbgets created if missing # TODO Some rigid way of getting this run. Currently, I do # grep usb-storage /lib/modules/*/modules.usbmap|sed 's/usb-storage/automount_usb/' \Quoted 1 line
Quoted 1 line
/etc/hotplug/usb.usermap# TODO Lots of testing# TODO nice way of setting options
# TODO Also, the error checking should probably be more robust # TODO Some clean way of handling disconnects while writing. # TODO Make a generic event system for GUIs that shows thatsomething was
Quoted 10 lines
Quoted 10 lines
# mounted for the user. Proposal: /etc/hotplug/gui.agent gets # called with ACTIONd/remove, NAME=nice_name, PATH=new_path, etc. # Not just for new storage, scanners and so on are useful too...# Dump debug
mesg () {
#return/usr/bin/logger-t $0 "$*"
}Quoted 4 lines
Quoted 4 lines
# Figure out the device to mount NUM=
basename $DEVICE|sed 's/^0*//'SERIAL=`awk -F= '/^T:.*/{if($0~/Dev#= *'$NUM' \
/){t=1}else{t=0}}t=1&&/SerialNumber/{print $2;exit}'
Quoted 85 lines
/proc/bus/usb/devices`
Quoted 4 lines
Quoted 4 lines
\
PRODUCT=`awk -F= '/^T:.*/{if($0~/Dev#= *'$NUM' /){t=1}else{t=0}}t=1&&/Product/{print \
$2;exit}' /proc/bus/usb/devices` # Use the serial or theproduct name to
Quoted 77 lines
Quoted 58 lines
find which \
scsi host was just created if [ -n "$SERIAL" ]; then SCSI=grep -l $SERIAL /proc/scsi/usb-storage-*/*|tail -1elif [ -n "$PRODUCT" ]; then
SCSI=grep -l $PRODUCT /proc/scsi/usb-storage-*/*|tail -1fimesg Device No. $NUM, serial $SERIAL, name $PRODUCT, path $SCSI
# Mount it
if [ -n "$SCSI" ]; then
# The name of the file is the number of the SCSI host SCSI=basename $SCSI
PARTS=ls /dev/scsi/host$SCSI/*/*/*/part*MOUNTPATH=/mnt/usb/echo $PRODUCT|tr '[ /?*"]' _
if [ -e "$MOUNTPATH" ]; then
if mount|grep "$MOUNTPATH">/dev/null; then
# TODO I'm too lazy to write proper collision avoidance code MOUNTPATH="$MOUNTPATH".$$
fi
fi
# I'm hoping that mount ignores options that don't apply to the fs # These options should prevent abuse and make it writeable for the# console user. MOUNTOPTS='-osync,nosuid'`stat -c',uid=%u,gid=%g' /dev/console` mesg Mounting $PARTS on $MOUNTPATH, options $MOUNTOPTS[
echo $PARTS|wc -w-eq 1 ] && MOUNTDIRECT=1
REMOVE> >> for i in $PARTS; do
if [ -n "$MOUNTDIRECT" ]; then
T=$MOUNTPATH
else
T=$MOUNTPATH/basename $i
fi
mkdir -p $T
if mount $MOUNTOPTS $i $T; then
REMOVE="umount $T;$REMOVE;rmdir $T"
else
rmdir $T
fi
done# Create remover
echo "#!/bin/sh" > $REMOVER
echo $REMOVE | sed 's/;;/;/g' >> $REMOVER
chmod +x $REMOVER
else
exit 1
fiQuoted 9 lines
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel-------------------------------------------------------
This SF.NET email is sponsored by:
SourceForge Enterprise Edition + IBM + LinuxWorld = Something 2 See!
http://www.vasoftware.com
_______________________________________________
Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel
-------------------------------------------------------
This SF.NET email is sponsored by:
SourceForge Enterprise Edition + IBM + LinuxWorld = Something 2 See!
http://www.vasoftware.com
_______________________________________________
Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel
Maybe a possible check would be to try to read the first few sectors (partition table and boot record), and keep an md5 hash. If it changes, do the sensible thing... Could be faster and less resource intensive than trying to mount it.
Wout.
Quoted 4 lines · Eddie Shi
That's it, I think Window's must have done the same thing you described. BTW, when you say "ping it to make sure card is not removed", do you mean that you try to mount it and check the status return from the mount?
Quoted 250 lines
Thanks for the feedback.
Eddie
Quoted 244 lines
-----Original Message-----
From: Tom Clark [mailto:[email protected]]
Sent: Tuesday, January 07, 2003 6:56 AM
To: [email protected]
Cc: Eddie Shi; Wout Mertens
Subject: Re: My first usb storage automount script :)The problem is you need a notification in the first place that a card has been inserted. Unfortunately, I don't think any card readers on the market
provide this functionality. I've only been able to solve this with a kind of daemon that periodically tries to mount the card reader's filesystem and
then pings it occasionally to make sure the card hasn't been removed. It's
ugly and wasteful, but what other alternative is there?-tc
Quoted 5 lines · Wout Mertens
Hmmm,
Only one way to find out :)
The script is real easy to install, just copy it to
/etc/hotplug, and runQuoted 3 lines
the line that registers it (you can find it inside the script).
I think the issue will be if the card reader sends usb
plug/unplug events
Quoted 7 lines
or not... if it doesn't, I really wouldn't know how to do it.
Actually, there's an easier way to test:
Plug in the reader, have hotplug enabled, and watch/var/log/messagesto see what the kernel thinks is happening. If you see messages every time you plug/unplug a card, you're lucky, and it will probably work.Quoted 10 lines
Good luck,
Wout.
Quoted 4 lines · Eddie Shi
Hi,
Does anyone know whether this will work on the following situation:1. The usb-storage device (ie USB card reader) is alreay
plugged in the
Quoted 5 lines
Quoted 5 lines
system.
2. No CF/MS/SM/SD are plugged in yet.
Given the above assumption , Will the system automount the
CF when the CF
Quoted 4 lines
Quoted 4 lines
card is plugged in ? Or We still need to manually enter " mount -t vfat
/dev/sda1/cf ".I guess what I would like to see is to have something like
CD's automount
Quoted 8 lines
Quoted 8 lines
when a CD is inserted.
Thanks
Eddie
------------------------------------------------------------------
----------Quoted 4 lines
Quoted 4 lines
------------------
Hi there,I just wanted to share what I hacked up through some
frustration. It's a
Quoted 5 lines
Quoted 5 lines
script that will automatically mount usb devices that are attached.
It ties in to the hotplug architecture as closely as possible, without changing anything. So then I subscribed to this list to announce it.
Quoted 7 lines
Quoted 7 lines
Of course, that's when I discovered
http://users.actrix.co.nz/michael/usbmount.html by Michael Hamilton.So I'll first give a rundown of differences:
My solution:
- only mounts the device that was just inserted (with some luck)
- is calledautomount_usb, so that, by changing theusb.usermap, it gets
Quoted 10 lines
Quoted 10 lines
called every time a device is inserted and not just the first time
- creates remover scripts that have/bin/shas the only dependency
- creates nicely readable names as mount points
- supports devices with multiple partitions
- is really smallBut Michael's solution:
- makes KDE icons
- is easier to readQuoted 5 lines
Quoted 5 lines
So, please have a look at the attached code, and tell me what you think about the device detection code. Michael, if you read this, we could perhaps merge the two efforts and get all the features.
Also, let's start a thread on making a gui.agent script that
gets called
Quoted 3 lines
Quoted 3 lines
by the hotplug scripts. It would notify the user of hotplug events. I feel that it should be called with the same environment as the other agents, with an extra
HOTPLUG_PATHvariable indicating thepath on which
Quoted 6 lines
Quoted 6 lines
the device is available, if applicable.
This could then be used by KDE, Gnome etc to notify the user.
Cheers,
Quoted 8 lines
Quoted 8 lines
Wout.
PS: /Please/ change usb.agent so that it creates
/var/run/usb/before pointing remover scripts there...
["automount_usb" (TEXT/PLAIN)]#!/bin/sh
# Automount hotplugged usb storage devices. Copyright (c)2002, Wout Mertens
Quoted 9 lines
Quoted 9 lines
# This script is released under the GPL.
# The usb devices will be mounted for the console user. # To work, this needs:
# - kernel support:# - hotplugging, /proc, usbdevfs and devfs # - as modules: usb-storage, sd_mod, scsi_mod # - filesystems that will be mounted, like vfat# - ls, tr, echo, awk, basename, stat, grep, mount, umount,
mkdir, rm, sed
Quoted 10 lines
Quoted 10 lines
# TODO Fix usb.agent so that
/var/run/usbgets created if missing # TODO Some rigid way of getting this run. Currently, I do # grep usb-storage /lib/modules/*/modules.usbmap|sed 's/usb-storage/automount_usb/' \Quoted 1 line
Quoted 1 line
/etc/hotplug/usb.usermap# TODO Lots of testing# TODO nice way of setting options
# TODO Also, the error checking should probably be more robust # TODO Some clean way of handling disconnects while writing. # TODO Make a generic event system for GUIs that shows thatsomething was
Quoted 10 lines
Quoted 10 lines
# mounted for the user. Proposal: /etc/hotplug/gui.agent gets # called with ACTIONd/remove, NAME=nice_name, PATH=new_path, etc. # Not just for new storage, scanners and so on are useful too...# Dump debug
mesg () {
#return/usr/bin/logger-t $0 "$*"
}Quoted 4 lines
Quoted 4 lines
# Figure out the device to mount NUM=
basename $DEVICE|sed 's/^0*//'SERIAL=`awk -F= '/^T:.*/{if($0~/Dev#= *'$NUM' \
/){t=1}else{t=0}}t=1&&/SerialNumber/{print $2;exit}'/proc/bus/usb/devices`
Quoted 4 lines
Quoted 4 lines
\
PRODUCT=`awk -F= '/^T:.*/{if($0~/Dev#= *'$NUM' /){t=1}else{t=0}}t=1&&/Product/{print \
$2;exit}' /proc/bus/usb/devices` # Use the serial or theproduct name to
Quoted 77 lines
Quoted 58 lines
find which \
scsi host was just created if [ -n "$SERIAL" ]; then SCSI=grep -l $SERIAL /proc/scsi/usb-storage-*/*|tail -1elif [ -n "$PRODUCT" ]; then
SCSI=grep -l $PRODUCT /proc/scsi/usb-storage-*/*|tail -1fimesg Device No. $NUM, serial $SERIAL, name $PRODUCT, path $SCSI
# Mount it
if [ -n "$SCSI" ]; then
# The name of the file is the number of the SCSI host SCSI=basename $SCSI
PARTS=ls /dev/scsi/host$SCSI/*/*/*/part*MOUNTPATH=/mnt/usb/echo $PRODUCT|tr '[ /?*"]' _
if [ -e "$MOUNTPATH" ]; then
if mount|grep "$MOUNTPATH">/dev/null; then
# TODO I'm too lazy to write proper collision avoidance code MOUNTPATH="$MOUNTPATH".$$
fi
fi
# I'm hoping that mount ignores options that don't apply to the fs # These options should prevent abuse and make it writeable for the# console user. MOUNTOPTS='-osync,nosuid'`stat -c',uid=%u,gid=%g' /dev/console` mesg Mounting $PARTS on $MOUNTPATH, options $MOUNTOPTS[
echo $PARTS|wc -w-eq 1 ] && MOUNTDIRECT=1
REMOVE> > >> for i in $PARTS; do
if [ -n "$MOUNTDIRECT" ]; then
T=$MOUNTPATH
else
T=$MOUNTPATH/basename $i
fi
mkdir -p $T
if mount $MOUNTOPTS $i $T; then
REMOVE="umount $T;$REMOVE;rmdir $T"
else
rmdir $T
fi
done# Create remover
echo "#!/bin/sh" > $REMOVER
echo $REMOVE | sed 's/;;/;/g' >> $REMOVER
chmod +x $REMOVER
else
exit 1
fiQuoted 9 lines
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel-------------------------------------------------------
This SF.NET email is sponsored by:
SourceForge Enterprise Edition + IBM + LinuxWorld = Something 2 See!
http://www.vasoftware.com
_______________________________________________
Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel
-------------------------------------------------------
This SF.NET email is sponsored by:
SourceForge Enterprise Edition + IBM + LinuxWorld = Something 2 See!
http://www.vasoftware.com
_______________________________________________
Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel
That's pretty much it. The logic is more or less:
On mass storage hotplug, try to mount FS.
If mount fails, start daemon which tries again every N seconds. If mount succeeds, start daemon which tries to read N sectors every N seconds.
If read fails, umount the FS and start waiting again.
Keeping a hash is a good idea to bulletproof the whole thing.
-tc
Quoted 265 lines · on 1/7/03 12:37 PM, Wout Mertens at [email protected] wrote:
Maybe a possible check would be to try to read the first few sectors (partition table and boot record), and keep an md5 hash. If it changes, do the sensible thing... Could be faster and less resource intensive than trying to mount it.
Wout.
Quoted 4 lines · Eddie Shi
That's it, I think Window's must have done the same thing you described. BTW, when you say "ping it to make sure card is not removed", do you mean that you try to mount it and check the status return from the mount?
Quoted 250 lines
Thanks for the feedback.
Eddie
Quoted 244 lines
-----Original Message-----
From: Tom Clark [mailto:[email protected]]
Sent: Tuesday, January 07, 2003 6:56 AM
To: [email protected]
Cc: Eddie Shi; Wout Mertens
Subject: Re: My first usb storage automount script :)The problem is you need a notification in the first place that a card has been inserted. Unfortunately, I don't think any card readers on the market
provide this functionality. I've only been able to solve this with a kind of daemon that periodically tries to mount the card reader's filesystem and
then pings it occasionally to make sure the card hasn't been removed. It's
ugly and wasteful, but what other alternative is there?-tc
Quoted 5 lines · Wout Mertens
Hmmm,
Only one way to find out :)
The script is real easy to install, just copy it to
/etc/hotplug, and runQuoted 3 lines
the line that registers it (you can find it inside the script).
I think the issue will be if the card reader sends usb
plug/unplug events
Quoted 7 lines
or not... if it doesn't, I really wouldn't know how to do it.
Actually, there's an easier way to test:
Plug in the reader, have hotplug enabled, and watch/var/log/messagesto see what the kernel thinks is happening. If you see messages every time you plug/unplug a card, you're lucky, and it will probably work.Quoted 10 lines
Good luck,
Wout.
Quoted 4 lines · Eddie Shi
Hi,
Does anyone know whether this will work on the following situation:1. The usb-storage device (ie USB card reader) is alreay
plugged in the
Quoted 5 lines
Quoted 5 lines
system.
2. No CF/MS/SM/SD are plugged in yet.
Given the above assumption , Will the system automount the
CF when the CF
Quoted 4 lines
Quoted 4 lines
card is plugged in ? Or We still need to manually enter " mount -t vfat
/dev/sda1/cf ".I guess what I would like to see is to have something like
CD's automount
Quoted 8 lines
Quoted 8 lines
when a CD is inserted.
Thanks
Eddie
------------------------------------------------------------------
----------Quoted 4 lines
Quoted 4 lines
------------------
Hi there,I just wanted to share what I hacked up through some
frustration. It's a
Quoted 5 lines
Quoted 5 lines
script that will automatically mount usb devices that are attached.
It ties in to the hotplug architecture as closely as possible, without changing anything. So then I subscribed to this list to announce it.
Quoted 7 lines
Quoted 7 lines
Of course, that's when I discovered
http://users.actrix.co.nz/michael/usbmount.html by Michael Hamilton.So I'll first give a rundown of differences:
My solution:
- only mounts the device that was just inserted (with some luck)
- is calledautomount_usb, so that, by changing theusb.usermap, it gets
Quoted 10 lines
Quoted 10 lines
called every time a device is inserted and not just the first time
- creates remover scripts that have/bin/shas the only dependency
- creates nicely readable names as mount points
- supports devices with multiple partitions
- is really smallBut Michael's solution:
- makes KDE icons
- is easier to readQuoted 5 lines
Quoted 5 lines
So, please have a look at the attached code, and tell me what you think about the device detection code. Michael, if you read this, we could perhaps merge the two efforts and get all the features.
Also, let's start a thread on making a gui.agent script that
gets called
Quoted 3 lines
Quoted 3 lines
by the hotplug scripts. It would notify the user of hotplug events. I feel that it should be called with the same environment as the other agents, with an extra
HOTPLUG_PATHvariable indicating thepath on which
Quoted 6 lines
Quoted 6 lines
the device is available, if applicable.
This could then be used by KDE, Gnome etc to notify the user.
Cheers,
Quoted 8 lines
Quoted 8 lines
Wout.
PS: /Please/ change usb.agent so that it creates
/var/run/usb/before pointing remover scripts there...
["automount_usb" (TEXT/PLAIN)]#!/bin/sh
# Automount hotplugged usb storage devices. Copyright (c)2002, Wout Mertens
Quoted 9 lines
Quoted 9 lines
# This script is released under the GPL.
# The usb devices will be mounted for the console user. # To work, this needs:
# - kernel support:# - hotplugging, /proc, usbdevfs and devfs # - as modules: usb-storage, sd_mod, scsi_mod # - filesystems that will be mounted, like vfat# - ls, tr, echo, awk, basename, stat, grep, mount, umount,
mkdir, rm, sed
Quoted 10 lines
Quoted 10 lines
# TODO Fix usb.agent so that
/var/run/usbgets created if missing # TODO Some rigid way of getting this run. Currently, I do # grep usb-storage /lib/modules/*/modules.usbmap|sed 's/usb-storage/automount_usb/' \Quoted 1 line
Quoted 1 line
/etc/hotplug/usb.usermap# TODO Lots of testing# TODO nice way of setting options
# TODO Also, the error checking should probably be more robust # TODO Some clean way of handling disconnects while writing. # TODO Make a generic event system for GUIs that shows thatsomething was
Quoted 10 lines
Quoted 10 lines
# mounted for the user. Proposal: /etc/hotplug/gui.agent gets # called with ACTIONd/remove, NAME=nice_name, PATH=new_path, etc. # Not just for new storage, scanners and so on are useful too...# Dump debug
mesg () {
#return/usr/bin/logger-t $0 "$*"
}Quoted 4 lines
Quoted 4 lines
# Figure out the device to mount NUM=
basename $DEVICE|sed 's/^0*//'SERIAL=`awk -F= '/^T:.*/{if($0~/Dev#= *'$NUM' \
/){t=1}else{t=0}}t=1&&/SerialNumber/{print $2;exit}'/proc/bus/usb/devices`
Quoted 4 lines
Quoted 4 lines
\
PRODUCT=`awk -F= '/^T:.*/{if($0~/Dev#= *'$NUM' /){t=1}else{t=0}}t=1&&/Product/{print \
$2;exit}' /proc/bus/usb/devices` # Use the serial or theproduct name to
Quoted 77 lines
Quoted 58 lines
find which \
scsi host was just created if [ -n "$SERIAL" ]; then SCSI=grep -l $SERIAL /proc/scsi/usb-storage-*/*|tail -1elif [ -n "$PRODUCT" ]; then
SCSI=grep -l $PRODUCT /proc/scsi/usb-storage-*/*|tail -1fimesg Device No. $NUM, serial $SERIAL, name $PRODUCT, path $SCSI
# Mount it
if [ -n "$SCSI" ]; then
# The name of the file is the number of the SCSI host SCSI=basename $SCSI
PARTS=ls /dev/scsi/host$SCSI/*/*/*/part*MOUNTPATH=/mnt/usb/echo $PRODUCT|tr '[ /?*"]' _
if [ -e "$MOUNTPATH" ]; then
if mount|grep "$MOUNTPATH">/dev/null; then
# TODO I'm too lazy to write proper collision avoidance code MOUNTPATH="$MOUNTPATH".$$
fi
fi
# I'm hoping that mount ignores options that don't apply to the fs # These options should prevent abuse and make it writeable for the# console user. MOUNTOPTS='-osync,nosuid'`stat -c',uid=%u,gid=%g' /dev/console` mesg Mounting $PARTS on $MOUNTPATH, options $MOUNTOPTS[
echo $PARTS|wc -w-eq 1 ] && MOUNTDIRECT=1
REMOVE>>>>> for i in $PARTS; do
if [ -n "$MOUNTDIRECT" ]; then
T=$MOUNTPATH
else
T=$MOUNTPATH/basename $i
fi
mkdir -p $T
if mount $MOUNTOPTS $i $T; then
REMOVE="umount $T;$REMOVE;rmdir $T"
else
rmdir $T
fi
done# Create remover
echo "#!/bin/sh" > $REMOVER
echo $REMOVE | sed 's/;;/;/g' >> $REMOVER
chmod +x $REMOVER
else
exit 1
fiQuoted 9 lines
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel-------------------------------------------------------
This SF.NET email is sponsored by:
SourceForge Enterprise Edition + IBM + LinuxWorld = Something 2 See!
http://www.vasoftware.com
_______________________________________________
Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel
Quoted 8 lines
-------------------------------------------------------
This SF.NET email is sponsored by:
SourceForge Enterprise Edition + IBM + LinuxWorld = Something 2 See!
http://www.vasoftware.com
_______________________________________________
Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel
-------------------------------------------------------
This SF.NET email is sponsored by:
SourceForge Enterprise Edition + IBM + LinuxWorld = Something 2 See!
http://www.vasoftware.com
_______________________________________________
Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel