jueves, 29 de junio de 2017

INSTALACIÓN DE MYSQL | CENTOS 7

Antes de instalar MySQL es recomendable actualizar el SO.
$> yum -y update

Descargar y añadir el repositorio a la lista de fuentes de paquetes de centos.
Mysql 5.7
$> wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
$> rpm -ivh mysql57-community-release-el7-9.noarch.rpm

Mysql 8.0
$> wget http://repo.mysql.com/mysql80-community-release-el7-2.noarch.rpm
$> rpm -ivh mysql80-community-release-el7-2.noarch.rpm

Instalar MySQL
$> yum -y install mysql-community-server

Iniciar servicio MySQL
$> systemctl start mysqld
$> systemctl enable mysqld

Habilitar firewall
$> firewall-cmd --add-service=mysql --permanent
$> firewall-cmd --reload

Ver clave generada por MYSQL
$> grep -i password /var/log/mysqld.log

Establecer parámetros de seguridad para MYSQL
$> mysql_secure_installation

Cambiar contraseña de usuario root de mysql 5.7
$> mysql -u root -p
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root#123';
mysql> flush privileges;

mysql> quit

Cambiar contraseña de usuario root de mysql 8.0
$> mysql -u root -p
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Root#123';
mysql> flush privileges;
mysql> quit

Crear nuevo usuario y establecer permisos en mysql 5.7
$> mysql -u root -p
mysql> CREATE USER 'usuario1'@'localhost' IDENTIFIED BY 'User#123';
mysql> GRANT ALL PRIVILEGES ON * . * TO 'usuario1'@'localhost';
mysql> flush privileges;
mysql> quit


Crear nuevo usuario y establecer permisos en mysql 8.0
$> mysql -u root -p
mysql> CREATE USER 'usuario1'@'localhost' IDENTIFIED WITH mysql_native_password BY 'User#123';
mysql> GRANT ALL PRIVILEGES ON * . * TO 'usuario1'@'localhost';
mysql> flush privileges;
mysql> quit

Reiniciar servicio MySQL
$> systemctl restart mysqld

*****************************************************************
Reiniciar la contraseña de root de MySQL
Detener la instancia del servidor de MySQL
$> systemctl stop mysqld
$> mysqld --skip-grant-tables --user=mysql &

Conectarse al servidor MySQL con root sin pedir contraseña.
$> mysql -u root

Restablecer la contraseña de root
mysql> flush privileges;
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root#123';
mysql> quit

Inicie MySQL.
$> systemctl restart mysqld
**************************************************************
Administración de  MySQL
Por consola
$> mysql -u root -p 

Instalar PHP y PHPMyAdmin
========================

Instalar los repositorios de EPEL y REMI: 
$> yum install -y epel-release
$> yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm 

Desactivar el repositorio para la version PHP 5.4:
$> yum install -y yum-utils
$> yum-config-manager --disable remi-php54

Activar el repositorio REMI para la version PHP 7.3:
$> yum-config-manager --enable remi-php73

Instalación de PHP 7.3 en CentOS 7:
$> yum install php php-mysql php-mbstring
Confirmar la Version de PHP 7.3
$> php -v
buscar e instalar extensiones de PHP7
$> yum list php-*
$> yum install php-<extension_name>
$> systemctl restart httpd

Crear un script PHP de prueba.
$> vim /var/www/html/info.php
------------------
<?php phpinfo(); ?>
------------------
Ingresar al navegador:
http://Tu_IP_address/info.php

Eliminar archivo de prueba ya que en realidad podría dar información sobre su servidor a usuarios no autorizados. 
$> rm /var/www/html/info.php

Descargamos la ultima versión de phpMyAdmin
$> cd /var/www/
$> wget https://files.phpmyadmin.net/phpMyAdmin/4.9.1/phpMyAdmin-4.9.1-all-languages.tar.gz

Descomprimir el archivo
$> tar -zxvf phpMyAdmin-4.9.1-all-languages.tar.gz
$> rm phpMyAdmin-4.9.1-all-languages.tar.gz

Renombrar el directorio y cambiar los permisos para apache
$> mv phpMyAdmin-4.9.1-all-languages phpmyadmin
$> cd phpmyadmin
$> chown apache:apache /var/www/phpmyadmin/
$> mv config.sample.inc.php config.inc.php
$> vim config.inc.php          (Poner una clave cualquiera)
-----------------------------------------------------
17:$cfg['blowfish_secret'] = 'aS#Ttb6S*[hExCn{hT+zrD~n-o{TYL7lOvIJjg*a@ga#gs%dgysd';
18:$cfg['TempDir'] = '/tmp/php';
31:$cfg['Servers'][$i]['host'] = '192.168.1.50';
32:$cfg['Servers'][$i]['socket'] = '';
33:$cfg['Servers'][$i]['connect_type'] = 'tcp';
-----------------------------------------------------
Crear directorio para almacenar archivos temporales
$> mkdir /tmp/php
$> chown apache.apache /tmp/php
$> chmod 600 /tmp/php

Restaurar los contextos web de SELINUX
$> restorecon -FRvv /var/www/phpmyadmin

Permitir Apache conexión hacia base de datos
$> setsebool -P httpd_can_network_connect_db 1

Configurar alias y ubicación del directorio virtual:
$> vim /etc/httpd/conf.d/phpmyadmin.conf
-----------------------------------------
  Alias /phpmyadmin /var/www/phpmyadmin
  <Directory "/var/www/phpmyadmin">
    AllowOverride all
    Options Indexes
    Require local
    Require all granted
  </Directory>
-----------------------------------------

Reiniciar Servidor Web
$> systemctl restart httpd
$> systemctl restart mysqld

Ingresar con navegador
$> http://server_domain_o_IP/phpmyadmin
usuario: root
clave:  Root#123

LIMITAR EL ACCESO POR CONTRASEÑA:

Crear el archivo para la autenticacion:
$> vim /var/www/phpmyadmin/.htaccess
------------------------------------------
 AuthName "Solamente usuarios autorizados"
 AuthType Basic
 Require valid-user
 AuthUserFile /var/www/.htpasswd
------------------------------------------
Crear archivo donde se guardara las credenciales:
$> touch /var/www/.htpasswd
$> chmod 600 /var/www/.htpasswd
$> chown apache:apache /var/www/.htpasswd

Crear usuarios virtuales y contraseñas:
$> htpasswd /var/www/.htpasswd carlos
$> htpasswd /var/www/.htpasswd juan

Reniciando servidor web:
$> systemctl restart httpd

Ingresar:
http://server_domain_o_IP/phpmyadmin
usuario: root
clave:  clave12345

martes, 27 de junio de 2017

INSTALACION WEBMIN CENTOS 7

 Descargar Webmin RPM:
 $> wget https://sourceforge.net/projects/webadmin/files/webmin/1.881/webmin-1.881-1.noarch.rpm
 $> yum -y install perl perl-Net-SSLeay openssl perl-IO-Tty perl-Encode-Detect

 Instalar webmin
 $> rpm -ivh webmin-1.881-1.noarch.rpm

 Habilitar firewalld y permitir acceso a tcp (10000) y https
 $> firewall-cmd --permanent --zone=public --add-port=10000/tcp
 $> firewall-cmd --add-service=https --permanent
 $> firewall-cmd --reload

 Acceso a WEBMIN:
 https://TU-IP-ADDRESS:10000

domingo, 25 de junio de 2017

CONFIGURACION DE UN DNS PUBLICO Y UN SERVIDOR WEB APACHE | CENTOS 7

Registro de un dominio de internet
Registrar un dominio en:
.com --> godaddy, Namecheap
.pe    --> punto.pe
.tk     --> www.dot.tk             (GRATIS)
               my.freenom.com   (GRATIS)
Usaremos como referencia el dominio gratuito midominio.tk

Configurar Nombre de Host
$> hostnamectl set-hostname srvweb.dominio.tk
$> exit
Volver a loguearse
$> hostnamectl

Configurar la ip del host en /etc/hosts
$> vim /etc/hosts
127.0.0.1       localhost.localdomain localhost
192.168.2.X   srvweb.dominio.com   srvweb

Instalar Repositorio Epel
$> yum -y install epel-release 

Ejecute lo siguiente para instalar Bind en CentOS 7
$> yum -y install bind bind-chroot bind-utils

Copiar los archivos del DNS al entorno chroot

$> cd /var/named
$> for f in named.* data dynamic slaves; do mv $f chroot/var/named/; ln -s /var/named/chroot/var/named/$f /var/named/; done

Crear firma digital del servidor

$> rndc-confgen -a -r /dev/urandom -b 512 -c /etc/rndc.key
$> chown named:named /etc/rndc.key
$> chmod 640 /etc/rndc.key

Copiar la firma digital al entorno chroot

$> cd /etc
$> for f in named.* rndc.key; do mv $f /var/named/chroot/etc/; ln -s /var/named/chroot/etc/$f /etc/; done

Actualizar el archivo de cache con los servidores DNS raíz.

$> wget -N http://www.internic.net/domain/named.root -O /var/named/named.ca
$> chown named:named /var/named/named.ca
$> chmod 640 /var/named/named.ca

Editar el archivo /etc/named.conf:
$> vim /var/named/chroot/etc/named.conf
-------------------------------------------------------------------------------------------------------------------------------------------------
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
options {
        listen-on port 53 { 127.0.0.1;192.168.2.5;};
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query     { localhost;any; };
        forwarders   { 8.8.8.8; };
        recursion           no;
        dnssec-enable no;
        dnssec-validation no;
        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";
};
logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};
// Zona raiz por defecto
zone "." IN {
        type hint;
        file "named.ca";
};
// Zona para nuestro dominio
zone "dominio.com" {
        type master;
        file "/var/named/chroot/var/named/dominio.com.zone";
        allow-update { none; };
};
include "/etc/named.rfc1912.zones";
---------------------------------------------------------------------------------------------------------------------------------------------
Crear y editar los archivos de zona de resolución Directa 
$> cd /var/named/chroot/var/named
$> vim dominio.com.zone
-------------------------------------------------------------------------------------------------------------------------
$TTL 86400 @ IN SOA @ root ( 2017062401 ; serial (d. adams) 3H ; refresh 15M ; retry 1W ; expiry 1D ) ; minimum dominio.com. IN NS ns1.dominio.com.
dominio.com. IN NS ns2.dominio.com. ns1 IN A 158.69.210.X
ns2 IN A 158.69.210.X mail IN A 158.69.210.X www IN A 158.69.210.X dominio.com. IN A 158.69.210.X dominio.com. IN MX 10 mail.dominio.com.
------------------------------------------------------------------------------------------------------------------------

Configurar DNS de tarjeta de red: $> vim /etc/resolv.conf nameserver IP DE SERVIDOR
$> systemctl restart network
Reiniciar los servicios $> systemctl start named $> systemctl enable named $> systemctl status named
Si salen errores en el servicio, verificar los logs $> tail -f /var/log/messages $> less /var/log/messages Nota si sale errores de permisos o selinux ——————————————————————————– $> chgrp -R named /var/named/chroot/var/named $> restorecon -FRvv /var/named/chroot/var/named ——————————————————————————— Reglas del firewall si se desea consultar el DNS desde otro equipo Instalar Firewalls: $> yum -y install firewalld $> systemctl enable firewalld $> systemctl start firewalld $> firewall-cmd --add-service=dns --permanent $> firewall-cmd --reload
Verificar puertos abiertos:
$> iptables -S ————————— Verificar el firewall: $> iptables -S | grep 53 ————————— Comprobación del DNS $> dig NS dominio.com $> dig MX dominio.com

Instalacion Servidor Web Apache $> yum -y install httpd Habilitar firewalld y permitir acceso a http (80) y https (443) $> firewall-cmd --add-service=http --permanent $> firewall-cmd --add-service=https --permanent $> firewall-cmd --reload $> systemctl start httpd $> systemctl enable httpd Ingresar con el navegador: http://www.dominio.com Agregar sitio web principal: $> cd /var/www/html ---> Web Principal

Enviar Archivos a Servidor:
C:> scp -rp /carpetaLocal/* root@159.89.235.58:/var/www/html

Reiniciar Apache $> systemctl restart httpd

Verificar archivo de configuración para detectar errores de sintaxis: $> apachectl configtest

Verificar el sitio que sea accesible usando curl: $> curl midominio.com

Entrar con el navegador: http://www.dominio.com
Ocultar la versión de Apache: $> vim /etc/httpd/conf.d/serversignature.conf Añada el siguiente contenido: **************************** ServerSignature Off ServerTokens Prod **************************** Dominios Virtuales en Apache (Virtual Hosts)
Configurar archivos de DNS.

Configuracion de Multiples Dominios: $> vim /etc/httpd/conf.d/vhosts.conf ---------------------------------------------------------------------------------------------------------------- <VirtualHost *:80> ServerName www.dominio2.com DocumentRoot "/var/www/dominio2" <Directory "/var/www/dominio2"> Options Indexes FollowSymLinks DirectoryIndex index.html index.php AllowOverride All Order allow,deny Allow from all </Directory> ErrorLog /var/log/httpd/www.dominio2.com-error_log CustomLog /var/log/httpd/www.dominio2.com-access_log combined </VirtualHost> <VirtualHost *:80> ServerName www.dominio3.com DocumentRoot "/var/www/dominio3" <Directory "/var/www/dominio3"> Options Indexes FollowSymLinks DirectoryIndex index.html index.php AllowOverride All Order allow,deny Allow from all </Directory> ErrorLog /var/log/httpd/www.dominio3.com-error_log CustomLog /var/log/httpd/www.dominio3.com-access_log combined </VirtualHost> ------------------------------------------------------------------------------------------------------------------ Resolviendo los nombres de Host por DNS o por /etc/hosts $> vim /etc/hosts 127.0.0.1 localhost localhost.locadomain 192.168.2.X www.dominio2.com 192.168.2.X www.dominio3.com Creando los directorios para la resolucion de los host virtuales: $> mkdir /var/www/dominio2 $> mkdir /var/www/dominio3 Agregar contenido de Paginas web en directorio: $> cd /var/www/html ---> index.html $> cd /var/www/dominio2 ---> index.php $> cd /var/www/dominio3 ---> index.php Restaurando los contextos web SELINUX $> restorecon -RFvv /var/www/dominio2/ $> restorecon -RFvv /var/www/dominio3/
Reniciando servidor web y probando: $> systemctl restart httpd Entrar con el navegador: http://www.dominio2.com http://www.dominio3.com Directorios virtuales.
========================
Crear directorio para alojar el sitio web del cliente1: $> mkdir /var/www/cliente1 Edite el archivo vhosts.conf y añadir al final el siguiente contenido: $> vim /etc/httpd/conf.d/vhosts.conf: -------------------------------------- Alias /cliente1 /var/www/cliente1 <Directory "/var/www/cliente1"> Options Indexes AllowOverride all Require local Require all granted </Directory> -------------------------------------- Restaurando los contextos web SELINUX $> restorecon -RFvv /var/www/cliente1/

Reniciando servidor web:
$> systemctl restart httpd Entrar con el navegador: http://www.dominio1.com/cliente1 Limitar el acceso a directorios por dirección IP. $> vim /etc/httpd/conf.d/vhosts.conf ************************************************ Alias /cliente1 /var/www/cliente1 <Directory "/var/www/cliente1"> Options Indexes Require local Require ip 192.168.2.0/24
</Directory> ************************************************ Reniciando servidor web: $> systemctl restart httpd Realizar prueba: http://192.168.2.X/cliente1/ Limitar el acceso basico por usuario y contraseña: Crear directorio para alojar el sitio web del cliente2:
$> mkdir /var/www/cliente2

Restaurando los contextos web SELINUX:
$> restorecon -RFvv /var/www/cliente2
$> vim /etc/httpd/conf.d/vhosts.conf
Añadir al final el siguiente contenido: -------------------------------------------------- Alias /cliente2 /var/www/cliente2 <Directory "/var/www/cliente2"> Options Indexes AllowOverride all Require local Require all granted </Directory> --------------------------------------------------- Crear el archivo para la autenticacion dentro del cliente2: $> vim /var/www/cliente2/.htaccess ------------------------------------------------------------------------ AuthName "Solamente usuarios autorizados" AuthType Basic Require valid-user AuthUserFile /var/www/.htpasswd ------------------------------------------------------------------------ Crear archivo donde se guardaran las credenciales: $> touch /var/www/.htpasswd $> chmod 600 /var/www/.htpasswd $> chown apache:apache /var/www/.htpasswd Añadir usuarios virtuales y contraseñas: $> htpasswd /var/www/.htpasswd juan $> htpasswd /var/www/.htpasswd pedro $> htpasswd /var/www/.htpasswd hugo $> htpasswd /var/www/.htpasswd luis

Reniciando servidor web: $> systemctl restart httpd Realizar prueba: http://127.0.0.1/cliente2/ HTTPS Centos Comprar Certificados en: http://godaddy.com http://verisign.com Instalar dependencias https $> yum -y install mod_ssl openssl $> firewall-cmd --add-service=https --permanent $> firewall-cmd --reload $> systemctl restart httpd Generar el certificado SSL $> openssl genrsa -des3 \-out /etc/pki/tls/private/ca.key 4096 Generate CSR : $> openssl req -sha256 -new \-key /etc/pki/tls/private/ca.key \-out /etc/pki/tls/certs/ca.csr --------------------------------------------- Country Name (2 letter code) [XX]:PE State or Province Name (full name) []:Lima Locality Name (eg, city) [Default City]:Lima Organization Name (eg, company) [Default Company Ltd]:PeruSystem Organizational Unit Name (eg, section)[]:Sistemas Common Name (eg, your name or your server's hostname)[]:www.perusystem.pe Email Address []:correo@gmail.com Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: ---------------------------------------------- Ejecute lo siguiente para crear un certificado auto-firmado con estructura X.509 en el que
se establece una validez por 1825 días (5 años): $> openssl x509 -sha256 -req -days 1825 \-in /etc/pki/tls/certs/ca.csr \-signkey /etc/pki/tls/private/ca.key \-out /etc/pki/tls/certs/ca.crt
$> chmod 600 /etc/pki/tls/*/ca.* Editar el archivo de configuracion de SSL en Apache para usar el certificado autofirmado: $> vim /etc/httpd/conf.d/ssl.conf 100: SSLCertificateFile /etc/pki/tls/certs/ca.crt 107: SSLCertificateKeyFile /etc/pki/tls/private/ca.key Reniciando servidor web: $> systemctl restart httpd

sábado, 24 de junio de 2017

EJERCICIOS REPETITIVOS | JAVA

1) Realice un algoritmo que le pida al usuario un día de la semana, de manera que la ejecución del algoritmo no se detenga hasta que el usuario haya escrito el día "viernes".

public class Ejercicio {
     public static void main(String[] args) {
String day;
     Scanner scanner=new Scanner(System.in);
    
do {
      System.out.println("Ingresa un día de la semana: ");
      day = scanner.nextLine();
    } while (!day.equals("viernes"));
  }
}

2) Desarrolla un algoritmo que implemente un proceso en el cual se ingrese un valor numérico de forma reiterativa, hasta que el valor ingresado sea 0. Cuando se dé este suceso, se deberá imprimir el promedio de las cantidades ingresadas, así como la cantidad de números pares e impares ingresados.

public class Ejercicio {
     public static void main(String[] args) {
     Scanner scanner=new Scanner(System.in);
     int num = 0, c = 0, contadorPar = 0, contadorImpar = 0;
     double promedio = 0, suma = 0;

    
do {
      System.out.println("Ingresa un número: ");
      num = scanner.nextInt();
      suma += num;
      c++;

      if (num % 2 == 0) {
        contadorPar++;
      } else {
        contadorImpar++;
      }
    while (num != 0);
  }
}

3) Calcular el cuadrado de un número.


public class Ejercicio {
     public static void main(String[] args) {
int numero,cuadrado;
     Scanner entrada=new Scanner(System.in);

System.out.print("Ingrese un numero: ");
numero=entrada.nextInt();

while(numero>=0){
cuadrado = (int)Math.pow(numero,2);
System.out.println("El numero " +numero+ "elevado al cuadrado es: "+cuadrado );
break;
}
 }
}

4) Leer un numero hasta que se introduzca un 0. Para cada uno indicar si es número par o impar.

public class Ejermplo {
    public static void main(String[] args) {
        int numero;
        Scanner entrada=new Scanner(System.in);

        System.out.print("Ingrese un numero: ");
        numero=entrada.nextInt();
        
        while(numero!=0){
        if(numero%2==0){
          System.out.println("El numero es par");
        }
        else{
          System.out.println("El numero es impar");
        }
        System.out.print("Ingrese un numero: ");
        numero=entrada.nextInt();
       }
      }
    }
5) Escribir un programa que muestre las siguientes opciones:
      1. Sumar dos números
      2. Ordenar números
      3. Fecha siguiente
      4. Salir
Si el usuario ingresa la opción 1 el programa debe solicitar se ingresen dos números y mostrar en consola la suma de los mismos y luego mostrar nuevamente las opciones.
Si el usuario ingresa la opción 2 el programa debe solicitar se ingresen 3 números y mostrar en consola los números ordenados de mayor a menor y luego mostrar nuevamente las opciones.
Si el usuario ingresa la opción 3 el usuario debe solicitar que se ingrese el día, mes y año (por separado) de una fecha correcta y mostrará en consola la fecha del día siguiente, suponer que todos los meses tienen 30 días y luego mostrar nuevamente las opciones.

