lunes, 11 de julio de 2011

Squid es el software para servidor Proxy



Squid es el software para servidor Proxy, más popular y extendido entre los sistemas operativos basados sobre UNIX®. Es muy confiable, robusto y versátil. Al ser software libre, además de estar disponible el código fuente, está libre del pago de costosas licencias por uso o con restricción a un uso con determinado número de usuarios.

¿Como funciona este servicio?

Existen dos tipos de servidores proxy

Servidores proxy de aplicación
Servidores proxy SOCKS
Servidor Proxy de Aplicación: Con un servidor proxy de aplicación el proceso se automatiza. El servidor proxy establece la comunicación con el servidor que ha solicitado (el mundo exterior) y le devuelve los datos.

Servidor Proxy de Socks: Se parece bastante a un panel de conmutación. Tan sólo establece la conexión entre su sistema y otro sistema externo. La mayoría de los servidores SOCKS presentan el inconveniente de que sólo trabajan con conexiones del tipo TCP y como cortafuegos no suministran autenticación para los usuarios. Sin embargo, su ventaja es que registran los sitios a los que cada usuario se ha conectado.

¿Cuales son los beneficios al instalar un servidor Proxy en Linux?

Acceso transparente a Internet, por medio de cualquier programa, y a cualquier servicio (Netscape, Opera, Internet Explorer, CuteFTP...).
Mayor velocidad en la navegación: aquellas páginas que hayan sido visitadas serán guardadas en el servidor para que no haya que solicitarlas de Internet salvo que hayan cambiado.
Optimización de uno o varios accesos ADSL que disponga.
Posibilidad de un control absoluto de los accesos a Internet, por fecha, hora, lugar, e incluso persona.
Capacidad de control de Paginas prohibidas
¿Software Requerido?

Squid-2.6
Httpd-2.0.x (Apache)
Todos los parches de seguridad disponibles para la versión del sistema operativo que esté utilizando.
¿Hardware Requerido?

Requerimientos minimos:
Servidor a 250 Mhz, 256 MB RAM, 8 GB disco duro

¿Donde puedo encontrar mayor información?:

SQUID

VSFTPD PROGRAMA



FTP (File Transfer Protocol) o Protocolo de Transferencia de Archivos (o ficheros informáticos) es uno de los protocolos estándar más utilizados en Internet siendo el más idóneo para la transferencia de grandes bloques de datos a través de redes que soporten TCP/IP. El servicio utiliza los puertos 20 y 21, exclusivamente sobre TCP. El puerto 20 es utilizado para el flujo de datos entre cliente y servidor. El puerto 21 es utilizando para el envío de órdenes del cliente hacia el servidor. Prácticamente todos los sistemas operativos y plataformas incluyen soporte para FTP, lo que permite que cualquier computadora conectada a una red basada sobre TCP/IP pueda hacer uso de este servicio a través de un cliente FTP.
VSFTPD (Very Secure FTP Daemon) es un sustento lógico utilizado para implementar servidores de archivos a través del protocolo FTP. Se distingue principalmente porque sus valores por defecto son muy seguros y por su sencillez en la configuración, comparado con otras alternativas como Wu-ftpd. Actualmente se presume que VSFTPD es quizá el servidor FTP más seguro del mundo.

Sustento lógico necesario.




yum -y install vsftpd

Ficheros de configuración.

/etc/vsftpd.user_list
Lista que definirá usuarios a enjaular o no a enjaular, dependiendo de la configuración.
/etc/vsftpd/vsftpd.conf
Fichero de configuración.

Procedimientos.

Utilice un editor de texto y modifique el fichero /etc/vsftpd/vsftpd.conf. A continuación analizaremos los parámetros a modificar o añadir, según serequiera para necesidades particulares.

Parámetro anonymous_enable.

Se utiliza para definir si se permitirán los accesos anónimos al servidor. Establezca como valor YES o NO de acuerdo a lo que se requiera.



anonymous_enable=YES

Parámetro local_enable.

Es particularmente interesante si se combina con la función de jaula (chroot). Establece si se van a permitir los accesos autenticados de los usuarios locales del sistema. Establezca como valor YES o NO de acuerdo a lo que se requiera.



local_enable=YES

Parámetro write_enable.

Establece si se permite el mandato write (escritura) en el servidor. Establezca como valor YES o NO de acuerdo a lo que se requiera.



