lunes, 28 de noviembre de 2011

php,exec() y pipes

0 comentarios, Publicado por Covent en 14:21 ,
En php, hay varias funciones que ejecutan comandos directamente en la máquina donde se aloja la página php. Entre estas funciones están exec(), shell_exec() y system(). Todas ellas funcionan, pero no esperes hacer cosas demasiado complejas, como utilizar pipes ya que no funcionará ninguna.

Tras mucho buscar en Google he visto una referencia que puede ayudarte, pero solamente si el grado de complejidad no es demasiado elevado.

El siguiente código muestra la salida del comando ls -la | grep mydir

//ls -a | grep mydir

$proc_ls = proc_open("ls -a",
  array(
    array("pipe","r"), //stdin
    array("pipe","w"), //stdout
    array("pipe","w")  //stderr
  ),
  $pipes);

$output_ls = stream_get_contents($pipes[1]);
fclose($pipes[0]);
fclose($pipes[1]);
fclose($pipes[2]);
$return_value_ls = proc_close($proc_ls);


$proc_grep = proc_open("grep mydir",
  array(
    array("pipe","r"), //stdin
    array("pipe","w"), //stdout
    array("pipe","w")  //stderr
  ),
  $pipes);

fwrite($pipes[0], $output_ls);
fclose($pipes[0]); 
$output_grep = stream_get_contents($pipes[1]);

fclose($pipes[1]);
fclose($pipes[2]);
$return_value_grep = proc_close($proc_grep);


print $output_grep;
?>

Más información sobre proc_open()  aqui




Si esta información te ha sido de ayuda pincha en mis anuncios. Nos ayudamos mutuamente. Gracias

viernes, 18 de noviembre de 2011

Como mostrar los últimos 15 minutos de un log

0 comentarios, Publicado por Covent en 13:05 ,
Probado en AIX

#!/bin/bash

NOW=$( date '+%s' )
REF=$(( $NOW - 15*60 )) ##previous 15 minute

while read MONTH DAY HMS A4 ; do

TIMESTAMP=$(date --date "${MONTH} ${DAY} ${HMS}" '+%s')
if [[ "$TIMESTAMP" -ge "$REF" ]] ; then
echo "${MONTH} ${DAY} ${HMS} ${A4}"
fi

done < log_file






Si esta información te ha sido de ayuda pincha en mis anuncios. Nos ayudamos mutuamente. Gracias

viernes, 11 de noviembre de 2011

mount error 12 = Cannot allocate memory

0 comentarios, Publicado por Covent en 16:39 ,
mount error 12 = Cannot allocate memory es el error que se recibe en linux cuando intentas montar un directorio compartido de una maquina en windows.

¿Cómo demostrar que el error es de la máquina windows?
Muy fácil, procedemos a reproducir los errores y confirmamos el error.

Ejecutamos el comando para montar el directorio,

[root@ohmster ~]# mount -t cifs //missy/ohmster_music /mnt/test -o 
username=my_user,password=my_password,rw
mount error 12 = Cannot allocate memory
Refer to the mount.cifs(8) manual page (e.g.man mount.cifs)
[root@ohmster ~]#
Buscamos el error,

[root@ohmster samba]# tail -f /var/log/messages
Oct 23 21:15:40 ohmster kernel: CIFS VFS: cifs_mount failed w/return 
code = -12
Oct 23 21:19:43 ohmster kernel: Status code returned 0xc0000205 
NT_STATUS_INSUFF_SERVER_RESOURCES
Oct 23 21:19:43 ohmster kernel: CIFS VFS: cifs_mount failed w/return 
code = -12
[root@ohmster samba]#
El mensaje NT_STATUS muestra que la máquina basada en Windows causa el error no la máquina Linux

¿Cómo solucionarlo?
Una solución es la común para los problemas en windows... reiniciar...

Y si esa no te vale,

Busca en el Visor de Eventos de la máquina Windows, errores en la parte de Sistema con origen Srv. El error debe ser algo asi:

"El servidor no pudo asignar memoria desde el bloque no paginado del sistema porque alcanzó el límite configurado para ésta."