Si el usuario ingresa la opción 4 finaliza el programa.

public static void main(String[] args) {
        int num1,num2, num3, suma,opcion=0;
        int dia,mes,año;
        Scanner entrada = new Scanner(System.in);

        do{
        System.out.println("");
        System.out.println("1. Sumar dos números");
        System.out.println("2. Ordenar números");
        System.out.println("3. Fecha siguiente");
        System.out.println("4. Salir");
        
        System.out.print("Ingresar opcion: ");
        opcion=entrada.nextInt();

        switch(opcion){
            case 1:
                System.out.print("Ingrese primer valor: ");
                num1=entrada.nextInt();
                System.out.print("Ingrese segundo valor: ");
                num2=entrada.nextInt();
                suma=num1+num2;
                System.out.println("La suma es: " + suma);
                break;
            case 2:
                System.out.println("Ingrese 3 numeros: ");
                num1=entrada.nextInt();
                num2=entrada.nextInt();
                num3=entrada.nextInt();
                if(num1>num2 && num2>num3){
                    System.out.println(num1+", "+num2+", "+num3);
                }else if(num1>num3 && num3>num2){
                    System.out.println(num1+", "+num3+" ,"+num2);
                }else if(num2>num1 && num1>num3){
                    System.out.println(num2+", "+num1+", "+num3);
                }else if(num2>num3 && num3>num1){
                    System.out.println(num2+", "+num3+", "+num1);
                }else if(num3>num2 && num2>num1){
                    System.out.println(num3+", "+num2+", "+num1);
                }else if(num3>num1 && num1>num2){
                    System.out.println(num3+", "+num1+", "+num2);
                }
                break;
            case 3:
                System.out.println("Ingrese número de día: ");
                dia=entrada.nextInt();
                System.out.println("Ingrese mes: ");
                mes=entrada.nextInt();
                System.out.println("Ingrese año: ");
                año=entrada.nextInt();
                if (dia>=1 && dia<=30){
                           if(mes>=1 && mes<=12){      
                               if (año>=1){
                                   dia++;
                                   if(dia>30){
                                       dia = 1;
                                       mes++;
                                   }
                                   if (mes > 12){
                                       mes = 1;
                                       año++;
                                   }
                                   System.out.println(dia+"/"+mes+"/"+año);
                                } else{
                                   System.out.println("año incorrecto");
                               }
                           }else{
                               System.out.println("mes incorrecto");
                           }
                       } else {
                           System.out.println("día incorrecto");
                       }
                break;
            case 4:
                break;
        }
        }
        while(opcion!=4);
    }

6) Desarrollar un programa con menú de opciones, para realizar las operaciones: Suma, resta, multiplicacion o division, se deberá solicitar 2 numeros y realizar la opción deseada.
El programa debe mostrar las siguientes opciones:
      1. Suma
      2. Resta
      3. Multiplicación
      4. Division
      5. Salir
Solución:

public class Aplication {
  static Scanner scanner = new Scanner(System.in);
  static int option = 0;
  static double num1 = 0, num2 = 0, result = 0;

  public static void main(String[] args) {

    do {
      try {
        showMenu();
        System.out.print("Ingresa una opcion: ");
        option = scanner.nextInt();
        if (option >= 1 && option <= 4) {
          operation();
        } else if (option == 5) {
          break;
        } else {
          System.out.println("La opción seleccionada no es válida.");
        }
      } catch (Exception ex) {
        scanner.nextLine();
        System.out.println("Error. Ingresa solo numeros entre 1 y 5.");
      }
    } while (option != 5);
  }

  private static void showMenu() {
    System.out.println("""
            \n**** Aplicacion de Calculadora ****
            1. Suma
            2. Resta
            3. Multiplicacion
            4. Division
            5. Salir
                    """);
  }

  private static void operation() {
    System.out.print("Ingresa el primer valor: ");
    num1 = scanner.nextInt();
    System.out.print("Ingresa el segundo valor: ");
    num2 = scanner.nextInt();

    switch (option) {
      case 1 -> result = num1 + num2;
      case 2 -> result = num1 - num2;
      case 3 -> result = num1 * num2;
      case 4 -> result = num1 / num2;
    }
    System.out.println("El resultado de la operacion es: " + result);
  }
}

Instalar Powershell 7

Instalar Powershell Version 7 -------------------------------------- $> winget search powershell $> winget install Microsoft.Powershe...