#!/bin/bash
#TODOS LOS SCRIPTS EN http://oposinf.blogspot.com/search/label/shellscript
#5. Implementar un shell-script bajo Linux que realice lo siguiente: El script tendrá el siguiente formato ej5.sh [opciones] [argumentos] Al ejecutar el shell-script, eśte deberá mostrar un saludo (Buenos días) con el nombre del usuario que lo ejecuta.
#Las opciones que puede recibir el shell son las siguientes:
#Sin opciones ni argumentos, deberá mostrar el contenido del propio shell-script.
#-m Comprobará que los argumentos (tras -m) son ficheros, en cuyo caso muestra su contenido por pantalla.
#-x Deberá comprobar que los argumentos (tras -x) son programas ejecutables, en cuyo caso los ejecutará.
#-b Con esta opción se borrarán todos los ficheros y directorios que se le pasen como parámetro. Antes de ser eliminados, creará una copia de seguridad de los mismos en el directorios $HOME/backup.
#-help Mostrará el contenido de un fichero de texto, de nombre ayuda.hlp, en el que se explicará el funcionamiento del shell-script.
#Se valorará es uso de funciones y llamadas a shell-scripts externos, si procede.
function error {
echo "¡¡Horror!! Uso "$0" -[|m|x|b|help] [argumentos] "
exit
}
echo $#
if [[ $# -eq 0 ]]
then
echo "Contenido del archivo."
cat enero05
elif [[ $# -gt 0 ]]
then
#Decir buenos días, nombre del usuario
nombreusuario=`id -un`
echo "Buenos días, $nombreusuario"
#si el primer parámetro es -m
if [[ $1 == "-m" ]]
then
echo "Entrando en -m"
#la siguiente línea muestra todos los parámetros en una línea, pero no me gusta mucho, voy a probar otra opción
#echo $*
#esta manera es muy limpia
#primero se quita de en medio el primer parámetro, que es la -m
shift
#y luego va sacando cada parámetro hasta que la lista de parámetros esta vacía
#ni hay que contar parámetros ni nada
while [[ $1 != "" ]]
do
archivo=$1
if [ -f $archivo ]
then
echo "LISTANDO ARCHIVO $archivo..."
cat $archivo
else
echo "El archivo $archivo no existe"
fi
#pasa al siguiente parámetro, esto es, borra el primero y pasa todos los demas hacia adelante, así que el 2º pasa a ser el 1º
shift
done
elif [[ $1 == "-x" ]]
then
echo "Entrando en -x"
shift
while [[ $1 != "" ]]
do
archivo=$1
if [ -f $archivo ]
then
echo "EJECUTANDO $archivo..."
$archivo
else
echo "El archivo $archivo no es ejecutable."
fi
shift
done
elif [[ $1 == "-b" ]]
then
echo "Entrando en -b"
shift
#comprobar si existe carpeta de backup y, si no, crearla
nombreusuario=`id -un`
echo $nombreusuario
carpeta=`cat /etc/passwd | grep $nombreusuario | cut -d: -f6`
echo $carpeta
if [ -d $carpeta/backup1 ]
then
echo "La carpeta backup existe"
else
echo "Creando carpeta backup en carpeta de usuario"
mkdir $carpeta/backup1
fi
while [[ $1 != "" ]]
do
archivo=$1
if [ -f $archivo ]
then
echo "BORRANDO $archivo..."
cp $archivo $carpeta/backup1
#esto lo comento para evitar que borre archivos
#rm $archivo
else
echo "El archivo $archivo no existe."
fi
shift
done
elif [[ $1 == "-help" ]]
then
cat ayuda.hlp
else
error
fi
else
error
fi
#TODOS LOS SCRIPTS EN http://oposinf.blogspot.com/search/label/shellscript
#5. Implementar un shell-script bajo Linux que realice lo siguiente: El script tendrá el siguiente formato ej5.sh [opciones] [argumentos] Al ejecutar el shell-script, eśte deberá mostrar un saludo (Buenos días) con el nombre del usuario que lo ejecuta.
#Las opciones que puede recibir el shell son las siguientes:
#Sin opciones ni argumentos, deberá mostrar el contenido del propio shell-script.
#-m Comprobará que los argumentos (tras -m) son ficheros, en cuyo caso muestra su contenido por pantalla.
#-x Deberá comprobar que los argumentos (tras -x) son programas ejecutables, en cuyo caso los ejecutará.
#-b Con esta opción se borrarán todos los ficheros y directorios que se le pasen como parámetro. Antes de ser eliminados, creará una copia de seguridad de los mismos en el directorios $HOME/backup.
#-help Mostrará el contenido de un fichero de texto, de nombre ayuda.hlp, en el que se explicará el funcionamiento del shell-script.
#Se valorará es uso de funciones y llamadas a shell-scripts externos, si procede.
function error {
echo "¡¡Horror!! Uso "$0" -[|m|x|b|help] [argumentos] "
exit
}
echo $#
if [[ $# -eq 0 ]]
then
echo "Contenido del archivo."
cat enero05
elif [[ $# -gt 0 ]]
then
#Decir buenos días, nombre del usuario
nombreusuario=`id -un`
echo "Buenos días, $nombreusuario"
#si el primer parámetro es -m
if [[ $1 == "-m" ]]
then
echo "Entrando en -m"
#la siguiente línea muestra todos los parámetros en una línea, pero no me gusta mucho, voy a probar otra opción
#echo $*
#esta manera es muy limpia
#primero se quita de en medio el primer parámetro, que es la -m
shift
#y luego va sacando cada parámetro hasta que la lista de parámetros esta vacía
#ni hay que contar parámetros ni nada
while [[ $1 != "" ]]
do
archivo=$1
if [ -f $archivo ]
then
echo "LISTANDO ARCHIVO $archivo..."
cat $archivo
else
echo "El archivo $archivo no existe"
fi
#pasa al siguiente parámetro, esto es, borra el primero y pasa todos los demas hacia adelante, así que el 2º pasa a ser el 1º
shift
done
elif [[ $1 == "-x" ]]
then
echo "Entrando en -x"
shift
while [[ $1 != "" ]]
do
archivo=$1
if [ -f $archivo ]
then
echo "EJECUTANDO $archivo..."
$archivo
else
echo "El archivo $archivo no es ejecutable."
fi
shift
done
elif [[ $1 == "-b" ]]
then
echo "Entrando en -b"
shift
#comprobar si existe carpeta de backup y, si no, crearla
nombreusuario=`id -un`
echo $nombreusuario
carpeta=`cat /etc/passwd | grep $nombreusuario | cut -d: -f6`
echo $carpeta
if [ -d $carpeta/backup1 ]
then
echo "La carpeta backup existe"
else
echo "Creando carpeta backup en carpeta de usuario"
mkdir $carpeta/backup1
fi
while [[ $1 != "" ]]
do
archivo=$1
if [ -f $archivo ]
then
echo "BORRANDO $archivo..."
cp $archivo $carpeta/backup1
#esto lo comento para evitar que borre archivos
#rm $archivo
else
echo "El archivo $archivo no existe."
fi
shift
done
elif [[ $1 == "-help" ]]
then
cat ayuda.hlp
else
error
fi
else
error
fi
No hay comentarios:
Publicar un comentario