Si tienes este error debes modificar la siguiente clave del registro,

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanmanServer
\Parameters\IRPStackSize

Si existe alguna key incrementar en 15 ó 18. Si no existe crear un nuevo valor DWORD, nombrarlo
IRPStackSize. Doble click para editar el valor, marcar Decimales, dar un nuevo valor de 15 y reiniciar. Si no fuera suficiente aumentar a 18 y volver a reiniciar. El problema estará resuelto y el directorio podrá montarse sin problema.




Si esta información te ha sido de ayuda pincha en mis anuncios. Nos ayudamos mutuamente. Gracias

miércoles, 9 de noviembre de 2011

Como crear y eliminar VLANs en Cisco Catalyst Switch

4 comentarios, Publicado por Covent en 20:57 ,
Una de las actividades de configuración típica que vas a realizar en un switch Cisco es manipular las VLAN.

VLAN significa Red de área local virtual.

En un Switch Cisco, puedes crear múltiples VLANs que se conectan a diferentes redes.

Por ejemplo, una VLAN para la red 10.10.191.0, una VLAN para la red 10.10.192.0 y una VLAN para 10.10.193.0 .Las tres se pueden configurar en el mismo Switch.


CREAR UNA VLAN

Si estas planeando tener una sola red en el Switch (por ejemplo, 10.10.192.0). todos los puertos en el switch se conectará a la red 10.10.192.0, entonces no es necesario crear una red VLAN, sólo tiene que utilizar la VLAN 1.

Cada switch viene con la VLAN 1 como se muestra a continuación. En este ejemplo, todos los puertos de este switch (de 1 a 8) son parte de la VLAN 1.

#show vlan

VLAN Name       Status    Ports
---- -------------------------------- --------- ------------
1    default    active    Gi1/0/1, Gi1/0/2, Gi1/0/3, Gi1/0/4
                          Gi1/0/5, Gi1/0/6, Gi1/0/7, Gi1/0/8
En el siguiente ejemplo, creamos la VLAN 192 (red 10.10.192.0). Es necesario especificar el rango de puertos del switch que forman parte de esta VLAN.

En este ejemplo, los puertos del 3 al 6 se configuran como parte de la VLAN 192.

config t
vlan 192
interface range gigabitEthernet 1/0/3-6
switchport access vlan 192
exit
Además de proporcionar el acceso a la VLAN 192 para los puerto del 3 al 6, también puede especificar los siguientes parámetros de configuración adicionales switchport (por ejemplo, nonegotiate y modo de acceso)

config t
interface range gigabitEthernet 1/0/3-6
switchport mode access
switchport nonegotiate
exit
Una vez creada la VLAN se puede comprobar con el siguiente comando,
#show vlan

VLAN Name       Status    Ports
---- -------------------------------- --------- ------------
1    default    active    Gi1/0/1, Gi1/0/2, Gi1/0/7, Gi1/0/8
192  VLAN0192   active    Gi1/0/3, Gi1/0/4, Gi1/0/5, Gi1/0/6

BORRAR UNA VLAN
Supongamos que desea eliminar la VLAN 192 que acaba de crear.

Eliminar una VLAN es muy sencillo. Basta con introducir el siguiente comando que hace referencia la VLAN que queremos eliminar,

no vlan 192
Verificamos que se ha borrado correctamente,
#show vlan

VLAN Name       Status    Ports
---- -------------------------------- --------- ------------
1    default    active    Gi1/0/1, Gi1/0/2, Gi1/0/3, Gi1/0/4
                          Gi1/0/5, Gi1/0/6, Gi1/0/7, Gi1/0/8




Si esta información te ha sido de ayuda pincha en mis anuncios. Nos ayudamos mutuamente. Gracias

AWK. Como extraer texto entre patrones.

0 comentarios, Publicado por Covent en 20:04 ,
Con la siguiente línea podemos extraer todo el texto que se encuentre entre dos patrones, inicio (start) y fin (end) a partir del archivo "inputfile" generando el de salida "outputfil"


cat inputfile | awk '/start/,/end/ { print }' > outputfile




Si esta información te ha sido de ayuda pincha en mis anuncios. Nos ayudamos mutuamente. Gracias