Introducir IP dinámica en Debian

Cuando no nos permita instalar los paquetes net-tools para poder ejecutar el comando ifconfig tendremos que usar el comando ip addr en cambio.


Como se puede ver no hay una IP asignada todavía. 
En el caso del Debian tienes que ir a la ruta /etc/network/ y con el comando nano abrir el archivo interfaces.


INTRODUCIR DISCO NUEVO LINUX

En esta práctica vamos a mostrar como introducir un nuevo disco en Linux.
Cuando en Windows introducimos un nuevo disco a nuestro sistema operativo, éste lo reconoce y permite que se pueda acceder a él con permisos de lectura y escritura. 

Ejemplo de ello, cuando introducimos un nuevo disco en Windows, tenemos que ir a la ventana de administración de discos para realizar todas las configuraciones para que el sistema lo reconozca. 

Si el sistema lo reconoce pues ya podemos acceder a él, guardar archivos en él y realizar todas las funciones que el administrador nos permita realizar.

En Linux se hace de otra manera. En Linux lo que tenemos que hacer es montar el disco para poder acceder a él y poder realizar todas las funciones necesarias para las que hemos creado el disco.

Pues en esta práctica vamos a aprender juntos a montar un nuevo disco con una distribución de Linux en una máquina virtual, en este caso con un Debian.

Antes de encender la máquina primero añadimos un nuevo disco.


Una vez iniciado la máquina virtual para ver el disco tenemos que ejecutar el comando fdisk.


Para arreglar este error tenemos que hacer lo siguiente.


Una vez hecho esto, cuando ejecutamos el comando fdisk nos saldrá la información de los discos conectados al sistema operativo. 


Ahora que hemos reconocido el disco nuevo /dev/sdb, lo que tenemos que hacer es crear una partición.


Después de todo le damos a la letra w para guardar los cambios y salir.

Como formato del tipo de partición seleccionamos la opción de Linux.




Una vez creada la partición, le asignamos el sistema de archivo.


Ahora solo falta montar el disco.

Lo primero es crear el directorio donde queremos montar el disco.


El siguiente paso es montar el disco.


Ahora solo falta añadir el disco en el archivo fstab en la carpeta /etc para que cada vez que encendamos la máquina el disco esté disponible.




Instalar pfSense en una máquina virtual

Lo primero que tenemos que hacer es descargar la imagen ISO de pfSense en la página oficial.
Normalmente el archivo viene comprimido.


Para descomprimir el archivo me he descargado la aplicación WinZip. La aplicación es de pago así que te vale la versión free trials o de evaluación para eso.


Una vez descargada descomprimes el archivo.


Ahora creas la máquina virtual. La puedes nombrar pfSense como lo he hecho yo.


Acuérdate que en la creación de la máquina virtual el tipo de sistema y su versión son muy importantes.
Lo correcto para pfSense es poner el sistema FreeBSD y luego la versión correspondiente que quieres instalar, sea de 32 bits o de 64 bits.


Recuerda que una vez realizado la instalación tenemos que eliminar el disco CD de arranque o la ISO con la que hemos instalado el firewall.


También acordarse de poner en el orden correcto el arranque.


Acuérdate también de establecer dos interfaces de red. Una red interna, que conecte con la máquina virtual cliente que vas a crear en el futuro y una red que coincida con la red local de tu casa, de tu colegio o tu centro de trabajo donde estés haciendo esta práctica.

Para establecer la IP de la red interna que va coincidir con la máquina virtual futura que vas a creer seleccionamos la opción Red Interna.


Para establecer la red que coincida con la red local de nuestra casa, de nuestro centro de trabajo o de nuestro trabajo tenemos que seleccionar la opción Adaptador puente. 


Mas adelante vamos a hacer la prueba de conexión con un ping al host para asegurarnos de que hay conexión entre el host y la máquina virtual.

Una vez instalado todo nos saldrá estas configuraciones con las IPs a red local y a red interna.



Ahora creamos una máquina virtual que es la que se va a conectar por red interna a la pfSense. Yo para hacer la práctica he creado una máquina virtual Windows 7 que ya tenía de antes.