write_enable=YES

Parámetro ftpd_banner.

Este parámetro sirve para establecer el banderín de bienvenida que será mostrado cada vez que un usuario acceda al servidor. Puede establecerse cualquier frase breve que considere conveniente.



ftpd_banner=Bienvenido al servidor FTP de nuestra empresa.

Estableciendo jaulas para los usuarios: parámetros chroot_local_user y chroot_list_file.

De modo predeterminado los usuarios del sistema que se autentiquen tendrán acceso a otros directorios del sistema fuera de su directorio personal. Si se desea recluir a los usuarios a solo poder utilizar su propio directorio personal, puede hacerse fácilmente con el parámetro chroot_local_user que habilitará la función de chroot() y los parámetros chroot_list_enable y chroot_list_file para establecer el fichero con la lista de usuarios que quedarán excluidos de la función chroot().



chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/vsftpd.chroot_list

Con lo anterior, cada vez que un usuario local se autentique en el servidor FTP, solo tendrá acceso a su propio directorio personal y lo que este contenga. No olvide crear el fichero /etc/vsftpd/vsftpd.chroot_list, ya que de otro modo no arrancará el servicio vsftpd.



touch /etc/vsftpd/vsftpd.chroot_list

Control del ancho de banda.

Parámetro anon_max_rate.

Se utiliza para limitar la tasa de transferencia en bytes por segundo para los usuarios anónimos, algo sumamente útil en servidores FTP de acceso público. En el siguiente ejemplo se limita la tasa de transferencia a 5 Kb por segundo para los usuarios anónimos:



anon_max_rate=5120

Parámetro local_max_rate.

Hace lo mismo que anon_max_rate, pero aplica para usuarios locales del servidor. En el siguiente ejemplo se limita la tasa de transferencia a 5 Kb por segundo para los usuarios locales:



local_max_rate=5120

Parámetro max_clients.

Establece el número máximo de clientes que podrán acceder simultáneamente hacia el servidor FTP. En el siguiente ejemplo se limitará el acceso a 5 clientes simultáneos.



max_clients=5

Parámetro max_per_ip.

Establece el número máximo de conexiones que se pueden realizar desde una misma dirección IP. Tome en cuenta que algunas redes acceden a través de un servidor proxy o puerta de enlace y debido a esto podrían quedar bloqueados innecesariamente algunos accesos. en el siguiente ejemplo se limita el número de conexiones por IP simultáneas a 5.



max_per_ip=5

Aplicando los cambios.

A diferencia de otros servicios FTP, VSFTPD no requiere configurarse como servicio sobre demanda. Por lo tanto no depende de servicio xinetd. La versión incluida en distribuciones como Red Hat™ Enterprise Linux 3.0 y White Box Enterprise Linux 3.0 puede inicializarse, detenerse o reinicializarse a través de un guión similar a los del resto del sistema. De modo tal, podrá inicializarse, detenerse o reinicializarse a través del mandato service y añadirse al arranque del sistema en un nivel o niveles de corrida en particular con el mandato chkconfig.
Para ejecutar por primera vez el servicio, utilice:



service vsftpd start

Para hacer que los cambios hechos a la configuración surtan efecto, utilice:



service vsftpd restart

Para detener el servicio, utilice:



service vsftpd stop

Para añadir VSFTPD al arranque del sistema en todos los niveles de corrida, utilice:



chkconfig vsftpd on

Modificaciones necesarias en el muro cortafuegos.

Si se utiliza un cortafuegos con políticas estrictas, como por ejemplo Shorewall, es necesario abrir los puerto 20 y 21 por TCP (FTP-DATA y FTP, respectivamente).
Las reglas para el fichero /etc/shorewall/rules de Shorewall correspondería a algo similar a lo siguiente:



#ACTION SOURCE DEST PROTO  DEST  SOURCE
#    PORT  PORT(S)1
ACCEPT net fw tcp 20,21
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE

INSTALAR SERVIDOR FTP


