Ir al contenido principal

Programación Bash Script desde CERO - PARTE 5



  1. Realice un shell-script que admita tres palabras como argumentos y que muestre un mensaje informando de las relaciones de igualdad y desigualdad entre esas palabras. Por linea de comandos. Todas las posibilidades entre las 3. No va con for.
  2. Mostrar los ficheros del  directorio donde se ejecuta este script en los que NO tenemos permiso de escritura  (Para ejecutar este script no entrar en el sistema como root ya que root siempre tendrá permisos de escritura).
    Los que no tienen permisos de escritura.
  3. Realizar un script que muestre los números que hay entre dos nº pasados por línea de comando, el cuadrado de cada uno, la suma de ellos, la multiplicación de cada uno.
  4. Si el primer nº es mayor que el 2º debemos tenerlo en cuenta y debe funcionar. Deben pasarse exactamente dos parámetros.
    Por linea de comandos. La suma debe ser de todos los números comprendidos entre los dos pasados por comando. Con la multiplicación igual que con la suma.
  5. Mostrar por pantalla el día de la semana en el que estamos con todas las letras.
  6. Realiza un script que escriba al revés una palabra.
     
  7. Crear un scripts que muestre por pantalla las tablas de multiplicar del 1 al 10

Programación Bash Script desde CERO



-------------------------------------



 clear

##### INICIO FUNCIONES #####

function menu()
{
    clear
    echo "               MENU                  "
    echo "_____________________________________"
    echo "|                                    |"
    echo "| 1. Crea Carpeta P15 en Home        |"
    echo "| 2. Introduce AMIGOS                |"
    echo "| 3. Copias en BACKUP                |"
    echo "| 4. Crea fichero vacio en BACKUP    |"
    echo "| 5. AMIGOS de Sevilla               |"
    echo "| 6. AMIGOS de la ciudad ...         |"
    echo "| 7. Nº de AMIGOS de cada ciudad     |"
    echo "| 8. Busca AMIGO y di su Telefono    |"
    echo "| 9. SALIR                           |"
    echo "|____________________________________|"
    read opcion
}

function pausa()
{
    read -p "Presiona cualquier tecla para continuar ..."
    echo ""
}

function crea_carpeta()
{
    if test -d ~/P15
    then
        echo "La carpeta P15 en Home ya existe"
    else
        mkdir ~/P15
        echo "Se acaba de crar la carpeta P15 en Home"
        echo ""
    fi
}

function mas_amigos()
{
    resp=s
        while test $resp = s
        do
            echo "NOMBRE:"
                read nombre
                echo "EMAIL:"
                read email
                echo "TELEFONO:"
                read telefono
                echo "$nombre:$email:$telefono">>~/P15/amigos.txt

                echo "¿Quiere introducur otro AMIGO? s/n"
                read resp
    done

}

function introduce()
{
    if test -d ~/P15
    then
        echo "Existe la carpeta P15 en Home"  
        echo "Procede a introducir AMIGOS"
        echo ""
      
        if test -f ~/P15/amigos.txt
        then
            echo "El fichero amigos.txt ya existe"
            echo "    s - Si Sobre-Escribe perdera los datos anteriores"
            echo "    n - No Sobre-Escribe añadira nuevos AMIGOS"
            echo "¿Quiere Sobre-Escribir el fichero? s/n"
            read resp

            if test $resp = s
            then
                echo "Se va a Sobre-Escribir el fichero"
                                echo "Se perderán los datos anteriores"
                echo ""
                                echo "NOMBRE:EMAIL:TELEFONO">~/P15/amigos.txt
              
                mas_amigos
            else
                echo "Se van a Añadir nuevos AMIGOS"
                echo ""
              
                mas_amigos
            fi
        else
            echo "Se va a crear por primera vez el fichero amigos.txt"
            echo ""
                        echo "NOMBRE:EMAIL:TELEFONO">~/P15/amigos.txt
          
            mas_amigos
        fi
    else
        echo "La carpeta P15 no existe en Home"
        echo "Debe crearla primero"
        echo ""
        crea_carpeta
        echo "Ahora ya esta crada, vuelva a introducir la opcion [2] de MENU"
    fi
}