Comprobamos que hay conexión con un ping a la maquina virtual.


Ahora lo que tenemos que hacer es ir al buscador de Google y poner la IP interna o IP de la LAN.


Una vez hecho esto en la máquina virtual Windows 7 abrimos el buscador que tenemos y ponemos la IP de la LAN que se ve en la imagen anterior.

Le damos al teclado ENTER.

Una vez hecho esto nos saldrá la siguiente pagina de administración de pfSense donde tendremos que introducir las credenciales por defecto.

Usuario: admin
Contraseña: pfsense


Ejercicios PHP EXAMEN 07/02/2023

1.Convertir un numero binario recogido en un array en un numero decimal con una función binarioToDecimal que devuelva un valor entero. 
<?php
$array=array(1,0,0,1,1);

function binarioTodecimal($array){
    $contador=0;
    $exponente=count($array)-1;

for($i=0;$i<=count($array)-1;$i++){
    if($array[$i]==1){
        $contador=$contador+$exponente;
    }
    $exponente--;
   
}
    return $contador;
}

$valor=binarioTodecimal($array);


$conteo=1;
$resultado=1;
while($conteo<=$valor){
  $resultado=$resultado*2;
  $conteo++;
}

$longitud=count($array);


if($array[$longitud-1]==1){
   $resultado=$resultado+1;    
}



echo "El decimal del numero binario introducido es $resultado";



?>

Desbloquear Usuario HR en Oracle database 18 C

Una vez hecho los cambios en los archivos con extensión .ORA tsnames y listener del directorio del equipo C:\app\ALEJANDRO\product\18.0.0\dbhomeXE\network\admin.

Los cambios que tenemos que hacer en los archivos de extensión .ORA se muestran subrayados en rojo.



Ahora accedemos a la carpeta Samples, concretamente al archivo también denominado tsnames. Modificamos este archivo tsnames copiando la parte inicial del otro archivo tsnames de la carpeta admin y lo pegamos al final. 


Guardamos los archivos.

Abrimos un cmd con permisos de administrador.


Accedemos al directorio C:\. Desde ahi ejecutamos el comando sqlplus / as sysdba para acceder al terminal SQL.





Lo siguiente que hacemos es cambiar la sesión con el comando que se muestra en la imagen.


Comprobamos si la sesión se ha cambiado con el comando siguiente.


Ahora consultamos los usuarios de la base de datos, particularmente el usuario HR.


Como se puede ver en la imagen anterior, el usuario se encuentra bloqueado y expirado.

Ahora para desbloquear el usuario ejecutamos el siguiente comando. Una vez modificado el usuario ejecutamos el siguiente comando para verificar que el usuario está desbloqueado.


Ahora si podemos probar la conexión con el usuario desde el CMD con el comando conn HR/hr @XEPDB1. HR/hr hace referencia a Usuario HR/contraseña.

Debemos tener en cuenta el estado de los servicios de Oracle en la máquina. Por eso si no conecta con el usuario es bueno reiniciar los servicios de Oracle. Pulsar la Tecla Windows + R y ejecutar el comando services.msc para verificar el estado de los servicios.

Instalar Guest Additions en Linux Mint

Primero pulsamos en la opción Dispositivos en el menú del lado superior. Seleccionamos la opción Insertar imagen CD de las *Guest Additions*


Primero actualizamos con el comando apt-get update.


Ahora ejecutamos el siguiente script : sudo apt install build-essential module-assistant.


Ejecutamos el siguiente script: sudo m-a prepare.


Accedemos a la carpeta donde se ha guardado el disco Guest Additions. La dirección es cd /media/alejandro/VBox_GAs_6.1.40.


Ejecutamos VBoxLinuxAdditions.run.


Ahora reiniciamos la máquina y luego pulsamos el botón Modo pantalla completa.


Este es el resultado final.

Ejercicios de MySQL con Cursores

1. Función que pasándole un salario me devuelva cuantos empleados cobran menos de ese salario mostrar también el nombre y el salario de dichos empleados.

 

Delimiter $$

drop function if exists ej_cursor2$$

create function ej_cursor2(tope float) returns int

begin

declare done int default false;

declare salario float;

declare numero_empleados int default 0;

declare cursor2 cursor for select salEmp from empleados;

declare continue handler for not found set done=TRUE;

 

open cursor2;

 

bucle:LOOP

            fetch cursor2 into salario;

    

    if done=TRUE then

                        leave bucle;

            end if;

    

    if salario<tope then 

                        set numero_empleados=numero_empleados+1;

            end if;

end loop;

 

close cursor2;

 

 

return numero_empleados;

end

$$

 

 

2. Desarrollar un procedimiento que visualice el apellido y la fecha de alta de todos los empleados ordenados por apellido.

 

Delimiter $$

Drop procedure if exists cursor01 $$

Create procedure cursor01()

begin

declare done int default false;

declare fecha_incorporacion date;

declare nombre varchar (30);

declare curs cursor for select nomEmp,fecIncorporacion from empleados

order by nomEmp;

declare continue handler for not found set done=true;

 

open curs;

bucle:loop

fetch curs into nombre,fecha_incorporacion;

select nombre,fecha_incorporacion;

if done then

 

leave bucle;

end if;

end loop bucle;

close curs;

end

$$

 

3. Codificar un procedimiento que muestre el nombre de cada departamento y el número de empleados que tiene.

 

Delimiter $$

drop procedure if exists cursor02 $$

create procedure cursor02()

begin

declare done int default false;

declare Departamento varchar (20);

declare Numero_Empleados int;

declare curs cursor for select d.nombreDpto,count(*) from departamentos as d

inner join empleados as e

on d. codDepto=e.codDepto

group by d.nombreDpto;

declare continue handler for not found set done=true;

 

open curs;

bucle:loop

fetch curs into Departamento,Numero_Empleados;

if done then

leave bucle;

end if;

select Departamento,Numero_Empleados;

 

end loop bucle;

close curs;

end

$$

 

4. Escribir un procedimiento que reciba una cadena y visualice el apellido y el número de empleado de todos los empleados cuyo apellido contenga la cadena especificada. Al finalizar visualizar el número de empleados mostrados.

 

Delimiter $$

 

Drop procedure if exists cursor03$$

create procedure cursor03(in cadena varchar (30))

begin

declare done int default false;

declare Nombre_Empleado varchar (30);

declare contador int default 0;

declare curs cursor for select nomEmp from empleados

where lower(nomEmp) like concat(&quot;%”, cadena,&quot;%&quot;);

declare continue handler for not found set done=true;

 

open curs;

bucle:loop

fetch curs into Nombre_Empleado;

if done then

 

leave bucle;

end if;

 

select Nombre_Empleado;

set contador=contador +1;

end loop bucle;

select contador;

close curs;

 

end

$$

 

5. Escribir un programa que visualice el apellido y el salario de los cinco empleados que tienen el salario más alto.

 

Delimiter $$

Drop procedure if exists cursor04$$

create procedure cursor04 ()

begin

declare done int default false;

declare nombre varchar (30);

declare salario float;

declare curs cursor for select nomEmp,salEmp from empleados

order by salEmp desc

limit 5;

declare continue handler for not found set done=true;

 

open curs;

bucle:loop

fetch curs into nombre,salario;

if done then

leave bucle;

end if;

select nombre,salario;

 

end loop bucle;

close curs;

end

 

$$

 

6. Codificar un programa que visualice los dos empleados que ganan menos de cada oficio.

 

CREATE DEFINER=`root`@`localhost` PROCEDURE `tarea4_05B`()

BEGIN

DECLARE done INT DEFAULT FALSE;

DECLARE nom varchar(20);

DECLARE sal FLOAT;

DECLARE ofi varchar(15);

DECLARE ofi_ant varchar(15);

DECLARE cont int default 0;

DECLARE cursor05 CURSOR FOR

Select nomemp, salemp, cargoe

From empleados ORDER BY cargoe asc, salemp asc;

 

DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

OPEN cursor05;

Set ofi_ant="*";

 

Bucle: LOOP

FETCH cursor05 INTO nom,sal,ofi;

 

IF done=TRUE THEN

LEAVE bucle;

END IF;

 

If ofi_ant&lt;&gt;ofi then

Set ofi_ant=ofi;

Set cont=0;

Else

Set cont=cont+1;

End if;

 

If cont<3 then

 

Select nom,sal,ofi;

End if;

 

Set cont=cont +1;

 

END LOOP;

Close cursor05;

END

 

7. Escribir un programa que muestre Para cada departamento: Número de empleados y suma de los salarios del departamento. Al final del listado: Número total de empleados y suma de todos los salarios.

 

delimiter $$

drop procedure if exists cursor06 $$

create procedure cursor06()

begin

declare done int default false;

declare Departamento varchar(20);

declare numero_empleados int;

declare Salario_total_departamento float;

declare Salario_total float default 0.0;

declare Total_empleados int default 0;

declare curs cursor for select d.nombreDpto,count(e.nDIEmp),sum(e.salEmp)

from empleados as e

inner join departamentos as d

on e.codDepto=d.codDepto

group by d.nombreDpto;

 

declare continue handler for not found set done=true;

 

open curs;

bucle:loop

fetch curs into

Departamento,numero_empleados,Salario_total_departamento;

 

if done then

leave bucle;

end if;

 

select Departamento,numero_empleados,Salario_total_departamento;

set Total_empleados=Total_empleados+numero_empleados;

set Salario_total=Salario_total+Salario_total_departamento;

 

end loop bucle;

select Total_empleados ,Salario_total;

 

close curs;

 

end

$$

 

JARDINERÍA

 

8. Crear un procedimiento que muestre los clientes poniendo:

- Si han hecho pagos la suma total de los mismos.

- Si no han hecho pagos poner "SIN PAGOS";

 

Al final mostrar el total de pagos de todos los clientes.

 

Delimiter $$

Drop procedure if exists Jardineria06

create procedure Jardineria06()

begin

Declare done int default false;

Declare cliente varchar (50);

Declare pago float;

Declare informe_pago varchar (30);

Declare total_pagos float default 0.0;

Declare curs cursor for select c.nombre_cliente,sum(p.total) from cliente as c

left join pago as p

On c.codigo_cliente=p.codigo_cliente

Group by c.nombre_cliente;

Declare continue handler for not found set done=true;

 

Open curs;

bucle:loop

fetch curs into cliente,pago;

if done then

leave bucle;

end if;

if pago is null then

set informe_pago="sin pago";

select cliente,pago,informe_pago;

else

select cliente,pago,informe_pago;

set total_pagos= total_pagos + pago;

end if;

 

end loop bucle;

Close curs;

 

Select total_pagos;

End

$$

 

9. Crear un procedimiento que muestre las distintas gamas de productos con la cantidad de unidades vendidas de cada gama. Si no supera cierta cantidad (parámetro del procedimiento) se muestra "POCO

VENDIDA";

 

al final se muestra el número de gamas poco vendidas gamas.

 

Delimiter $$

Drop procedure if exists jardineria07 $$

Create procedure jardineria07(in cantidad int)

Begin

Declare done int default false;

Declare nombre_gama varchar (50);

Declare unidades_vendidas int;

Declare informe varchar (50);

Declare curs cursor for select g.gama,sum(d.cantidad) from producto as p inner

join gama_producto as g

On p.gama=g.gama

Inner join detalle_pedido as d

On d.codigo_producto=p.codigo_producto

Group by g.gama;

Declare continue handler for not found set done=true;

 

Open curs;

bucle:loop

fetch curs into nombre_gama,unidades_vendidas;

 

if done then

 

leave bucle;

end if;

 

if unidades_vendidas<=cantidad then

set informe="poco vendida";

 

select nombre_gama,unidades_vendidas,informe;

end if;

end loop bucle;

 

close curs;

End

 

$$

 

Configurar NAS LACIE y probar que podemos acceder a él en la red interna

El modelo de NAS que hemos utilizado es el LACIE 5big. Una de las cosas que debemos tener en cuenta es: - En la red hay un servidor DHCP...