Release easy-samba 1.4
This commit is contained in:
commit
6bde26a005
489
src/easy-samba
Executable file
489
src/easy-samba
Executable file
|
@ -0,0 +1,489 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
##############################################################
|
||||||
|
# Crear carpetas compartidas en Linux #
|
||||||
|
# U. Modificacion: 02-06-2018 #
|
||||||
|
# Autor: q3aql #
|
||||||
|
# Contacto: q3aql@openmailbox.org #
|
||||||
|
# Licencia: GPL v2.0 #
|
||||||
|
##############################################################
|
||||||
|
VERSION="1.4"
|
||||||
|
M_DATE="020618"
|
||||||
|
|
||||||
|
# Parametros globales
|
||||||
|
linuxSambaFolder="/opt/easy-samba"
|
||||||
|
sambaConfig="/etc/samba/smb.conf"
|
||||||
|
sambaBackup="/etc/samba/smb.conf.orig"
|
||||||
|
homeUsers="/home"
|
||||||
|
homeUsersList="/tmp/easy-samba-users.list"
|
||||||
|
sambaFoldersList="/tmp/easy-samba-folders.list"
|
||||||
|
sambaSedFolder="/tmp/easy-samba/word/"
|
||||||
|
|
||||||
|
# Mostrar aviso de usuario de usuario root
|
||||||
|
function rootMessage() {
|
||||||
|
echo ""
|
||||||
|
echo "* Nota: Recuerda haber ejecutado como root!"
|
||||||
|
echo ""
|
||||||
|
echo -n "* Pulsa INTRO para continuar... " ; read continue
|
||||||
|
}
|
||||||
|
|
||||||
|
# Funcion para realizar copia del fichero smb.conf original
|
||||||
|
function backupSmbConf() {
|
||||||
|
if [ -f ${sambaBackup} ] ; then
|
||||||
|
echo "OK" > /dev/null
|
||||||
|
else
|
||||||
|
echo "" >> ${sambaConfig}
|
||||||
|
echo "" >> ${sambaConfig}
|
||||||
|
cp -rf ${sambaConfig} ${sambaBackup} 2> /dev/null
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Funcion para eliminar espacios y simbolos
|
||||||
|
# Sintaxis: convertText "<text>"
|
||||||
|
function convertText() {
|
||||||
|
wordToConvert=${1}
|
||||||
|
sambaSedFile="${sambaSedFolder}/easy-samba-${RANDOM}.txt"
|
||||||
|
mkdir -p ${sambaSedFolder} && chmod 777 -R ${sambaSedFolder} 2> /dev/null
|
||||||
|
echo "${wordToConvert}" > ${sambaSedFile}
|
||||||
|
# Borrar espacios
|
||||||
|
sed -i 's/ /_/g' "${sambaSedFile}" &> /dev/null
|
||||||
|
# Borrar simbolos
|
||||||
|
symbolsList="[ ] @ { } | \ / ~ # $ % & ? ¿ = ( ) < > ! ¡"
|
||||||
|
for findSymbol in ${symbolsList} ; do
|
||||||
|
sed -i "s/${findSymbol}//g" "${sambaSedFile}" &> /dev/null
|
||||||
|
done
|
||||||
|
# Borrar el resto de simbolos
|
||||||
|
sed -i 's/*//g' "${sambaSedFile}" &> /dev/null
|
||||||
|
sed -i 's/"//g' "${sambaSedFile}" &> /dev/null
|
||||||
|
sed -i "s/^//g" "${sambaSedFile}" &> /dev/null
|
||||||
|
# Cambiar algunos simbolos
|
||||||
|
sed -i 's/+/_/g' "${sambaSedFile}" &> /dev/null
|
||||||
|
sed -i 's/:/-/g' "${sambaSedFile}" &> /dev/null
|
||||||
|
sed -i 's/;/-/g' "${sambaSedFile}" &> /dev/null
|
||||||
|
# Mostrar texto convertido
|
||||||
|
wordToConvert=$(cat ${sambaSedFile})
|
||||||
|
echo ${wordToConvert}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Funcion para crear enlace en el escritorio/home de los usuarios
|
||||||
|
# Sintaxis: createFolderLink [carpeta]
|
||||||
|
function createFolderLink() {
|
||||||
|
echo -n "* Deseas crear un enlace en el escritorio/home para los usuarios locales (s[*]/n): " ; read createLink
|
||||||
|
if [ "${createLink}" == "n" ] ; then
|
||||||
|
echo "nule" > /dev/null
|
||||||
|
else
|
||||||
|
if [ "$(ls -A ${homeUsers})" ] ; then
|
||||||
|
cd ${homeUsers}
|
||||||
|
ls > ${homeUsersList}
|
||||||
|
for userDetected in $(cat ${homeUsersList}) ; do
|
||||||
|
if [ -d ${homeUsers}/${userDetected}/Desktop ] ; then
|
||||||
|
ln -s ${linuxSambaFolder}/${1} ${homeUsers}/${userDetected}/Desktop/ 2> /dev/null
|
||||||
|
ln -s ${linuxSambaFolder}/${1} ${homeUsers}/${userDetected}/ 2> /dev/null
|
||||||
|
output=$?
|
||||||
|
elif [ -d ${homeUsers}/${userDetected}/Escritorio ] ; then
|
||||||
|
ln -s ${linuxSambaFolder}/${1} ${homeUsers}/${userDetected}/Escritorio/ 2> /dev/null
|
||||||
|
ln -s ${linuxSambaFolder}/${1} ${homeUsers}/${userDetected}/ 2> /dev/null
|
||||||
|
output=$?
|
||||||
|
elif [ -d ${homeUsers}/${userDetected}/Escriptori ] ; then
|
||||||
|
ln -s ${linuxSambaFolder}/${1} ${homeUsers}/${userDetected}/Escriptori/ 2> /dev/null
|
||||||
|
ln -s ${linuxSambaFolder}/${1} ${homeUsers}/${userDetected}/ 2> /dev/null
|
||||||
|
output=$?
|
||||||
|
else
|
||||||
|
ln -s ${linuxSambaFolder}/${1} ${homeUsers}/${userDetected}/ 2> /dev/null
|
||||||
|
output=$?
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if [ ${output} -eq 0 ] ; then
|
||||||
|
echo "* Enlaces creados correctamente!"
|
||||||
|
else
|
||||||
|
echo "* Error: Fallo al crear los enlaces!"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "* Usuarios no encontrados en ${homeUsers}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Funcion para borrar los enlaces en el escritorio/home de los usuarios
|
||||||
|
# Sintaxis: deleteFolderLink [carpeta]
|
||||||
|
function deleteFolderLink() {
|
||||||
|
echo -n "* Deseas borrar los enlaces en el escritorio/home de los usuarios locales (s[*]/n): " ; read deleteLink
|
||||||
|
if [ "${deleteLink}" == "n" ] ; then
|
||||||
|
echo "nule" > /dev/null
|
||||||
|
else
|
||||||
|
if [ "$(ls -A ${homeUsers})" ] ; then
|
||||||
|
cd ${homeUsers}
|
||||||
|
ls > ${homeUsersList}
|
||||||
|
for userDetected in $(cat ${homeUsersList}) ; do
|
||||||
|
if [ -d ${homeUsers}/${userDetected}/Desktop ] ; then
|
||||||
|
rm -f ${homeUsers}/${userDetected}/Desktop/${1} 2> /dev/null
|
||||||
|
rm -f ${homeUsers}/${userDetected}/${1} 2> /dev/null
|
||||||
|
output=$?
|
||||||
|
elif [ -d ${homeUsers}/${userDetected}/Escritorio ] ; then
|
||||||
|
rm -f ${homeUsers}/${userDetected}/Escritorio/${1} 2> /dev/null
|
||||||
|
rm -f ${homeUsers}/${userDetected}/${1} 2> /dev/null
|
||||||
|
output=$?
|
||||||
|
elif [ -d ${homeUsers}/${userDetected}/Escriptori ] ; then
|
||||||
|
rm -f ${homeUsers}/${userDetected}/Escriptori/${1} 2> /dev/null
|
||||||
|
rm -f ${homeUsers}/${userDetected}/${1} 2> /dev/null
|
||||||
|
output=$?
|
||||||
|
else
|
||||||
|
rm -f ${homeUsers}/${userDetected}/${1} 2> /dev/null
|
||||||
|
output=$?
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if [ ${output} -eq 0 ] ; then
|
||||||
|
echo "* Enlaces borrados correctamente!"
|
||||||
|
else
|
||||||
|
echo "* Error: Fallo al borrar los enlaces!"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "* Usuarios no encontrados en ${homeUsers}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Funcion para crear carpeta compartida con acceso para todos
|
||||||
|
function newFolderEveryone() {
|
||||||
|
echo ""
|
||||||
|
echo -n "* Introduce el nombre de la carpeta que deseas crear (sin acentos): " ; read folder
|
||||||
|
formatText=$(convertText "${folder}")
|
||||||
|
folder=${formatText}
|
||||||
|
if [ -z ${folder} ] ; then
|
||||||
|
echo "* Debes introducir un nombre de carpeta!"
|
||||||
|
echo ""
|
||||||
|
echo -n "* Pulsa INTRO para continuar... " ; read continue
|
||||||
|
elif [ -d ${linuxSambaFolder}/${folder} ] ; then
|
||||||
|
echo "* La carpeta '${folder}' ya está creada, elige otro nombre"
|
||||||
|
echo ""
|
||||||
|
echo -n "* Pulsa INTRO para continuar... " ; read continue
|
||||||
|
else
|
||||||
|
mkdir -p ${linuxSambaFolder}/${folder} 2> /dev/null
|
||||||
|
output=$?
|
||||||
|
if [ ${output} -ne 0 ] ; then
|
||||||
|
echo "* Error: Fallo al crear la carpeta compartida '${folder}'"
|
||||||
|
echo ""
|
||||||
|
echo -n "* Pulsa INTRO para continuar... " ; read continue
|
||||||
|
else
|
||||||
|
chmod 777 -R ${linuxSambaFolder}/${folder}
|
||||||
|
echo "[${folder}]" >> ${sambaConfig}
|
||||||
|
echo "# Folder to ${linuxSambaFolder}/${folder} # 00bc00" >> ${sambaConfig}
|
||||||
|
echo "path = ${linuxSambaFolder}/${folder}" >> ${sambaConfig}
|
||||||
|
echo "comment = Folder by easy-samba ${VERSION} (${M_DATE})" >> ${sambaConfig}
|
||||||
|
echo "browseable = yes" >> ${sambaConfig}
|
||||||
|
echo "writeable = yes" >> ${sambaConfig}
|
||||||
|
echo "read only = no" >> ${sambaConfig}
|
||||||
|
echo "guest ok = yes" >> ${sambaConfig}
|
||||||
|
echo "" >> ${sambaConfig}
|
||||||
|
echo "* Carpeta compartida '${folder}' creada con exito!"
|
||||||
|
createFolderLink ${folder}
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Funcion para crear carpeta compartida de solo lectura
|
||||||
|
function newFolderReadOnly() {
|
||||||
|
echo ""
|
||||||
|
echo -n "* Introduce el nombre de la carpeta que deseas crear (sin acentos): " ; read folder
|
||||||
|
formatText=$(convertText "${folder}")
|
||||||
|
folder=${formatText}
|
||||||
|
if [ -z ${folder} ] ; then
|
||||||
|
echo "* Debes introducir un nombre de carpeta!"
|
||||||
|
echo ""
|
||||||
|
echo -n "* Pulsa INTRO para continuar... " ; read continue
|
||||||
|
elif [ -d ${linuxSambaFolder}/${folder} ] ; then
|
||||||
|
echo "* La carpeta '${folder}' ya está creada, elige otro nombre"
|
||||||
|
echo ""
|
||||||
|
echo -n "* Pulsa INTRO para continuar... " ; read continue
|
||||||
|
else
|
||||||
|
mkdir -p ${linuxSambaFolder}/${folder} 2> /dev/null
|
||||||
|
output=$?
|
||||||
|
if [ ${output} -ne 0 ] ; then
|
||||||
|
echo "* Error: Fallo al crear la carpeta compartida '${folder}'"
|
||||||
|
echo ""
|
||||||
|
echo -n "* Pulsa INTRO para continuar... " ; read continue
|
||||||
|
else
|
||||||
|
chmod 777 -R ${linuxSambaFolder}/${folder}
|
||||||
|
echo "[${folder}]" >> ${sambaConfig}
|
||||||
|
echo "# Folder to ${linuxSambaFolder}/${folder} # 00bc00" >> ${sambaConfig}
|
||||||
|
echo "path = ${linuxSambaFolder}/${folder}" >> ${sambaConfig}
|
||||||
|
echo "comment = Folder by easy-samba ${VERSION} (${M_DATE})" >> ${sambaConfig}
|
||||||
|
echo "browseable = yes" >> ${sambaConfig}
|
||||||
|
echo "writeable = no" >> ${sambaConfig}
|
||||||
|
echo "read only = yes" >> ${sambaConfig}
|
||||||
|
echo "guest ok = yes" >> ${sambaConfig}
|
||||||
|
echo "" >> ${sambaConfig}
|
||||||
|
echo "* Carpeta compartida '${folder}' (solo lectura) creada con exito!"
|
||||||
|
createFolderLink ${folder}
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Crear carpeta compartida para un usuario
|
||||||
|
function newFolderForUser() {
|
||||||
|
echo ""
|
||||||
|
echo -n "* Introduce el nombre de la carpeta que deseas crear (sin acentos): " ; read folder
|
||||||
|
formatText=$(convertText "${folder}")
|
||||||
|
folder=${formatText}
|
||||||
|
if [ -z ${folder} ] ; then
|
||||||
|
echo "* Debes introducir un nombre de carpeta!"
|
||||||
|
echo ""
|
||||||
|
echo -n "* Pulsa INTRO para continuar... " ; read continue
|
||||||
|
elif [ -d ${linuxSambaFolder}/${folder} ] ; then
|
||||||
|
echo "* La carpeta '${folder}' ya está creada, elige otro nombre"
|
||||||
|
echo ""
|
||||||
|
echo -n "* Pulsa INTRO para continuar... " ; read continue
|
||||||
|
else
|
||||||
|
mkdir -p ${linuxSambaFolder}/${folder} 2> /dev/null
|
||||||
|
output=$?
|
||||||
|
if [ ${output} -ne 0 ] ; then
|
||||||
|
echo "* Error: Fallo al crear la carpeta compartida '${folder}'"
|
||||||
|
echo ""
|
||||||
|
echo -n "* Pulsa INTRO para continuar... " ; read continue
|
||||||
|
else
|
||||||
|
echo -n "* Introduce el nombre del usuario: " ; read forUser
|
||||||
|
randomFolder=/tmp/easy-samba/${RANDOM}-${RANDOM}
|
||||||
|
mkdir -p ${randomFolder}
|
||||||
|
chown ${forUser} ${randomFolder} 2> /dev/null
|
||||||
|
output=$?
|
||||||
|
if [ ${output} -ne 0 ] ; then
|
||||||
|
rm -rf ${linuxSambaFolder}/${folder}
|
||||||
|
echo "* No existe el usuario especificado!"
|
||||||
|
echo ""
|
||||||
|
echo -n "* Pulsa INTRO para continuar... " ; read continue
|
||||||
|
else
|
||||||
|
chmod 755 -R ${linuxSambaFolder}/${folder}
|
||||||
|
echo "[${folder}]" >> ${sambaConfig}
|
||||||
|
echo "# Folder to ${linuxSambaFolder}/${folder} # 00bc00" >> ${sambaConfig}
|
||||||
|
echo "path = ${linuxSambaFolder}/${folder}" >> ${sambaConfig}
|
||||||
|
echo "comment = Folder by easy-samba ${VERSION} (${M_DATE})" >> ${sambaConfig}
|
||||||
|
echo "browseable = yes" >> ${sambaConfig}
|
||||||
|
echo "writeable = yes" >> ${sambaConfig}
|
||||||
|
echo "read only = no" >> ${sambaConfig}
|
||||||
|
echo "guest ok = yes" >> ${sambaConfig}
|
||||||
|
echo "" >> ${sambaConfig}
|
||||||
|
echo "* Carpeta compartida '${folder}' (para ${forUser}) creada con exito!"
|
||||||
|
createFolderLink ${folder}
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Crear carpeta compartida para imprimir
|
||||||
|
function newFolderPrintable() {
|
||||||
|
echo ""
|
||||||
|
echo -n "* Introduce el nombre de la carpeta que deseas crear (sin acentos): " ; read folder
|
||||||
|
formatText=$(convertText "${folder}")
|
||||||
|
folder=${formatText}
|
||||||
|
if [ -z ${folder} ] ; then
|
||||||
|
echo "* Debes introducir un nombre de carpeta!"
|
||||||
|
echo ""
|
||||||
|
echo -n "* Pulsa INTRO para continuar... " ; read continue
|
||||||
|
elif [ -d ${linuxSambaFolder}/${folder} ] ; then
|
||||||
|
echo "* La carpeta '${folder}' ya está creada, elige otro nombre"
|
||||||
|
echo ""
|
||||||
|
echo -n "* Pulsa INTRO para continuar... " ; read continue
|
||||||
|
else
|
||||||
|
mkdir -p ${linuxSambaFolder}/${folder} 2> /dev/null
|
||||||
|
output=$?
|
||||||
|
if [ ${output} -ne 0 ] ; then
|
||||||
|
echo "* Error: Fallo al crear la carpeta compartida '${folder}'"
|
||||||
|
echo ""
|
||||||
|
echo -n "* Pulsa INTRO para continuar... " ; read continue
|
||||||
|
else
|
||||||
|
chmod 777 -R ${linuxSambaFolder}/${folder}
|
||||||
|
echo "[${folder}]" >> ${sambaConfig}
|
||||||
|
echo "# Folder to ${linuxSambaFolder}/${folder} # 00bc00" >> ${sambaConfig}
|
||||||
|
echo "path = ${linuxSambaFolder}/${folder}" >> ${sambaConfig}
|
||||||
|
echo "comment = Folder by easy-samba ${VERSION} (${M_DATE})" >> ${sambaConfig}
|
||||||
|
echo "browseable = yes" >> ${sambaConfig}
|
||||||
|
echo "writeable = yes" >> ${sambaConfig}
|
||||||
|
echo "printable = yes" >> ${sambaConfig}
|
||||||
|
echo "guest ok = yes" >> ${sambaConfig}
|
||||||
|
echo "" >> ${sambaConfig}
|
||||||
|
echo "* Carpeta compartida '${folder}' (printable) creada con exito!"
|
||||||
|
createFolderLink ${folder}
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Funcion para reiniciar el servicio de Samba
|
||||||
|
function restartSamba() {
|
||||||
|
echo -n "* Deseas reiniciar los servicios de Samba (s[*]/n): " ; read sambaSN
|
||||||
|
if [ "${sambaSN}" == "n" ] ; then
|
||||||
|
echo "nule" > /dev/null
|
||||||
|
else
|
||||||
|
echo "* Reiniciando servicios de Samba"
|
||||||
|
sleep 3
|
||||||
|
/etc/init.d/samba restart &> /dev/null
|
||||||
|
systemctl restart smbd.service 2> /dev/null
|
||||||
|
systemctl restart nmbd.service 2> /dev/null
|
||||||
|
systemctl restart smb.service 2> /dev/null
|
||||||
|
echo "* Servicios de Samba reiniciados"
|
||||||
|
echo ""
|
||||||
|
sleep 3
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Funcion para todas borrar las carpetas compartidas
|
||||||
|
function restoreSmb() {
|
||||||
|
echo ""
|
||||||
|
echo "* Nota: Se van a eliminar todas las carpetas compartidas y su contenido!"
|
||||||
|
echo "* Importante: Se volvera al estado inicial del fichero 'smb.conf' antes de"
|
||||||
|
echo " de ejecutar 'easy-samba' por primera vez."
|
||||||
|
echo ""
|
||||||
|
echo -n "* Deseas continuar (s/n[*]): " ; read deleteFolder
|
||||||
|
if [ "${deleteFolder}" == "s" ] ; then
|
||||||
|
echo "* Borrando carpetas..."
|
||||||
|
sleep 2
|
||||||
|
rm -rf ${linuxSambaFolder}/* 2> /dev/null
|
||||||
|
output=$?
|
||||||
|
if [ ${output} -eq 0 ] ; then
|
||||||
|
echo "* Carpetas borradas con exito!"
|
||||||
|
cp -rf ${sambaBackup} ${sambaConfig} 2> /dev/null
|
||||||
|
#rm -rf ${sambaBackup} 2> /dev/null
|
||||||
|
restartSamba
|
||||||
|
else
|
||||||
|
echo "* Fallo al borrar las carpetas compartidas!"
|
||||||
|
echo ""
|
||||||
|
echo -n "* Pulsa INTRO para continuar... " ; read continue
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "* Se ha anulado el proceso de restauracion"
|
||||||
|
echo ""
|
||||||
|
echo -n "* Pulsa INTRO para continuar... " ; read continue
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Funcion para mostrar carpetas compartidas
|
||||||
|
function viewFolders() {
|
||||||
|
if [ "$(ls -A ${linuxSambaFolder})" ] ; then
|
||||||
|
cd ${linuxSambaFolder}
|
||||||
|
ls > ${sambaFoldersList}
|
||||||
|
echo ""
|
||||||
|
echo "* Lista de carpetas compartidas disponibles:"
|
||||||
|
echo ""
|
||||||
|
folderList=""
|
||||||
|
for folderDetected in $(cat ${sambaFoldersList}) ; do
|
||||||
|
echo " + ${folderDetected}"
|
||||||
|
done
|
||||||
|
echo ""
|
||||||
|
echo -n "* Pulsa INTRO para continuar... " ; read continue
|
||||||
|
else
|
||||||
|
echo ""
|
||||||
|
echo "* Actualmente no hay carpetas compartidas!"
|
||||||
|
echo ""
|
||||||
|
echo -n "* Pulsa INTRO para continuar... " ; read continue
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Funcion para borrar una carpeta compartida
|
||||||
|
function removeFolder() {
|
||||||
|
echo ""
|
||||||
|
echo -n "* Introduce el nombre de la carpeta que deseas borrar: " ; read folder
|
||||||
|
if [ -z ${folder} ] ; then
|
||||||
|
echo "* Debes introducir un nombre de carpeta!"
|
||||||
|
echo ""
|
||||||
|
echo -n "* Pulsa INTRO para continuar... " ; read continue
|
||||||
|
elif [ -d ${linuxSambaFolder}/${folder} ] ; then
|
||||||
|
echo "* Borrando carpeta '${folder}' ..."
|
||||||
|
rm -rf ${linuxSambaFolder}/${folder} 2> /dev/null
|
||||||
|
output=$?
|
||||||
|
if [ ${output} -eq 0 ] ; then
|
||||||
|
readLine=$(cat ${sambaConfig} | grep "# Folder to ${linuxSambaFolder}/${folder} # 00bc00" -n | cut -d ":" -f 1)
|
||||||
|
if [ -z ${readLine} ] ; then
|
||||||
|
echo "* La carpeta '${folder}' ha sido borrada pero no se ha encontrado en 'smb.conf'"
|
||||||
|
echo ""
|
||||||
|
echo -n "* Pulsa INTRO para continuar... " ; read continue
|
||||||
|
else
|
||||||
|
initLine=$(expr ${readLine} - 1)
|
||||||
|
endLine=$(expr ${readLine} + 7)
|
||||||
|
totalLines=$(cat /etc/samba/smb.conf | wc -l)
|
||||||
|
count=1
|
||||||
|
mkdir -p /tmp/easy-samba/
|
||||||
|
echo > /tmp/easy-samba/smb.conf
|
||||||
|
while [ ${count} -lt $initLine ] ; do
|
||||||
|
cat /etc/samba/smb.conf | head -${count} | tail -1 >> /tmp/easy-samba/smb.conf
|
||||||
|
count=$(expr ${count} + 1)
|
||||||
|
done
|
||||||
|
count=$(expr ${endLine} + 1)
|
||||||
|
while [ ${count} -le ${totalLines} ] ; do
|
||||||
|
cat ${sambaConfig} | head -${count} | tail -1 >> /tmp/easy-samba/smb.conf
|
||||||
|
count=$(expr ${count} + 1)
|
||||||
|
done
|
||||||
|
cp -rf /tmp/easy-samba/smb.conf ${sambaConfig}
|
||||||
|
echo "* La carpeta '${folder} ha sido borrada con exito!"
|
||||||
|
deleteFolderLink ${folder}
|
||||||
|
restartSamba
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "* Error: No se ha podido borrar la carpeta '${folder}'"
|
||||||
|
echo ""
|
||||||
|
echo -n "* Pulsa INTRO para continuar... " ; read continue
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "* Error: La carpeta '${folder}' no existe!"
|
||||||
|
echo -n "* Deseas ver un listado con las carpetas disponibles? (s[*]/n): " ; read available
|
||||||
|
if [ "${available}" == "n" ] ; then
|
||||||
|
echo "nule" > /dev/null
|
||||||
|
else
|
||||||
|
viewFolders
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Mostrar menu con todas las opciones
|
||||||
|
mostrarMenu=0
|
||||||
|
rootMessage
|
||||||
|
backupSmbConf
|
||||||
|
while [ ${mostrarMenu} -eq 0 ] ; do
|
||||||
|
clear
|
||||||
|
echo ""
|
||||||
|
echo "* easy-samba ${VERSION} (${M_DATE})"
|
||||||
|
echo ""
|
||||||
|
echo " 1 - Crear carpeta compartida"
|
||||||
|
echo " 2 - Crear carpeta compartida (solo lectura)"
|
||||||
|
echo " 3 - Crear carpeta compartida (para un usuario)"
|
||||||
|
echo " 4 - Crear carpeta compartida (printable)"
|
||||||
|
echo " 5 - Reiniciar servicios de Samba"
|
||||||
|
echo " 6 - Ver carpetas compartidas disponibles"
|
||||||
|
echo " 7 - Borrar carpeta compartida"
|
||||||
|
echo " 8 - Restaurar smb.conf"
|
||||||
|
echo ""
|
||||||
|
echo " 9 - Salir"
|
||||||
|
echo ""
|
||||||
|
echo -n " * Elige una opcion: " ; read opcion
|
||||||
|
if [ "${opcion}" == "1" ] ; then
|
||||||
|
newFolderEveryone
|
||||||
|
restartSamba
|
||||||
|
elif [ "${opcion}" == "2" ] ; then
|
||||||
|
newFolderReadOnly
|
||||||
|
restartSamba
|
||||||
|
elif [ "${opcion}" == "3" ] ; then
|
||||||
|
newFolderForUser
|
||||||
|
restartSamba
|
||||||
|
elif [ "${opcion}" == "4" ] ; then
|
||||||
|
newFolderPrintable
|
||||||
|
restartSamba
|
||||||
|
elif [ "${opcion}" == "5" ] ; then
|
||||||
|
restartSamba
|
||||||
|
elif [ "${opcion}" == "6" ] ; then
|
||||||
|
viewFolders
|
||||||
|
elif [ "${opcion}" == "7" ] ; then
|
||||||
|
removeFolder
|
||||||
|
elif [ "${opcion}" == "8" ] ; then
|
||||||
|
restoreSmb
|
||||||
|
elif [ "${opcion}" == "9" ] ; then
|
||||||
|
mostrarMenu=1
|
||||||
|
elif [ -z "${opcion}" ] ; then
|
||||||
|
echo ""
|
||||||
|
echo "* Debes elegir alguna opcion"
|
||||||
|
echo ""
|
||||||
|
echo -n "* Pulsa INTRO para continuar... " ; read continue
|
||||||
|
else
|
||||||
|
echo ""
|
||||||
|
echo "* Opcion no valida!"
|
||||||
|
echo ""
|
||||||
|
echo -n "* Pulsa INTRO para continuar... " ; read continue
|
||||||
|
fi
|
||||||
|
done
|
431
src/easy-samba-gtk
Executable file
431
src/easy-samba-gtk
Executable file
|
@ -0,0 +1,431 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
##############################################################
|
||||||
|
# Crear carpetas compartidas en Linux (GTK) #
|
||||||
|
# U. Modificacion: 02-06-2018 #
|
||||||
|
# Autor: q3aql #
|
||||||
|
# Contacto: q3aql@openmailbox.org #
|
||||||
|
# Licencia: GPL v2.0 #
|
||||||
|
##############################################################
|
||||||
|
VERSION="1.4 (GTK)"
|
||||||
|
M_DATE="020618"
|
||||||
|
|
||||||
|
# Parametros globales
|
||||||
|
linuxSambaFolder="/opt/easy-samba"
|
||||||
|
sambaConfig="/etc/samba/smb.conf"
|
||||||
|
sambaBackup="/etc/samba/smb.conf.orig"
|
||||||
|
homeUsers="/home"
|
||||||
|
homeUsersList="/tmp/easy-samba-users.list"
|
||||||
|
sambaFoldersList="/tmp/easy-samba-folders.list"
|
||||||
|
sambaSedFolder="/tmp/easy-samba/word/"
|
||||||
|
|
||||||
|
# Mostrar aviso de usuario de usuario root
|
||||||
|
#function rootMessage() {
|
||||||
|
# zenity --title "easy-samba ${VERSION} (${M_DATE})" --warning --text "Nota: Recuerda haber ejecutado como root!"
|
||||||
|
#}
|
||||||
|
|
||||||
|
# Funcion para realizar copia del fichero smb.conf original
|
||||||
|
function backupSmbConf() {
|
||||||
|
if [ -f ${sambaBackup} ] ; then
|
||||||
|
echo "OK" > /dev/null
|
||||||
|
else
|
||||||
|
echo "" >> ${sambaConfig}
|
||||||
|
echo "" >> ${sambaConfig}
|
||||||
|
cp -rf ${sambaConfig} ${sambaBackup} 2> /dev/null
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Funcion para eliminar espacios y simbolos
|
||||||
|
# Sintaxis: convertText "<text>"
|
||||||
|
function convertText() {
|
||||||
|
wordToConvert=${1}
|
||||||
|
sambaSedFile="${sambaSedFolder}/easy-samba-${RANDOM}.txt"
|
||||||
|
mkdir -p ${sambaSedFolder} && chmod 777 -R ${sambaSedFolder} 2> /dev/null
|
||||||
|
echo "${wordToConvert}" > ${sambaSedFile}
|
||||||
|
# Borrar espacios
|
||||||
|
sed -i 's/ /_/g' "${sambaSedFile}" &> /dev/null
|
||||||
|
# Borrar simbolos
|
||||||
|
symbolsList="[ ] @ { } | \ / ~ # $ % & ? ¿ = ( ) < > ! ¡"
|
||||||
|
for findSymbol in ${symbolsList} ; do
|
||||||
|
sed -i "s/${findSymbol}//g" "${sambaSedFile}" &> /dev/null
|
||||||
|
done
|
||||||
|
# Borrar el resto de simbolos
|
||||||
|
sed -i 's/*//g' "${sambaSedFile}" &> /dev/null
|
||||||
|
sed -i 's/"//g' "${sambaSedFile}" &> /dev/null
|
||||||
|
sed -i "s/^//g" "${sambaSedFile}" &> /dev/null
|
||||||
|
# Cambiar algunos simbolos
|
||||||
|
sed -i 's/+/_/g' "${sambaSedFile}" &> /dev/null
|
||||||
|
sed -i 's/:/-/g' "${sambaSedFile}" &> /dev/null
|
||||||
|
sed -i 's/;/-/g' "${sambaSedFile}" &> /dev/null
|
||||||
|
# Mostrar texto convertido
|
||||||
|
wordToConvert=$(cat ${sambaSedFile})
|
||||||
|
echo ${wordToConvert}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Funcion para crear enlace en el escritorio/home de los usuarios
|
||||||
|
# Sintaxis: createFolderLink [carpeta]
|
||||||
|
|
||||||
|
function createFolderLink() {
|
||||||
|
zenity --question --title "easy-samba ${VERSION} (${M_DATE})" --cancel-label="No" --ok-label="Si" --text "Deseas crear un enlace en el escritorio/home para los usuarios locales?"
|
||||||
|
createLink=$?
|
||||||
|
if [ ${createLink} -eq 1 ] ; then
|
||||||
|
echo "nule" > /dev/null
|
||||||
|
else
|
||||||
|
if [ "$(ls -A ${homeUsers})" ] ; then
|
||||||
|
cd ${homeUsers}
|
||||||
|
ls > ${homeUsersList}
|
||||||
|
for userDetected in $(cat ${homeUsersList}) ; do
|
||||||
|
if [ -d ${homeUsers}/${userDetected}/Desktop ] ; then
|
||||||
|
ln -s ${linuxSambaFolder}/${1} ${homeUsers}/${userDetected}/Desktop/ 2> /dev/null
|
||||||
|
ln -s ${linuxSambaFolder}/${1} ${homeUsers}/${userDetected}/ 2> /dev/null
|
||||||
|
output=$?
|
||||||
|
elif [ -d ${homeUsers}/${userDetected}/Escritorio ] ; then
|
||||||
|
ln -s ${linuxSambaFolder}/${1} ${homeUsers}/${userDetected}/Escritorio/ 2> /dev/null
|
||||||
|
ln -s ${linuxSambaFolder}/${1} ${homeUsers}/${userDetected}/ 2> /dev/null
|
||||||
|
output=$?
|
||||||
|
elif [ -d ${homeUsers}/${userDetected}/Escriptori ] ; then
|
||||||
|
ln -s ${linuxSambaFolder}/${1} ${homeUsers}/${userDetected}/Escriptori/ 2> /dev/null
|
||||||
|
ln -s ${linuxSambaFolder}/${1} ${homeUsers}/${userDetected}/ 2> /dev/null
|
||||||
|
output=$?
|
||||||
|
else
|
||||||
|
ln -s ${linuxSambaFolder}/${1} ${homeUsers}/${userDetected}/ 2> /dev/null
|
||||||
|
output=$?
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if [ ${output} -eq 0 ] ; then
|
||||||
|
zenity --title "easy-samba ${VERSION} (${M_DATE})" --info --text "Enlaces creados correctamente!"
|
||||||
|
else
|
||||||
|
zenity --title "easy-samba ${VERSION} (${M_DATE})" --error --text "Error: Fallo al crear los enlaces!"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
zenity --title "easy-samba ${VERSION} (${M_DATE})" --warning --text "Usuarios no encontrados en ${homeUsers}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Funcion para borrar los enlaces en el escritorio/home de los usuarios
|
||||||
|
# Sintaxis: deleteFolderLink [carpeta]
|
||||||
|
function deleteFolderLink() {
|
||||||
|
zenity --question --title "easy-samba ${VERSION} (${M_DATE})" --cancel-label="No" --ok-label="Si" --text "Deseas borrar los enlaces en el escritorio/home de los usuarios locales?"
|
||||||
|
deleteLink=$?
|
||||||
|
if [ ${deleteLink} -eq 1 ] ; then
|
||||||
|
echo "nule" > /dev/null
|
||||||
|
else
|
||||||
|
if [ "$(ls -A ${homeUsers})" ] ; then
|
||||||
|
cd ${homeUsers}
|
||||||
|
ls > ${homeUsersList}
|
||||||
|
for userDetected in $(cat ${homeUsersList}) ; do
|
||||||
|
if [ -d ${homeUsers}/${userDetected}/Desktop ] ; then
|
||||||
|
rm -f ${homeUsers}/${userDetected}/Desktop/${1} 2> /dev/null
|
||||||
|
rm -f ${homeUsers}/${userDetected}/${1} 2> /dev/null
|
||||||
|
output=$?
|
||||||
|
elif [ -d ${homeUsers}/${userDetected}/Escritorio ] ; then
|
||||||
|
rm -f ${homeUsers}/${userDetected}/Escritorio/${1} 2> /dev/null
|
||||||
|
rm -f ${homeUsers}/${userDetected}/${1} 2> /dev/null
|
||||||
|
output=$?
|
||||||
|
elif [ -d ${homeUsers}/${userDetected}/Escriptori ] ; then
|
||||||
|
rm -f ${homeUsers}/${userDetected}/Escriptori/${1} 2> /dev/null
|
||||||
|
rm -f ${homeUsers}/${userDetected}/${1} 2> /dev/null
|
||||||
|
output=$?
|
||||||
|
else
|
||||||
|
rm -f ${homeUsers}/${userDetected}/${1} 2> /dev/null
|
||||||
|
output=$?
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if [ ${output} -eq 0 ] ; then
|
||||||
|
zenity --title "easy-samba ${VERSION} (${M_DATE})" --info --text "Enlaces borrados correctamente!"
|
||||||
|
else
|
||||||
|
zenity --title "easy-samba ${VERSION} (${M_DATE})" --error --text "Error: Fallo al borrar los enlaces!"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
zenity --title "easy-samba ${VERSION} (${M_DATE})" --warning --text "Usuarios no encontrados en ${homeUsers}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Funcion para crear carpeta compartida con acceso para todos
|
||||||
|
function newFolderEveryone() {
|
||||||
|
folder=$(zenity --entry --title "easy-samba ${VERSION} (${M_DATE})" --text "Introduce el nombre de la carpeta que deseas crear (sin acentos):")
|
||||||
|
formatText=$(convertText "${folder}")
|
||||||
|
folder=${formatText}
|
||||||
|
if [ -z ${folder} ] ; then
|
||||||
|
zenity --title "easy-samba ${VERSION} (${M_DATE})" --warning --text "Debes introducir un nombre de carpeta!"
|
||||||
|
elif [ -d ${linuxSambaFolder}/${folder} ] ; then
|
||||||
|
zenity --title "easy-samba ${VERSION} (${M_DATE})" --error --text "La carpeta '${folder}' ya está creada, elige otro nombre"
|
||||||
|
else
|
||||||
|
mkdir -p ${linuxSambaFolder}/${folder} 2> /dev/null
|
||||||
|
output=$?
|
||||||
|
if [ ${output} -ne 0 ] ; then
|
||||||
|
zenity --title "easy-samba ${VERSION} (${M_DATE})" --error --text "Error: Fallo al crear la carpeta compartida '${folder}'"
|
||||||
|
else
|
||||||
|
chmod 777 -R ${linuxSambaFolder}/${folder}
|
||||||
|
echo "[${folder}]" >> ${sambaConfig}
|
||||||
|
echo "# Folder to ${linuxSambaFolder}/${folder} # 00bc00" >> ${sambaConfig}
|
||||||
|
echo "path = ${linuxSambaFolder}/${folder}" >> ${sambaConfig}
|
||||||
|
echo "comment = Folder by easy-samba ${VERSION} (${M_DATE})" >> ${sambaConfig}
|
||||||
|
echo "browseable = yes" >> ${sambaConfig}
|
||||||
|
echo "writeable = yes" >> ${sambaConfig}
|
||||||
|
echo "read only = no" >> ${sambaConfig}
|
||||||
|
echo "guest ok = yes" >> ${sambaConfig}
|
||||||
|
echo "" >> ${sambaConfig}
|
||||||
|
zenity --title "easy-samba ${VERSION} (${M_DATE})" --info --text "Carpeta compartida '${folder}' creada con exito!"
|
||||||
|
createFolderLink ${folder}
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Funcion para crear carpeta compartida de solo lectura
|
||||||
|
function newFolderReadOnly() {
|
||||||
|
folder=$(zenity --entry --title "easy-samba ${VERSION} (${M_DATE})" --text "Introduce el nombre de la carpeta que deseas crear (sin acentos):")
|
||||||
|
formatText=$(convertText "${folder}")
|
||||||
|
folder=${formatText}
|
||||||
|
if [ -z ${folder} ] ; then
|
||||||
|
zenity --title "easy-samba ${VERSION} (${M_DATE})" --warning --text "Debes introducir un nombre de carpeta!"
|
||||||
|
elif [ -d ${linuxSambaFolder}/${folder} ] ; then
|
||||||
|
zenity --title "easy-samba ${VERSION} (${M_DATE})" --error --text "La carpeta '${folder}' ya está creada, elige otro nombre"
|
||||||
|
else
|
||||||
|
mkdir -p ${linuxSambaFolder}/${folder} 2> /dev/null
|
||||||
|
output=$?
|
||||||
|
if [ ${output} -ne 0 ] ; then
|
||||||
|
zenity --title "easy-samba ${VERSION} (${M_DATE})" --error --text "Error: Fallo al crear la carpeta compartida '${folder}'"
|
||||||
|
else
|
||||||
|
chmod 777 -R ${linuxSambaFolder}/${folder}
|
||||||
|
echo "[${folder}]" >> ${sambaConfig}
|
||||||
|
echo "# Folder to ${linuxSambaFolder}/${folder} # 00bc00" >> ${sambaConfig}
|
||||||
|
echo "path = ${linuxSambaFolder}/${folder}" >> ${sambaConfig}
|
||||||
|
echo "comment = Folder by easy-samba ${VERSION} (${M_DATE})" >> ${sambaConfig}
|
||||||
|
echo "browseable = yes" >> ${sambaConfig}
|
||||||
|
echo "writeable = no" >> ${sambaConfig}
|
||||||
|
echo "read only = yes" >> ${sambaConfig}
|
||||||
|
echo "guest ok = yes" >> ${sambaConfig}
|
||||||
|
echo "" >> ${sambaConfig}
|
||||||
|
zenity --title "easy-samba ${VERSION} (${M_DATE})" --info --text "Carpeta compartida '${folder}' (solo lectura) creada con exito!"
|
||||||
|
createFolderLink ${folder}
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Crear carpeta compartida para un usuario
|
||||||
|
function newFolderForUser() {
|
||||||
|
folder=$(zenity --entry --title "easy-samba ${VERSION} (${M_DATE})" --text "Introduce el nombre de la carpeta que deseas crear (sin acentos):")
|
||||||
|
formatText=$(convertText "${folder}")
|
||||||
|
folder=${formatText}
|
||||||
|
if [ -z ${folder} ] ; then
|
||||||
|
zenity --title "easy-samba ${VERSION} (${M_DATE})" --warning --text "Debes introducir un nombre de carpeta!"
|
||||||
|
elif [ -d ${linuxSambaFolder}/${folder} ] ; then
|
||||||
|
zenity --title "easy-samba ${VERSION} (${M_DATE})" --error --text "La carpeta '${folder}' ya está creada, elige otro nombre"
|
||||||
|
else
|
||||||
|
mkdir -p ${linuxSambaFolder}/${folder} 2> /dev/null
|
||||||
|
output=$?
|
||||||
|
if [ ${output} -ne 0 ] ; then
|
||||||
|
zenity --title "easy-samba ${VERSION} (${M_DATE})" --error --text "Error: Fallo al crear la carpeta compartida '${folder}'"
|
||||||
|
else
|
||||||
|
forUser=$(zenity --entry --title "easy-samba ${VERSION} (${M_DATE})" --text "Introduce el nombre del usuario:")
|
||||||
|
randomFolder=/tmp/easy-samba/${RANDOM}-${RANDOM}
|
||||||
|
mkdir -p ${randomFolder}
|
||||||
|
chown ${forUser} ${randomFolder} 2> /dev/null
|
||||||
|
output=$?
|
||||||
|
if [ ${output} -ne 0 ] ; then
|
||||||
|
rm -rf ${linuxSambaFolder}/${folder}
|
||||||
|
zenity --title "easy-samba ${VERSION} (${M_DATE})" --error --text "Error: No existe el usuario especificado!"
|
||||||
|
else
|
||||||
|
chmod 755 -R ${linuxSambaFolder}/${folder}
|
||||||
|
echo "[${folder}]" >> ${sambaConfig}
|
||||||
|
echo "# Folder to ${linuxSambaFolder}/${folder} # 00bc00" >> ${sambaConfig}
|
||||||
|
echo "path = ${linuxSambaFolder}/${folder}" >> ${sambaConfig}
|
||||||
|
echo "comment = Folder by easy-samba ${VERSION} (${M_DATE})" >> ${sambaConfig}
|
||||||
|
echo "browseable = yes" >> ${sambaConfig}
|
||||||
|
echo "writeable = yes" >> ${sambaConfig}
|
||||||
|
echo "read only = no" >> ${sambaConfig}
|
||||||
|
echo "guest ok = yes" >> ${sambaConfig}
|
||||||
|
echo "" >> ${sambaConfig}
|
||||||
|
zenity --title "easy-samba ${VERSION} (${M_DATE})" --info --text "Carpeta compartida '${folder}' (para ${forUser}) creada con exito!"
|
||||||
|
createFolderLink ${folder}
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Crear carpeta compartida para imprimir
|
||||||
|
function newFolderPrintable() {
|
||||||
|
folder=$(zenity --entry --title "easy-samba ${VERSION} (${M_DATE})" --text "Introduce el nombre de la carpeta que deseas crear (sin acentos):")
|
||||||
|
formatText=$(convertText "${folder}")
|
||||||
|
folder=${formatText}
|
||||||
|
if [ -z ${folder} ] ; then
|
||||||
|
zenity --title "easy-samba ${VERSION} (${M_DATE})" --warning --text "Debes introducir un nombre de carpeta!"
|
||||||
|
elif [ -d ${linuxSambaFolder}/${folder} ] ; then
|
||||||
|
zenity --title "easy-samba ${VERSION} (${M_DATE})" --error --text "La carpeta '${folder}' ya está creada, elige otro nombre"
|
||||||
|
else
|
||||||
|
mkdir -p ${linuxSambaFolder}/${folder} 2> /dev/null
|
||||||
|
output=$?
|
||||||
|
if [ ${output} -ne 0 ] ; then
|
||||||
|
zenity --title "easy-samba ${VERSION} (${M_DATE})" --error --text "Error: Fallo al crear la carpeta compartida '${folder}'"
|
||||||
|
else
|
||||||
|
chmod 777 -R ${linuxSambaFolder}/${folder}
|
||||||
|
echo "[${folder}]" >> ${sambaConfig}
|
||||||
|
echo "# Folder to ${linuxSambaFolder}/${folder} # 00bc00" >> ${sambaConfig}
|
||||||
|
echo "path = ${linuxSambaFolder}/${folder}" >> ${sambaConfig}
|
||||||
|
echo "comment = Folder by easy-samba ${VERSION} (${M_DATE})" >> ${sambaConfig}
|
||||||
|
echo "browseable = yes" >> ${sambaConfig}
|
||||||
|
echo "writeable = yes" >> ${sambaConfig}
|
||||||
|
echo "printable = yes" >> ${sambaConfig}
|
||||||
|
echo "guest ok = yes" >> ${sambaConfig}
|
||||||
|
echo "" >> ${sambaConfig}
|
||||||
|
zenity --title "easy-samba ${VERSION} (${M_DATE})" --info --text "Carpeta compartida '${folder}' (printable) creada con exito!"
|
||||||
|
createFolderLink ${folder}
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Funcion para reiniciar el servicio de Samba
|
||||||
|
function restartSamba() {
|
||||||
|
zenity --question --title "easy-samba ${VERSION} (${M_DATE})" --cancel-label="No" --ok-label="Si" --text "Deseas reiniciar los servicios de Samba?"
|
||||||
|
sambaSN=$?
|
||||||
|
if [ "${sambaSN}" == "1" ] ; then
|
||||||
|
echo "nule" > /dev/null
|
||||||
|
else
|
||||||
|
sleep 4 | zenity --progress --title "easy-samba ${VERSION} (${M_DATE})" --auto-close --text "Reiniciando servicios de Samba"
|
||||||
|
/etc/init.d/samba restart &> /dev/null
|
||||||
|
systemctl restart smbd.service 2> /dev/null
|
||||||
|
systemctl restart nmbd.service 2> /dev/null
|
||||||
|
systemctl restart smb.service 2> /dev/null
|
||||||
|
zenity --title "easy-samba ${VERSION} (${M_DATE})" --info --text "Servicios de Samba reiniciados"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Funcion para borrar todas las carpetas compartidas
|
||||||
|
function restoreSmb() {
|
||||||
|
echo ""
|
||||||
|
zenity --question --title "easy-samba ${VERSION} (${M_DATE})" --cancel-label="No" --ok-label="Si" \
|
||||||
|
--text "Nota: Se van a eliminar todas las carpetas compartidas y su contenido\n\nImportante: Se volvera al estado inicial del fichero 'smb.conf' antes de\nde ejecutar 'easy-samba' por primera vez\n\nDeseas continuar?"
|
||||||
|
deleteFolder=$?
|
||||||
|
if [ ${deleteFolder} -eq 0 ] ; then
|
||||||
|
sleep 3 | zenity --progress --title "easy-samba ${VERSION} (${M_DATE})" --auto-close --text "Borrando carpetas"
|
||||||
|
rm -rf ${linuxSambaFolder}/* | zenity --progress --title "easy-samba ${VERSION} (${M_DATE})" --auto-close --text "Finalizando proceso de borrado"
|
||||||
|
output=$?
|
||||||
|
if [ ${output} -eq 0 ] ; then
|
||||||
|
cp -rf ${sambaBackup} ${sambaConfig} 2> /dev/null
|
||||||
|
#rm -rf ${sambaBackup} 2> /dev/null
|
||||||
|
zenity --title "easy-samba ${VERSION} (${M_DATE})" --info --text "Carpetas borradas con exito!"
|
||||||
|
restartSamba
|
||||||
|
else
|
||||||
|
zenity --title "easy-samba ${VERSION} (${M_DATE})" --error --text "Error al borrar las carpetas compartidas"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
zenity --title "easy-samba ${VERSION} (${M_DATE})" --warning --text "Se ha anulado el proceso de restauracion"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Funcion para mostrar carpetas compartidas
|
||||||
|
function viewFolders() {
|
||||||
|
if [ "$(ls -A ${linuxSambaFolder})" ] ; then
|
||||||
|
cd ${linuxSambaFolder}
|
||||||
|
ls > ${sambaFoldersList}
|
||||||
|
folderList=""
|
||||||
|
for folderDetected in $(cat ${sambaFoldersList}) ; do
|
||||||
|
folderList="${folderList} ${folderDetected}"
|
||||||
|
done
|
||||||
|
folder=$(zenity --width=390 --height=300 --list --title "easy-samba ${VERSION} ($M_DATE)" \
|
||||||
|
--column "Lista de carpetas compartidas disponibles:" ${folderList})
|
||||||
|
if [ -z ${folder} ] ; then
|
||||||
|
echo "nule" > /dev/null
|
||||||
|
elif [ -d ${linuxSambaFolder}/${folder} ] ; then
|
||||||
|
zenity --title "easy-samba ${VERSION} (${M_DATE})" --info --text "Nombre de carpeta: ${folder}\n\nRuta: ${linuxSambaFolder}/${folder}"
|
||||||
|
else
|
||||||
|
zenity --title "easy-samba ${VERSION} (${M_DATE})" --error --text "Error: La carpeta '${folder}' no existe!"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
zenity --title "easy-samba ${VERSION} (${M_DATE})" --info --text "Actualmente no hay carpetas compartidas!"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Funcion para borrar una carpeta compartida
|
||||||
|
function removeFolder() {
|
||||||
|
if [ "$(ls -A ${linuxSambaFolder})" ] ; then
|
||||||
|
cd ${linuxSambaFolder}
|
||||||
|
ls > ${sambaFoldersList}
|
||||||
|
folderList=""
|
||||||
|
for folderDetected in $(cat ${sambaFoldersList}) ; do
|
||||||
|
folderList="${folderList} ${folderDetected}"
|
||||||
|
done
|
||||||
|
folder=$(zenity --width=390 --height=300 --list --title "easy-samba ${VERSION} ($M_DATE)" \
|
||||||
|
--column "Selecciona una carpeta para borrar:" ${folderList})
|
||||||
|
if [ -z ${folder} ] ; then
|
||||||
|
zenity --title "easy-samba ${VERSION} (${M_DATE})" --warning --text "Debes seleccionar una carpeta de la lista"
|
||||||
|
elif [ -d ${linuxSambaFolder}/${folder} ] ; then
|
||||||
|
sleep 2 | zenity --progress --title "easy-samba ${VERSION} (${M_DATE})" --auto-close --text "Borrando carpeta..."
|
||||||
|
rm -rf ${linuxSambaFolder}/${folder} 2> /dev/null
|
||||||
|
output=$?
|
||||||
|
if [ ${output} -eq 0 ] ; then
|
||||||
|
readLine=$(cat ${sambaConfig} | grep "# Folder to ${linuxSambaFolder}/${folder} # 00bc00" -n | cut -d ":" -f 1)
|
||||||
|
if [ -z ${readLine} ] ; then
|
||||||
|
zenity --title "easy-samba ${VERSION} (${M_DATE})" --warning --text "La carpeta '${folder}' ha sido borrada pero no se ha encontrado en 'smb.conf'"
|
||||||
|
else
|
||||||
|
initLine=$(expr ${readLine} - 1)
|
||||||
|
endLine=$(expr ${readLine} + 7)
|
||||||
|
totalLines=$(cat /etc/samba/smb.conf | wc -l)
|
||||||
|
count=1
|
||||||
|
mkdir -p /tmp/easy-samba/
|
||||||
|
echo > /tmp/easy-samba/smb.conf
|
||||||
|
while [ ${count} -lt $initLine ] ; do
|
||||||
|
cat /etc/samba/smb.conf | head -${count} | tail -1 >> /tmp/easy-samba/smb.conf
|
||||||
|
count=$(expr ${count} + 1)
|
||||||
|
done
|
||||||
|
count=$(expr ${endLine} + 1)
|
||||||
|
while [ ${count} -le ${totalLines} ] ; do
|
||||||
|
cat ${sambaConfig} | head -${count} | tail -1 >> /tmp/easy-samba/smb.conf
|
||||||
|
count=$(expr ${count} + 1)
|
||||||
|
done
|
||||||
|
cp -rf /tmp/easy-samba/smb.conf ${sambaConfig}
|
||||||
|
zenity --title "easy-samba ${VERSION} (${M_DATE})" --info --text "La carpeta '${folder} ha sido borrada con exito!"
|
||||||
|
deleteFolderLink ${folder}
|
||||||
|
restartSamba
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
zenity --title "easy-samba ${VERSION} (${M_DATE})" --error --text "Error: No se ha podido borrar la carpeta '${folder}'"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
zenity --title "easy-samba ${VERSION} (${M_DATE})" --error --text "Error: La carpeta '${folder}' no existe!"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
zenity --title "easy-samba ${VERSION} (${M_DATE})" --info --text "No hay carpetas disponibles para borrar!"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Mostrar menu con todas las opciones
|
||||||
|
mostrarMenu=0
|
||||||
|
#rootMessage
|
||||||
|
backupSmbConf
|
||||||
|
while [ ${mostrarMenu} -eq 0 ] ; do
|
||||||
|
clear
|
||||||
|
opcion=$(zenity --width=390 --height=355 --list --title "easy-samba ${VERSION} ($M_DATE)" \
|
||||||
|
--column "Selecciona una opcion:" "Crear carpeta compartida" "Crear carpeta compartida (solo lectura)" \
|
||||||
|
"Crear carpeta compartida (para un usuario)" "Crear carpeta compartida (printable)" \
|
||||||
|
"Reiniciar servicios de Samba" "Ver carpetas compartidas disponibles" "Borrar carpeta compartida" \
|
||||||
|
"Restaurar smb.conf" "Salir")
|
||||||
|
if [ "${opcion}" == "Crear carpeta compartida" ] ; then
|
||||||
|
newFolderEveryone
|
||||||
|
restartSamba
|
||||||
|
elif [ "${opcion}" == "Crear carpeta compartida (solo lectura)" ] ; then
|
||||||
|
newFolderReadOnly
|
||||||
|
restartSamba
|
||||||
|
elif [ "${opcion}" == "Crear carpeta compartida (para un usuario)" ] ; then
|
||||||
|
newFolderForUser
|
||||||
|
restartSamba
|
||||||
|
elif [ "${opcion}" == "Crear carpeta compartida (printable)" ] ; then
|
||||||
|
newFolderPrintable
|
||||||
|
restartSamba
|
||||||
|
elif [ "${opcion}" == "Reiniciar servicios de Samba" ] ; then
|
||||||
|
restartSamba
|
||||||
|
elif [ "${opcion}" == "Ver carpetas compartidas disponibles" ] ; then
|
||||||
|
viewFolders
|
||||||
|
elif [ "${opcion}" == "Borrar carpeta compartida" ] ; then
|
||||||
|
removeFolder
|
||||||
|
elif [ "${opcion}" == "Restaurar smb.conf" ] ; then
|
||||||
|
restoreSmb
|
||||||
|
elif [ "${opcion}" == "Salir" ] ; then
|
||||||
|
mostrarMenu=1
|
||||||
|
else
|
||||||
|
zenity --title "easy-samba ${VERSION} (${M_DATE})" --warning --text "Elige una de las opciones del menu"
|
||||||
|
fi
|
||||||
|
done
|
63
src/easy-samba-gtk-admin
Executable file
63
src/easy-samba-gtk-admin
Executable file
|
@ -0,0 +1,63 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
##############################################################
|
||||||
|
# Crear carpetas compartidas en Linux (GTK) #
|
||||||
|
# U. Modificacion: 02-06-2018 #
|
||||||
|
# Autor: q3aql #
|
||||||
|
# Contacto: q3aql@openmailbox.org #
|
||||||
|
# Licencia: GPL v2.0 #
|
||||||
|
##############################################################
|
||||||
|
VERSION="1.4 (GTK)"
|
||||||
|
M_DATE="020618"
|
||||||
|
|
||||||
|
# Enlace con gksudo,gksu o bessu a easy-samba-gtk
|
||||||
|
function showRootMessage() {
|
||||||
|
if [ -f /usr/bin/gksudo ] ; then
|
||||||
|
gksudo /usr/bin/easy-samba-gtk
|
||||||
|
exit
|
||||||
|
elif [ -f /bin/gksudo ] ; then
|
||||||
|
gksudo /usr/bin/easy-samba-gtk
|
||||||
|
exit
|
||||||
|
elif [ -f /usr/bin/gksu ] ; then
|
||||||
|
gksu /usr/bin/easy-samba-gtk
|
||||||
|
exit
|
||||||
|
elif [ -f /bin/gksu ] ; then
|
||||||
|
gksu /usr/bin/easy-samba-gtk
|
||||||
|
exit
|
||||||
|
elif [ -f /usr/bin/beesu ] ; then
|
||||||
|
beesu /usr/bin/easy-samba-gtk
|
||||||
|
exit
|
||||||
|
elif [ -f /bin/beesu ] ; then
|
||||||
|
beesu /usr/bin/easy-samba-gtk
|
||||||
|
exit
|
||||||
|
else
|
||||||
|
zenity2 -h &> /dev/null
|
||||||
|
output=$?
|
||||||
|
if [ ${output} -eq 0 ] ; then
|
||||||
|
zenity --title "easy-samba ${VERSION} (${M_DATE})" --info \
|
||||||
|
--text "El programa 'easy-samba-gtk' no ha podido ser ejecutado como administrador\n\nPorfavor, ejecuta el comando 'easy-samba-gtk' como usuario root en la terminal"
|
||||||
|
else
|
||||||
|
xterm -T "easy-samba ${VERSION} (${M_DATE})" -e "easy-samba-gtk-admin --error"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Funcion para mostrar mensaje de error
|
||||||
|
function errorMessage() {
|
||||||
|
echo ""
|
||||||
|
echo "* ATENCION!:"
|
||||||
|
echo ""
|
||||||
|
echo "* El programa 'easy-samba-gtk' no ha podido ser ejecutado como administrador"
|
||||||
|
echo ""
|
||||||
|
echo "* Porfavor, ejecuta el comando 'easy-samba-gtk' como usuario root en la terminal"
|
||||||
|
echo ""
|
||||||
|
echo -n "* Pulsa INTRO para salir... " ; read continue
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
# Inicio del script
|
||||||
|
if [ "${1}" == "--error" ] ; then
|
||||||
|
errorMessage
|
||||||
|
else
|
||||||
|
showRootMessage
|
||||||
|
fi
|
Loading…
Reference in New Issue
Block a user