Script administración
Ejecutar un scriptmysql -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:
while read linea do
[lo que hace] done < $1
5.- Partiendo de un fichero de texto donde 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,
creando en mysql un usuario con los datos existentes en el
fichero, y con la clave indicada. Seguidamente, darle todos los
permisos en la base de datos sakila.
Creamos el fichero donde se realiza la accion del script nano crearUsuarioSakila.sh
while read linea do
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; done < $1
Creamos el fichero de donde 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 creado nos logueamos en la consola de mysql:
mysql -u root -h localhost -p root Y nos muestra los usuarios creados.
4.- Crear en la base de datos empresa una tabla pedidos con los datos siguientes: idPedido,idCliente,fecha,hora,descripcion. Hacer que
todos los dias a las 08:00 se cree un fichero de texto con todos los pedidos dados de alta el día anterior. Debe aparecer la siguiente información: Apellidos y nombre del cliente, descripcion. Debe ir ordenado por apellidos 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 enunciado y le metemos datos.
create table pedidos (idPedido interger primary key auto_increment, idCliente integer,
fecha date, hora time,
descripcion varchar(255),
foreign key idCliente references cliente(idCliente));
insert into pedidos values (null, 1,'2015-02-18','14:00', 'pedido numero 1'); insert into pedidos values (null, 1,now(),'9:00', 'pedido numero 2');
insert into pedidos values (null, 1,now(),'8:00', 'pedido numero 1');
Comprobamos que los datos se han introducidos correctamente.
select * from pedidos where fecha=DATE_FORMAT(NOW(), '%Y-%m-%d'); Ahora creamos el script:
#!/bin/bash
mysql -uroot -hlocalhost -proot -Bse”select * from empresa.pedidos where fecha=DATE_FORMAT(NOW(), '%Y-%m-%d')” > datosPedidos`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
7.- Se desea crear un script que permita instalar gestores de contenidos 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 donde 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 extrayendo 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 indicado como 2º parámetro, ubicada dentro de /var/www/html
2. Descomprimir el contenido 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 todos los permisos al usuario creado sobre la base de datos creada para él.
6. Al final deberá ponerse como propietario de la carpeta creada y todo su interior al usuario y grupo www-data.
Tras ejecutarse el script cada usuario debe poder conectarse al servidor 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 while read linea do
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...”
done < $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]