Uno de los servicios más antiguos de InternetFile Transfer Protocol permite mover uno o más archivos con seguridad entre distintos ordenadores proporcionando seguridad y organización de los archivos así como control de la transferencia.
La seguridad se ha convertido en un tema candente. Durante años, los servidores ftp comunicaban con los clientes "en abierto," es decir, que la información de la conexión y de la contraseña eran vulnerables a la interceptación. Ahora, los servidores ftp, tales como BulletProof FTP, SecureFTP, SurgeFTP, TitanFTP, y WS_FTP, soportan SSL/TLS y utilizan el mismo tipo de cifrado presente en los sitios web seguros. Con SSL/TLS, los servidores ftp pueden cifrar los comandos de control entre los clientes del ftp y el servidor, así como los datos del archivo. Con la ayuda del PGP, como en WS_FTP pro, los datos del archivo se aseguran todavía más con el cifrado público.


Cómo configurar tu servidor FTP desde línea de comandos en un sistema operativo Linux.
Atención: Contenido exclusivo de DesarrolloWeb.com. No reproducir. Copyright.
Para que nuestro Linux tenga la posibilidad de que se le conecten por FTP para realizar transferencia de ficheros, necesita tener instalado y configurado un servidor de FTP. En este artículo vamos a ver el modo de configurar un servidor de FTP por línea de comandos. No pasaremos a describir lo que es un servidor de FTP ya que en el tutorial de FTP ya lo explicamos.

Instalación del servidor FTP

Para instalarte un servidor FTP en Linux normalmente no necesitas ningún programa adicional ya que el servidor FTP suele venir con el sistema. Para los ejemplos que vamos a citar a continuación hemos utilizado el servidor FTP que viene con red hat 9.0

Para comenzar tendremos que instalarnos el paquete que contiene el servidor FTP que en este caso se llama Vsftpd 1.1.3-8, para lo cual ejecutaremos la siguiente instrucción:

rpm -ivh vsftpd 1.1.3-8

Configuración

Una vez instalados comenzaremos a configurarlo a nuestro gusto. Comenzaremos con la lista de usuarios que podrán tener acceso al servidor FTP:

Para configurar este parámetro necesitaremos abrir el archivo vsftpd.user.list que se encuentra en /etc/. En este archivo pondremos ver una lista con los usuarios que tienen acceso.

Pero en realidad el archivo más importante para la configuración del servidor es el vsftpd.conf que contiene todos los parámetros de configuración, entre otras cosas la ubicación de los archivos compartidos. Dentro de este archivo se encuentran los siguientes parámetros, que podemos modificar dependiendo del uso que le queramos dar.

anonymous.allow

Con este parámetros se habilita o deshabilita el usuario anónimo.
Anonymous.allow=trae (usuario anónimo habilitado)
Anonymous.allow=false (usuario anónimo deshabilitado)

Write_enable

Indica si una carpeta tiene permiso de escritura o no. En otras palabras indica si a una carpeta se la pueden subir archivos o no.
Write_enable=trae (si tiene permiso de escritura)
Write_enable=false (no tiene permiso de escritura)

ftpd_banner

Permite poner un mensaje de bienvenida a los usuarios cuando se conecten
ftpd_banner=mensaje

chroot_local_user

Permite o no a los usuarios locales el acceso a la maquina
chroot_local_user=trae
chroot_local_user=false

Para decirle al servidor fe FTP que usuarios tienen permiso para acceder tenemos que coger la ruta de el archivo antes comentado donde se encontraba la lista de usuarios (vsftpd.user_list)
Para ello en el archivo de configuración pondríamos algo como esto:
Chroot_list_file=/etc/vsftpd.user_list

Básicamente con estos comandos podrás configurar tu servidor FTP en Linux sin ningún problema.

Arrancar y detener el servidor de FTP

Ya solo nos queda arrancar el servidor para lo cual utilizaremos los siguientes comandos.

Para arrancar el servicio: /sbin/service vsftpd Stara

Para parar el servicio: /sbin/ service vsftpd stop

Para reiniciar el servicio: /sbin/service vsftpd restart 

domingo, 10 de julio de 2011

COMANDOS ADMINISTRATIVOS

Comando Netstat en Linux



COMANDO ROUTE

Route Com an Do Linux

IFCONFIG










Descargar archivo .. clic aquí

miércoles, 29 de junio de 2011

REDES LINUX 2

Servidores en Redes Linux

lunes, 27 de junio de 2011

PROCEDIMIENTOS O SCRIPTS


Una secuencia de comandos de Shell, usada muy frecuentemente, puede almacenarse en un fichero. El nombre del fichero puede ser usado más tarde para ejecutar la secuencia almacenada con un comando sencillo.

