Skip to content

Instantly share code, notes, and snippets.

@dewomser
Created July 18, 2025 09:08
Show Gist options
  • Save dewomser/17f82a9a486b77d1ede2da0732cf5b1b to your computer and use it in GitHub Desktop.
Save dewomser/17f82a9a486b77d1ede2da0732cf5b1b to your computer and use it in GitHub Desktop.
Mount ISO 4 KDE ist nicht von mir getestet . Nur hier weil Herkunfts-URL nicht erreichbar ist.
#!/bin/bash
# Mount-ISO v1.4
if which kdesu >/dev/null; then
KSU=kdesu
else
KSU=kdesudo
fi
BSNAME="`basename "$1"`"
if ( `echo "$BSNAME" | grep "Mount-ISO" > /dev/null` ) then
MOUNTDIR="$1"
else
MOUNTDIR="$HOME/media/Mount-ISO ($BSNAME)"
fi
function dialog {
kdialog --title "Mount-ISO" --msgbox "$1"
}
function dialog1 {
kdialog --title "Mount-ISO" --dontagain $BSNAME:nofilemsg --msgbox "$1"
}
function dialog2 {
kdialog --title "Mount-ISO" --getsavefilename "$HOME" "*.iso |ISO Files"
}
function err {
case "$1" in
1)
ERROR_MESSAGE="\"$2\" is not readable, check file permissions!"
;;
2)
ERROR_MESSAGE="\"$2\" is already mounted!"
;;
3)
ERROR_MESSAGE="\"$2\" could not be created!"
;;
4)
ERROR_MESSAGE="\"$2\" is not mounted!"
;;
5)
ERROR_MESSAGE="Folder \"$2\" exists but \"$3\" is not mounted!"
;;
6)
ERROR_MESSAGE="Could not mount \"$2\"! Check your system settings."
;;
7)
ERROR_MESSAGE="\"$2\" has data error! File might be of wrong type or corrupted."
;;
8)
ERROR_MESSAGE="\"$2\" is not a directory!"
;;
9)
ERROR_MESSAGE="Error creating ISO image from directory \"$2\"!"
;;
10)
ERROR_MESSAGE="\"$2\" is a directory - MD5 sum can not be calculated!"
;;
11)
ERROR_MESSAGE="\"$2\" file does not exist!"
;;
12)
ERROR_MESSAGE="ISO creation failed! Check if you have CD in your CDROM and if you have required permissions."
;;
13)
ERROR_MESSAGE="Unmounting \"$2\" failed! Check if some programs are using it, close them and try again."
;;
14)
ERROR_MESSAGE="Directory \"$2\" is not writable! Check your permissions."
;;
*)
return 0
;;
esac
dialog "ERROR: $ERROR_MESSAGE"
exit 0
}
function msg {
case "$1" in
1)
INFO_MESSAGE="ISO image \"$2\" successfully created in \"$3\"!"
;;
2)
INFO_MESSAGE="MD5 checksum of \"$2\" is: \"$3\""
;;
3)
INFO_MESSAGE="Tracks were saved as \"$2XX.iso\" in \"$3\""
;;
4)
INFO_MESSAGE="UDF image \"$2\" successfully created in \"$3\"!"
;;
5)
INFO_MESSAGE="CloneCD image was converted into \"$2\" and saved in \"$3\""
;;
6)
INFO_MESSAGE="Image file \"$2\" is of type \"$3\""
;;
7)
INFO_MESSAGE="Nero image was converted into \"$2\" and saved in \"$3\""
;;
8)
INFO_MESSAGE="XBOX image was converted into \"$2\" and saved in \"$3\""
;;
9)
INFO_MESSAGE="Alcohol image was converted into \"$2\" and saved in \"$3\""
;;
*)
return 0
;;
esac
dialog "$INFO_MESSAGE"
exit 0
}
function note {
case "$1" in
1)
NOTICE="Image mounted successfuly!"
;;
2)
NOTICE="Image unmounted successfuly!"
;;
3)
NOTICE="Image creation canceled!"
;;
*)
return 0
;;
esac
dialog1 "$NOTICE"
exit 0
}
function check_mount {
DEV="`mount | grep "$1" | cut -f 1 -d " "`"
if ( test ! -z "$DEV" ) then
return 0
else
return 1
fi
}
function check_cdemu {
if ( ` -s | grep "$1" > /dev/null` ) then
return 0
else
return 1
fi
}
function check_iso {
TYPE=`head "$1" | od -Ax -S 8 | head -n 1 | cut -f 1 -d " " `
case "$TYPE" in
008008)
# ISO image
CHECK="Standard ISO9660 image"
;;
008028)
# ISO image (by WinISO)
CHECK="Standard ISO9660 image (by WinISO)"
;;
053008)
# NRG image
CHECK="NRG image (by Nero)"
;;
007a69)
# XDVDFS image
CHECK="XBOX DVD image"
;;
*)
# Anything else
CHECK="Unknown format"
;;
esac
}
case "$2" in
mount)
if (test -d "$MOUNTDIR") then
check_mount "$MOUNTDIR" &&
err 2 "$1"
else
test -r "$1" ||
err 1 "$1"
mkdir -p "$MOUNTDIR"
fi
if ( test -d "$MOUNTDIR" )
then
TYPE=`head "$1" | od -Ax -S 8 | head -n 1 | cut -f 1 -d " " `
case "$TYPE" in
008008)
# ISO image
MODE=",defaults"
;;
008028)
# ISO image (by WinISO)
MODE=",defaults"
;;
010049)
# ISO image
MODE=",defaults"
;;
053008)
# NRG image
MODE=",offset=307200"
;;
007a69)
# XDVDFS image
rmdir "$MOUNTDIR"
err 7 "$1"
;;
*)
# Anything else
rmdir "$MOUNTDIR"
err 7 "$1"
;;
esac
$KSU -c "mount -t udf,iso9660 -o loop,ro,nodev,noexec,nosuid${MODE} \"${1}\" \"$MOUNTDIR\""
fi
if ( check_mount "$MOUNTDIR" ) then
kfmclient openURL "$MOUNTDIR" && note 1
else
rmdir "$MOUNTDIR"
err 6 "$MOUNTDIR"
fi
;;
unmount)
if (test ! -d "$MOUNTDIR") then
err 4 "$1"
elif (check_mount "$MOUNTDIR") then
$KSU -c "umount \"$MOUNTDIR\"" &&
rmdir "$MOUNTDIR" && note 2 ||
err 13 "$1"
if ( test "${DEV##/dev/cdemu/}" -ge 0 2>/dev/null ) then
-u ${DEV##/dev/cdemu/}
fi
else
err 5 "$MOUNTDIR" "$1"
fi
;;
createiso)
SAVEFILE=`dialog2`
ISOFILE=`basename "$SAVEFILE"`
SAVEDIR=`dirname "$SAVEFILE"`
if ( test "$SAVEFILE" = "" ) then
note 3
elif ( test ! -w "$SAVEDIR" ) then
err 14 "$SAVEDIR"
elif ( test ! -d "$1" ) then
err 8 "$1"
fi
mkisofs -joliet -rock -quiet -no-bak -o "$SAVEFILE" "$1" &&
msg 1 "$ISOFILE" "$SAVEDIR" ||
rm -f "$SAVEFILE" && err 9 "$1"
;;
createudf)
SAVEFILE=`dialog2`
ISOFILE=`basename "$SAVEFILE"`
SAVEDIR=`dirname "$SAVEFILE"`
if ( test "$SAVEFILE" = "" ) then
note 3
elif ( test ! -w "$SAVEDIR" ) then
err 14 "$SAVEDIR"
elif ( test ! -d "$1" ) then
err 8 "$1"
fi
mkisofs -dvd -quiet -no-bak -o "$SAVEFILE" "$1" &&
msg 4 "$ISOFILE" "$SAVEDIR" ||
rm -f "$SAVEFILE" && err 9 "$1"
;;
calc)
if ( test -d "$1" ) then
err 10 "$1"
elif ( test -f "$1" ) then
SUM=`md5sum "$1" | cut -f 1 -d " "`
msg 2 "$BSNAME" "$SUM"
fi
;;
bin2iso)
SAVEDIR="`dirname "$1"`"
BASE="${BSNAME%.*}"
BINFILE="$SAVEDIR/"`head -n 1 "$1" | cut -f 2 -d " " | sed -e "s/^\"//" -e "s/\"$//"`
if ( test ! -w "$SAVEDIR" ) then
SAVEDIR="$HOME//opt/kde3"
fi
if ( test ! -f "$BINFILE" ) then
err 11 "`basename "$BINFILE"`"
else
/usr/bin/bchunk "$BINFILE" "$1" "$BASE" > /dev/null
ls -1b "${BASE}"*.iso | while read file; do mv "$file" $SAVEDIR; done
msg 3 "$BASE" "$SAVEDIR"
fi
;;
ccd2iso)
SAVEDIR="`dirname "$1"`"
BASE="${BSNAME%.*}"
IMGFILE="$SAVEDIR/$BASE.img"
if ( test ! -w "$SAVEDIR" ) then
SAVEDIR="$HOME//opt/kde3"
fi
if ( test ! -f "$IMGFILE" ) then
err 11 "$BASE.img"
else
/usr/bin/ccd2iso "$IMGFILE" "$SAVEDIR/$BASE.iso" > /dev/null
msg 5 "$BASE.iso" "$SAVEDIR"
fi
;;
mdf2iso)
SAVEDIR="`dirname "$1"`"
BASE="${BSNAME%.*}"
IMGFILE="$SAVEDIR/$BASE.img"
if ( test ! -w "$SAVEDIR" ) then
SAVEDIR="$HOME//opt/kde3"
fi
if ( test ! -f "$IMGFILE" ) then
err 11 "$BASE.img"
else
/usr/bin/mdf2iso "$IMGFILE" "$SAVEDIR/$BASE.iso" > /dev/null
msg 9 "$BASE.iso" "$SAVEDIR"
fi
;;
grabiso)
if ( test ! -w "$1" ) then
IMGFILE="`kdialog --inputbox "This directory is read-only, saving to Desktop! Choose name for ISO-image:" "$HOME//opt/kde3mount.iso"`" || exit 0
else
IMGFILE="`kdialog --inputbox "Choose name for ISO-image:" "$1/mount.iso"`" || exit 0
fi
SAVEDIR="`dirname "$IMGFILE"`"
while ( ( test ! -w "$SAVEDIR" ) || ( test -f "$IMGFILE" ) )
do
if ( test -f "$IMGFILE" ) then
IMGFILE="`kdialog --inputbox "File with this name already exists! Choose another name:" "$IMGFILE"`" ||
exit 0
elif ( test ! -w "$SAVEDIR" ) then
IMGFILE="`kdialog --inputbox "Permission to write here is denied! Choose another name:" "$IMGFILE"`" ||
exit 0
fi
SAVEDIR="`dirname "$IMGFILE"`"
done
if ( test "$SAVEDIR" != "$IMGFILE" ) then
dd if="/dev/cdrom" of="$IMGFILE" &&
msg 1 "`basename "$IMGFILE"`" "$SAVEDIR" ||
err
fi
;;
nrg2iso)
SAVEDIR="`dirname "$1"`"
BASE="${BSNAME%.*}"
IMGFILE="$SAVEDIR/$BASE.iso"
if ( test ! -w "$SAVEDIR" ) then
SAVEDIR="$HOME//opt/kde3"
fi
TYPE=`head "$1" | od -Ax -S 8 | head -n 1 | cut -f 1 -d " " `
case "$TYPE" in
053008)
dd if="$1" of="$IMGFILE" bs=512 skip=600 > /dev/null &&
msg 7 "$BASE.iso" "$SAVEDIR" ||
err 3 "$IMGFILE"
;;
*)
err 7 "$1"
;;
esac
;;
mountcb)
BASE="${BSNAME%.*}"
BINFILE="$SAVEDIR/"`head -n 1 "$1" | cut -f 2 -d " " | sed -e "s/^\"//" -e "s/\"$//"`
NODE=$((` -s | cut -f 8 -d " " | grep 0 -n -m 1 | cut -c 1`-2))
if (test -d "$MOUNTDIR") then
check_mount "$MOUNTDIR" &&
err 2 "$1"
else
mkdir -p "$MOUNTDIR"
fi
if ( test -d "$MOUNTDIR" )
then
$NODE "$1" &&
mount /dev/cdemu/$DEV "$MOUNTDIR" ||
-u $NODE
fi
if ( check_mount "$MOUNTDIR" ) then
kfmclient openURL "$MOUNTDIR"
else
rmdir "$MOUNTDIR"
err 6 "$MOUNTDIR"
fi
;;
xbx2iso)
SAVEDIR="`dirname "$1"`"
BASE="${BSNAME%.*}"
IMGFILE="$SAVEDIR/$BASE.img"
if ( test ! -w "$SAVEDIR" ) then
SAVEDIR="$HOME//opt/kde3"
fi
if ( test ! -f "$IMGFILE" ) then
err 11 "$BASE.img"
else
/usr/bin/ccd2iso "$IMGFILE" "$SAVEDIR/$BASE.iso" > /dev/null
msg 8 "$BASE.iso" "$SAVEDIR"
fi
;;
createxbx)
SAVEFILE=`dialog2`
ISOFILE=`basename "$SAVEFILE"`
SAVEDIR=`dirname "$SAVEFILE"`
if ( test "$SAVEFILE" = "" ) then
note 3
elif ( test ! -w "$SAVEDIR" ) then
err 14 "$SAVEDIR"
elif ( test ! -d "$1" ) then
err 8 "$1"
fi
-c "$1" "$SAVEFILE" &&
msg 4 "$ISOFILE" "$SAVEDIR" ||
err 9 "$1"
;;
checkiso)
check_iso "$1"
msg 6 "$BSNAME" "$CHECK"
;;
esac
echo "Mount-ISO script v1.4"
echo "For updates, details on have to use and help please go to:"
echo "http://www.kde-apps.org/content/show.php?content=108042"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment