Script administración Ejecutar un script mysql -uroot -hlocalhost -proot < script.sql Para redireccionar la salida del script: mysql -uroot -hlocalhost -proot < script1.sql >ficherotexto.txt 1.-Configurar el so para que realice una copia de la base de datos sakila 1 vez cada día a las 00:00. terminal: mysqldump --user root -pasword=root sakila > /temp/sakila.sql cargar script desde consola mysql source /home/nombreusuario/archivo.sql configurar contrab en centos para que use nano en lugar de vi como root: editar /etc/bashrc añadir linea: export EDITOR= nano salir de la sesión del root. Al entrar ya funciona. CREA EL FICHERO: desde consola: crontab -e 00:00 * * * mysqldump --user root -pasword=root sakila > /temp/sakila.sql 3.- Hacer que la copia de sakila se haga sobre un fichero copiasakila_dd_mm_aaaa_hh_min.sq Consola: nano copiasakila.sql #!/bin/bash [date=`date awk '{print $6 _ $3 _ $2}'`] mysqldump --user root -pasword=root sakila > /temp/copiasakila`date +%Y%m%%d%H%M`.sql
EXPLICACIÓN DE WHILE EN SCRIPT Estructura: [lo que hace] ne < $1 5.- Partien de un fichero de texto nde en cada linea aparece un nombre de usuario y su clave, crear un script que al ejecutarlo recorra cada una de las líneas del fichero de texto, crean en mysql un usuario con los datos existentes en el fichero, y con la clave indicada. Seguidamente, darle tos los permisos en la base de datos sakila. Creamos el fichero nde se realiza la accion del script nano crearusuariosakila.sh echo $linea usuario= `echo $linea awk {print $1}` echo $usuario clave= ` echo $linea awk {print $2}` echo $clave mysql -uroot -hlocalhost -proot -Bse use sakila; create user $usuario identified by `$clave` ; grant all privileges on sakila.* to $usuario; ne < $1 Creamos el fichero de nde recogerá los parámetros: nano usuariosakila.txt pepe 1234 manolo 4567 lola 1238 Ahora se ejecuta: sh./crearusuariosakila.sh usuariosakila.txt Para comprobar que los usuarios se han crea nos logueamos en la consola de mysql: mysql -u root -h localhost -p root Y nos muestra los usuarios creas. select user from mysql.user;
4.- Crear en la base de datos empresa una tabla pedis con los datos siguientes: idpedi,idcliente,fecha,hora,descripcion. Hacer que tos los dias a las 08:00 se cree un fichero de texto con tos los pedis das de alta el día anterior. Debe aparecer la siguiente información: Apellis y nombre del cliente, descripcion. Debe ir ordena por apellis y nombre del cliente. Primero se crea el script y luego se mete en el cron. Antes creamos la tabla tal y como indica el enuncia y le metemos datos. create table pedis (idpedi interger primary key auto_increment, idcliente integer, fecha date, hora time, descripcion varchar(255), foreign key idcliente references cliente(idcliente)); insert into pedis values (null, 1,'2015-02-18','14:00', 'pedi numero 1'); insert into pedis values (null, 1,now(),'9:00', 'pedi numero 2'); insert into pedis values (null, 1,now(),'8:00', 'pedi numero 1'); Comprobamos que los datos se han introducis correctamente. select * from pedis where fecha=date_format(now(), '%Y-%m-%d'); Ahora creamos el script: #!/bin/bash mysql -uroot -hlocalhost -proot -Bse select * from empresa.pedis where fecha=date_format(now(), '%Y-%m-%d') > datospedis`date +%Y %m%d`.txt Guardamos y probamos que solo nos da un warning para decirnos que la clave está metida directamente en plano. Ahora lo que debemos hacer es meter el script en el cron: crontab -e 00 22 * * * sh /home/mysql/ejercicios/datospedis.sh
7.- Se desea crear un script que permita instalar gestores de contenis joomla para varios usuarios. Al script se le pasarán los siguientes parámetros: 1. Fichero de texto con los nombres de usuario y sus passwords. Un nombre de usuario y su password por línea. 2. Carpeta nde se crearán las webs de joomla, de forma relativa dentro de /var/www/html 3. Fichero de instalación de joomla (formato zip). 4. Nombre de usuario de mysql. 5. Clave de usuario de mysql. 6. Host de mysql. El script deberá ir extrayen uno a uno cada nombre de usuario del fichero. Para cada usuario deberá realizar las acciones siguientes: 1. Crear una carpeta que se corresponda con el nombre del usuario, dentro de la carpeta que se ha indica como 2º parámetro, ubicada dentro de /var/www/html 2. Descomprimir el conteni del fichero de instalación de joomla en la carpeta creada en el paso anterior. 3. Conectar a mysql con los parámetros 4, 5 y 6, y crear un usuario con el nombre de usuario y password que se indica en el fichero. 4. Crear una base de datos en mysql con igual nombre que el nombre de usuario. 5. Dar tos los permisos al usuario crea sobre la base de datos creada para él. 6. Al final deberá ponerse como propietario de la carpeta creada y to su interior al usuario y grupo www-data. Tras ejecutarse el script cada usuario debe poder conectarse al servir web, entrar en sus carpeta personal e instalar su joomla. En el proceso de instalación introducirá su nombre de usuario tanto en la base de datos como en el nombre de usuario de la misma, con su password correspondiente.
nano crear_webs_joomla.sh fichero_usuario=$1 ruta_instalacion=$2 fichero_joomla=$3 usuario_db=$4 password_db=$5 host_db=$6 echo $linea usuario=`echo $linea awk '{print $1}'` echo $usuario clave=`echo $linea awk '{print $2}'` echo $clave echo ---- mkdir -p $ruta_instalacion/$usuario unzip $fichero_joomla -d $ruta_instalacion/$usuario chmod -R www-data:www-data $ruta_instalacion/$usuario mysql -u $usuario_db -h $host_db -p$passord_db -Bse create user. mysql -u $usuario_db -h $host_db -p$passord_db -Bse create database $usuario mysql -u $usuario_db -h $host_db -p$passord_db -Bse grant all privileges... ne < $fichero_usuarios Para ejecutarlo escribiremos:./crear_webs_joomla.sh /home/sandra/escritorio/fichero.txt [-p carpeta_instalacion (el atributo menos -p hace que si no encuentra la carpeta, la cree)] [fichero_inslacion_joomla] [usuario_db] [contraseña_db] [host_db]