function copias()
{
    if test -d ~/P15/BACKUP
    then
        echo "La carpeta BACKUP ya existe"
        echo "Se van a Sobre-Escribir las COPIAS"
        rm ~/P15/BACKUP/amigos*.txt
        pausa
    else
        mkdir ~/P15/BACKUP
        echo "Se acaba de crear la carpeta BACKUP dentro de Home/P15"
        echo "Ahora se procede a realizarse la COPIAS"
        pausa
    fi
  
    if test -f ~/P15/amigos.txt
    then
        cp ~/P15/amigos.txt ~/P15/BACKUP/amigos-c.txt
        echo "Se ha realizado una copia de amigos.txt en la carpeta BACKUP"
        pausa
      
        ln -s ~/P15/amigos.txt ~/P15/BACKUP/amigos-s.txt
        echo "Se ha realizado un ENLACE SIMBOLICO de amigos.txt en la carpeta BACKUP"
        pausa
      
        ln ~/P15/amigos.txt ~/P15/BACKUP/amigos-d.txt
        echo "Se ha realizado un ENLACE DURO de amigos.txt en la carpeta BACKUP"
        pausa

        echo "VEAMOS TODAS LAS COPIAS EN BACKUP"
        ls -li ~/P15/BACKUP/
    else
        echo "El fichero amigos.txt no existe"
        echo "Debes crearlo primero con la opción [2] del MENU"
    fi
}

function fichero_vacio()
{
    >~/P15/BACKUP/vacio.txt
    echo "Se acaba de crear un fichero llamado vacio.txt en la carpeta BACKUP"
    pausa

    echo "Busqueda de ficheros de tamaño 0 en carpeta BACKUP:"
    find ~/P15/BACKUP/ -size 0b
}

function sevilla()
{  
    echo "Si ya existe el fichero sevilla.txt"
    echo "Se Sobre-Escribira el nuevo contenido"
    sed -n 1p ~/P15/amigos.txt>~/P15/sevilla.txt
    busqueda=`cut -d ":" -f3 ~/P15/amigos.txt|egrep "^955"`
  
    for linea in $busqueda
    do
        sed -n -e '/'$linea'/p' ~/P15/amigos.txt>>~/P15/sevilla.txt  
    done
  
    echo ""
    echo "Contenido del fichero sevilla.txt"
    cat ~/P15/sevilla.txt
}

function ciudad()
{
    echo "¿De que ciudad quieres ver tús Amigos?"
    read ciudad
  
    case $ciudad in
        sevilla|Sevilla|SEVILLA)    resp=955;;
        badajoz|Badajoz|BADAJOZ)    resp=924;;
        cadiz|Cadiz|CADIZ)        resp=956;;
        *)    echo "Esa ciudad no es una opción valida";;
    esac
  
    busqueda=`sed -e 1d ~/P15/amigos.txt|cut -d ":" -f3|egrep "^$resp"`
  
    echo ""
    echo "Los amigos de la provincia de $ciudad es/son:"
    for linea in $busqueda
    do
        sed -n -e '/'$linea'/p' ~/P15/amigos.txt
    done  
}

function numero()
{
    num=`wc -l ~/P15/amigos.txt`  

    busq1=`sed -e 1d ~/P15/amigos.txt|cut -d ":" -f3|egrep "^955"`
    busq2=`sed -e 1d ~/P15/amigos.txt|cut -d ":" -f3|egrep "^956"`
    busq3=`sed -e 1d ~/P15/amigos.txt|cut -d ":" -f3|egrep "^924"`
  
    sevilla=0
        cadiz=0
        badajoz=0

    for contador in $num
    do
        for linea in $busq1
        do
            sevilla=`expr $sevilla + 1`
        done
        for linea in $busq2
                do
                        cadiz=`expr $cadiz + 1`
                done
        for linea in $busq3
                do
                        badajoz=`expr $badajoz + 1`
                done
    done
  
    echo "Amigos de la Provincia de Sevilla = $sevilla"
    echo "Amigos de la Provincia de Cadiz = $cadiz"
    echo "Amigos de la Provincia de Badajoz = $badajoz"
}

function busca()
{
    echo "Dime el nombre del AMIGO a buscar:"
    read amigo
  
    busqueda=`cut -d ":" -f1 ~/P15/amigos.txt|egrep $amigo`
    #echo "busqueda= $busqueda"

    echo ""
    echo "El resultado de tú busqueda es:"
    if test -n "$busqueda"
    then
        #echo "entra"
        result=`sed -n -e '/'$busqueda'/p' ~/P15/amigos.txt`
        echo "- $result"

        echo ""
        echo "- ¿Quieres borrar a este AMIGO? s/n"      
            read contes

        if test $contes = s
            then
                    for linea in $busqueda
                       do
                #echo "entra en for"
                               sed '/'$result'/d' ~/P15/amigos.txt > ~/P15/tmp
                       done

                    echo ""
                       echo "- Resultado del fichero amigos.txt modificado"
                       cat ~/P15/tmp > ~/P15/amigos.txt
            rm ~/P15/tmp
            cat ~/P15/amigos.txt
            else
                       echo ""
                       echo "- El fichero amigos.txt no se ha modificado"
             fi
    else
        echo "- El AMIGO buscado no existe en este fichero"
    fi
}


##### FIN DE FUNCIONES #####

opcion=0
while test $opcion -ne 9
do
    menu
    case $opcion in
        1)    echo "1. Crea Carpeta P15 en Home"
            crea_carpeta
            echo ""
            pausa;;

        2)    echo "2. Introdue AMIGOS"
            introduce
            echo ""
            pausa;;

        3)    echo "3.Copias en BACKUP"
            copias
            echo ""
            pausa;;

        4)    echo "4. Crea fichero vacio en BACKUP"
            fichero_vacio
            echo ""
            pausa;;

        5)    echo "5. AMIGOS en Sevilla"
            sevilla
            echo ""
            pausa;;

        6)    echo "6. AMIGOS en la ciudad ..."
            ciudad
            echo ""
            pausa;;

        7)    echo "7. Nº de AMIGOS de cada ciudad"
            numero
            echo ""
            pausa;;

        8)    echo "8. Busca AMIGO y di su Telefono"
            busca
            echo ""
            pausa;;
  
        9)    echo "__________________________________________"
            echo "|                                         |"
            echo "|  HAS SALIDO CORRECTAMENTE DEL PROGRAMA  |"
            echo "|_________________________________________|"
            echo ""
            pausa;;

        *)    echo "ERROR"
            echo "Opción Incorrecta. Prueba de Nuevo"
            echo ""
            pausa;;
    esac
done



 
 

Entradas populares de este blog

Configuración y Uso de Pandora FMS 5.0 SP3

CONFIGURACIÓN DE LA RED Lo primero que se debe de hacer es conocer la red que necesitas monitorizar, las distintas redes que posees y configurar las interfaces del CentOS donde tienes instalado Pandora FMS para que este sistema pueda verlas. Si haces un ping a alguna de estas redes, este debería responderte. Un ejemplo de como configurar distintas redes en CentOS sería el siguiente, donde las X son las que corresponda a tú red: # cd /etc/sysconfig/network-scripts/ # cat ifcfg-eth0 DEVICE=eth0 HWADDR=00:0C:29:75:A5:F2 TYPE=Ethernet BOOTPROTO=static IPADDR=10.x.x.155 BROADCAST=10.x.x.254 GATEWAY=10.x.x.1 NETMASK=255.255.255.0 DNS1=10.x.x.x DOMAIN=dominio.local DEFROUTE=yes IPV4_FAILURE_FATAL=yes IPV6INIT=no UUID=920d0ead-e3ad-4c99-8c79-617812986fb4 ONBOOT=yes # cat ifcfg-eth0:0 DEVICE=eth0:0 HWADDR=00:0C:29:75:A5:F2 TYPE=Ethernet BOOTPROTO=static IPADDR=10.x.x.155 BROADCAST=10.x.x.254 GATEWAY=10.x.x.