Variables: El usuario puede controlar la conducta del Shell, como también otros programas y utilidades, almacenando información en las variables.

Construcciones de programación: El Shell incluye características que permiten su uso como lenguaje de programación.

Tales características se pueden usar para construir los procedimientos que ejecuten operaciones complejas.

Caracteres especiales: echo : Esta orden sirve para imprimir una cadena de texto en la pantalla.


Definición de variables: Una vez definidas las variables guardan un valor que el usuario puede modificar para variar el comportamiento del Shell.

Para fijar un valor se teclea read  seguido de un espacio y el nombre de la variable que desea asignarle.


Mostrar el valor de la variable: El Shell detecta el carácter $ que le indica que lo que sigue es el nombre de una variable, reemplazando todo por su valor.


5.3 EJEMPLOS DE SCRIPTS EN SHELL

$ vi   programa_1
clear
echo “digite un nombre:”
read nom
clear
echo “mi nombre es:$nom”

:wq!
$ sh   programa_1

$ vi   programa_2
clear
tput cup 3 5; echo “ Entre un número: “
read num1
tput cup 4 5; echo “ Entre segundo número “
read num2
sum=`expr  $num1  +  $num2`
clear
tput cup 5 6;  echo  “ El  Total de la suma es:  $sum  “
:x
$ sh  programa_2

En el anterior ejemplo el programa añade las siguientes funciones.

1. tput cup fila columna: Posiciones de pantalla de filas y columnas

2. variable=`expr $variable  +  $variable`: Permite realizar operaciones matemáticas como por ejemplo sumas, restas, multiplicación, división.

Comparación entre números:

-eq  “ = “
-ne  “ <> “
-gt  “ >  “
-ge  “ >= “
-le   “ <= “
-lt   “ < “

Ejemplo:

Entrar dos números y decir cual es el mayor

$vi  programa_3
clear
echo “ entre un numero: “
read num1
echo  “ entre otro numero: “
read  num2

if   test  $num1 -gt  $num2
    then
        echo “ el mayor es $num1 “
     else
         echo “ el mayor es $num2 “
fi
:x
$ sh programa_3

Ejemplos de scripst:

1)

clear
echo -n    "Primer Numero: "
read     num1
echo -n    "Segundo Numero: "
read     num2
echo -n    "Tercer Numero: "
read     num3
clear
if     test    $num1   -ge    $num2   -a    $num2   -gt    $num3
       then
       tput   cup   15    5;echo   "El mayor es:   $num1"
       tput   cup   17   5;echo   "En orden ascendente:    $num3   $num2    $num1"

elif    test    $num1    -ge    $num3    -a    $num3    -gt    $num2
          then 
          tput    cup   15   5;  echo   "El mayor es:   $num1"
          tput    cup   17   5;  echo   "En orden ascendente:    $num2   $num3    $num1"

elif    test    $num2    -ge    $num1    -a    $num1    -gt    $num3
         then 
         tput    cup   15    5;   echo    "El mayor es:   $num2"
         tput    cup   17    5;   echo    "En orden ascendente:    $num3   $num1    $num2"

elif    test    $num2    -ge    $num3   -a    $num3   -gt    $num1
         then 
         tput   cup   15    5;  echo   "El mayor es:   $num2"
         tput   cup   17    5;  echo   "En orden ascendente:    $num1   $num3    $num2"

elif   test    $num3    -ge    $num2   -a    $num2   -gt    $num1
         then 
         tput   cup    15    5;   echo    "El mayor es:   $num3"
         tput   cup    17    5;   echo    "En orden ascendente:    $num1   $num2    $num3"

elif   test    $num3    -ge    $num1    -a    $num1    -gt    $num2
        then
        tput    cup   15    5;   echo    "El mayor es:   $num3"
        tput    cup   17    5;   echo    "En orden ascendente:    $num2   $num1    $num3"
fi

2) Leer 3 números imprimir cual es mayor, medio y menor

clear
echo "digite primer numero:\c"
read num1
echo "digite segundo numero:\c"
read num2
echo "digite tercer numero:\c"
read num3
if test $num1 -gt $num2
   then
   if test $num1 -gt $num3
      then
      may=$num1
      if test $num2 -gt $num3
         then
         med=$num2
         men=$num3
        else
         med=$num3
         men=$num2
       fi
else     
            may=$num3
            med=$num1
            men=$num2
    fi
     
 else
        if test $num2 -gt $num3
           then   
            may=$num2
                 if test $num1 -gt $num3
                     then
                      med=$num1
                      men=$num3
                      else
                      med=$num3
                      men=$num1
                  fi
                 else
            may=$num3
            med=$num2
            men=$num1
fi
fi
clear
tput cup 2 21;echo "El mayor es $may"
tput cup 4 21;echo "El mediano es $med"
tput cup 6 21;echo "El menor es $men"

3) Código para hallar números pares:

clear
tput   cup   3   20;echo     " NUMEROS PARES E IMPARES "
tput   cup   5   22;echo     -n   "DIGITE UN NUMERO: "
read num
myo=`expr    $num    %     2`
if   test    $myo    =    0
    then
    tput   cup   6   22;   echo    "$num ES NUMERO PAR"
     else
      tput   cup   7   22; echo     "$num ES NUMERO IMPAR"
fi


4)

clear
tput cup 1 10;tput smso;echo "Q U I N C E N A   D E   T R A B A J A D O R E S";
tput rmso
tput cup 3 1;echo "codigo empleado [          ]  apellido [              ]"
tput cup 3 18;tput smso;read cod ;tput rmso
tput cup 3 41;tput smso;read ape ;tput rmso
tput cup 5 1;echo "nombre empleado [                       ]"
tput cup 5 18;tput smso;read nom;tput rmso
tput cup 7 1;echo "basico [$            ] dias trabajados [  ]"
tput cup 7 10;tput smso;read bas;tput rmso
tput cup 7 41;tput smso;read "dias";tput rmso

if test $dias -le 30
   then
quin1=`expr $bas / 30`
quin2=`expr $quin1 \* $dias`
ret=0
if test $bas -le 900000
   then
    sub=`expr 30000 / 30`
    sub1=`expr $sub \* $dias`
     else
     sub1=0
fi
if test $bas -ge 900000 -a $bas -le 1199999
   then
    ret=12000
    elif test $bas -ge 1200000 -a $bas -le 1499999
         then
         ret=18000
    elif test $bas -ge 1500000 -a $bas -le 1799999
         then
         ret=24000
      elif test $bas -gt 1800000
         then
          ret=36000
    fi
    
      devengado=`expr $quin2 + $sub1`
     neto=`expr $devengado - $ret`
     tput cup 9 1;tput smso;echo "basico: $bas";tput rmso
     tput cup 11 1;tput smso;echo "quincena: $quin2";tput rmso
     tput cup 13 1;tput smso;echo "subsidio de trans: $sub1";tput rmso
     tput cup 15 1;tput smso;echo "retefuente: $ret";tput rmso
     tput cup 17 1;tput smso;echo "neto: $neto";tput rmso
else
if test $dias -ge 31
   then
   tput cup 19 4;echo "NO SE LE PUEDE PAGAR MAS DE 31 DIAS TRABAJADOS"
   sleep 2
   sh quin
fi
fi

Ejemplo de menu

clear
tput   cup   2   19;  echo   "MENU PRINCIPAL"
tput   cup   4   19;  echo   "1.  OPERACIONES"
tput   cup   5   19;  echo   "2.  MAYORES O MENORES 150"
tput   cup   6   19;  echo   "3.  TRES NUMEROS"
tput   cup   7   19;  echo   "4.  PARES O IMPARES"
tput   cup   8   19;  echo   "9.  SALIR"
tput   cup   9   19;  echo   "DIGITE OPCIÓN:[    ]  "
tput   cup   9   34;  read   op
if   test   $op   -eq   1
  then
   clear
   sh   operaciones
   sleep 5
fi
if   test   $op   -eq   2
   then
    clear
    sh   mayores
    sleep 5
fi
if   test   $op  -eq   3
  then
  clear
  sh   3num
  sleep 5
fi
if   test   $op   -eq   4
  then
  clear
  sh   pares
  sleep 5
fi
if   test   $op   -eq   5
  then
  clear
  exit
fi



EJEMPLO DE CICLO WHILE

clear
tput cup 4 5;echo "CODIGO"
tput cup 4 15;echo "NOMBRE"
tput cup 4 25;echo "ASIGNATURA"
tput cup 4 39;echo "NOTA1"
tput cup 4 48;echo "NOTA2"
tput cup 4 57;echo "NOTA3"
tput cup 13 39;echo "PROMEDIO:"
tput cup 7 5;read cod
tput cup 7 15;read nom
tput cup 7 25;read asi
tput cup 7 39;read not1
while test $not1 -gt 5 -o $not1 -lt 0
   do
   tput cup 16 5;echo "El valor de la nota debe ser de 0 a 5"
   tput cup 7 39;echo "   "
   tput cup 7 39;read not1
    if test $not1 -le 5 -o $not1=""
       then
       tput cup 16 5;echo "                                      "  
   fi  
  done
  tput cup 7 48;read not2
   while test $not2 -gt 5 -o $not2 -lt 0
       do
   tput cup 16 5;echo "El valor de la nota debe ser de 0 a 5"
   tput cup 7 48;echo "   "   
   tput cup 7 48;read not2 
   if test $not2 -le 5  
      then  
      tput cup 16 5;echo "                                       " 
    fi  
   done
   tput cup 7 57;read not3
     while test $not3 -gt 5 -o $not3 -lt 0  
           do   
           tput cup 16 5;echo "El valor de la nota debe ser de 0 a 5"  
           tput cup 7 57;echo "  "      
           tput cup 7 57;read not3 
           if test $not3 -le 5  
              then  
              tput cup 16 5;echo "                                       " 
           fi  
            done
           suma=`expr $not1 + $not2 + $not3`
           prome=`expr $suma / 3`
           tput cup 13 50;echo "$prome"
           if test $prome -ge 0 -a $prome -lt 3  
              then  
              echo "DEFICIENTE"
           fi
           tput cup 21 0;echo ""



EJEMPLO MENU CASE ARCHIVOS Y DIRECTORIOS

clear
tput cup 2 19;echo "ARCHIVOS Y DIRECTORIOS"
tput cup 3 19;echo "ENTRE UN NOMBRE:"
tput cup 3 35;read a
  if test -d $a
     then
     clear
     l -d $a
     tput cup 5 20;echo "DIRECTORIO EXISTENTE"
      sleep 4
exit
fi
    if test  -r $a
       then
     cat $a
     tput cup 19 19;echo "ARCHIVO EXISTENTE"
     sleep 6
exit
     else
       clear
      tput cup 3 20;echo "$a NO ES ARCHIVO NI DIRECTORIO"
      sleep 3
fi

clear
tput cup 5 19;echo "QUE DESEA CREAR?"
tput cup 7 19;echo "1. ====>>  ARCHIVOS"
tput cup 8 19;echo "2. ====>>  DIRECTORIOS"
tput cup 9 19;echo "OPCION DESEADA:"
tput cup 9 34;read op
case $op in

1)
  clear
  tput cup 4 20;echo "DESEA CREARLO SI O NO:"
  tput cup 4 42;read b
  if test $b = "s" -o $b = "S"
     then
     tput cup 4 20;echo "PARA GUARDAR, PRESIONAR LAS TECLAS <CTRL> + <D>"
     cat > $a
     l $a
      else
     tput cup 5 20;echo "NO FUE CREADO"
     sleep 3
fi
  sleep 2 ;;
2)
  clear
  tput cup 4 20;echo "DESEA CREARLO SI O NO:"
  tput cup 4 42;read b
  if test $b = "s" -o $b = "S"
     then
     mkdir $a
     l -d $a
      else
     tput cup 5 20;echo "NO FUE CREADO"
     sleep 3
fi
  sleep 2 ;;
esac

EJEMPLO SUBSTR Y LONGITUD

clear
cv=0
cn=0
c=1
l=0
echo   -n  "digite texto:  "
read    k
l=`expr    length    $k`
while     test   $c   -le    $l
      do
      t=`expr   substr   $k   $c   1`
     if   test  $t  =   "a"  -o  $t  =  "e"  -o  $t  =  "i" -o $t = "o" -o $t = "u"
        then
        cv=`expr   $cv   +    1`
         else
                 cn=`expr   $cn   +   1`
         fi
c=`expr   $c   +   1`
done
echo   "$k   tiene   $l   vocales   y   consonantes"
echo   "las  vocales son $cv"
echo   "las consonantes son $cn"

Compartir English Portuguese Spain