Mensajería OpenFire: Instalación y Configuración

Exportamos una nueva OVA de DEBIAN. Configuramos su interfaz: # rm /etc/udev/rules.d/70-persistem-net.rules # reboot Preparamos la conexión remota: # apt-get install ssh #ifconfig -a Instalación paso a paso: $ ssh root@192.168.1.198 Necesitaremos en la instalación de  mensajería   OpenFire : Servidor LAMP •           Linux •           Apache •           MySQL •           PHP phpadmin y Java # apt-get install apache2 php5 mysql-server phpmyadmin # apt-get install openjdk-6-jdk Descarga y puesta en funcionamiento de OpenFire: # wget http://download.igniterealtime.org/openfire/openfire_3.9.1_all.deb # dpkg -i openfire_3.9.1_all.deb Para saber que está funcionando: # netstat -putan|grep java Voy al navegador de mi máquina REAL y pongo la IP:8080, en mi caso, 192.168.1.198:9090 No se recomienda que se use la Base de Datos internas

pfsense: Proxy Squid3 instalación y configuración

Nuestra máquina de pfsense con 2 adaptadores , uno en adaptador puente y otra en solo anfitrión: Me conecto desde el interfaz anfitrión al pfsense desde el navegador: Nos movemos a: System / Package/Available Packages/instalamos squid3 Service / Proxy server Configuramos en la pestaña de General las siguientes opciones: LAN Proxy Port: 3128 Allow users on interface(picado) Transparent Proxy(picado) Enabled logging(picado) Log Store Directory: /var/squid/logs Administrator email: email administrador Language: es SAVE Nos aseguramos que squid está corriendo: Status / Service Con esta configuración debemos tener internet en nuestro cliente Windows. RESTRICCIONES Y PERMISOS Podemos configurar las restricciones en la pestaña Service / Proxy server / (pestaña)ACLs Por ejemplo, restringimos el acceso a google.es: En Service / Proxy server / Local Cache o

FireWall de PFsense: NAT

NAT Network address transletion - Traducciones de direcciones de red Se diferencia de la tabla filter, que con estas reglas se redirecciona. Si queremos que nuestro servidor web de servicio al exterior, tiene una dirección interna, pero si sale con esta IP, al salir se corta la IP. Que el router coja esta IP interna de este servidor Web y la cambie por la IP publica del route se llama NAT. Esto que hace el router automáticamente es lo que vamos a hacer ahora. SNAT: source NAT(origen) DNAT: destination NAT(destino) SNAT, cambiamos el origen. Windows manda el paquete y llega a pfsense, y este cambia el origen PAQUETE: origen: wXP (192.168.56.2) ↔ WAN (80.21.21.21) destino: google.es DNAT, cambiamos el destino Queremos dar servicio web, pero mi servidor esta en una red privada, en la 10.0.0.2. Al dar la IP de mi WAN, debo hacer que llegue a mi servidor. Cada vez que llegue un paquete a la Wan al puerto, en este caso, 80, l

FireWall de PFsense: Reglas de Filtro 1/3

FILTER RULES (Reglas de Filtro) Para instalar el PFsense te recuerdo el enlace donde se explica en mi blog: http://mjesussuarez.blogspot.com.es/2013/12/instalacion-y-uso-de-pfsense.html A partir de este punto, entramos en PFsense a partir de la IP LAN: 192.168.56.2 Las 2 opciones mas interesantes de ver sobre cortafuegos en PFsense es NAT y Rules . Aunque usaremos también los Aliases . Dentro de interfaces tenemos LAN y WAN, pero también podemos asignar interfaces, como por ejemplo una zona demilitarizada(DMZ) para alojar en esta rama un Servidor Web . Para crear una interfaz nueva debemos ir a Interfaces / assign / VLANs . Pero que es una VLAN . Significa que físicamente están todas las redes unidas, pero Virtualmente se han formado LANs independientes y que no se ven unas a otras, o si se ven, pero están separadas virtualmente como si estuvieran separadas de forma física. Pero este tema lo trataremos mas adelante, ahora haremos