martes, 15 de noviembre de 2011

Cómo comprobar que un certificado y una clave son válidos entre ellos .

Un error muy común cuando estamos jugando con certificados, es el siguiente error de apache:
Unable to configure RSA server private key.

Con las siguientes líneas podemos comprobar si la llave y el cerrojo coinciden.

En este caso vemos que las dos salidas son idénticas.

# openssl x509 -noout -modulus -in /etc/apache2/ssl.crt/s1.laboratorioº.crt | openssl md5; openssl rsa -noout -modulus -in /etc/apache2/ssl.key/s1.laboratorio.key | openssl md5 
(stdin)= b794568953e47032ad95288516847d49
(stdin)= b794568953e47032ad95288516847d49

domingo, 3 de julio de 2011

Cómo copiar los datos y el esquema de una base de datos en postgresql?

Para hacer un backup en postgresql de una base de datos, sólo tendremos que invocar la siguiente orden:

pg_dump -c NOMBRE_DE_LA_BD > ARCHIVO.sql

jueves, 2 de junio de 2011

Instalar eclipse C/C++ en ubuntu

Vamos a ver que fácil es instalar el IDE, eclipse y sus correspondientes plugins para desarrollar aplicaciones en C y C++.

Primero instalaremos eclipse.
$sudo apt-get install eclipse

Después necesitaremos instalar el plugin correspondiente, que en éste caso es el módulo CDT.
$sudo apt-get install eclipse-cdt


Con estas líneas tendremos eclipse preparado para desarrollar nuestras aplicaciones en C y C++.

viernes, 27 de mayo de 2011

Hola mundo en C con Ubuntu

Veremos cómo hacer nuestro primer programa en C, configurando su Makefile y utilizando Ubuntu.
Con un fichero Makeefile tendremos una sencilla forma de organizar la compilación de nuestros ficheros. Lo haremos con un ejemplo sencillo.

Lo primero que haré será crear un directorio que lo llamaremos Hola_Mundo dentro del directorio home, luego crearemos los siguientes tres ficheros en el directorio Hola_Mundo.
hellomake.c, hellofunc.c y hellomake.h
$ mkdir Hola_Mundo
$ cd Hola_Mundo/
$ touch holamake.c
$ touch holafunc.c
$ touch holamake.h
Abriremos cada uno de los ficheros y escribiremos el siguiente código.

holamake.c
#include 

int main() {
  // Llama a una función en otro fichero
  PrintHola();

  return(0);
}

holafunc.c
#include 

void PrintHola(void) {

  printf("Hola Mundo!!\n");

  return;
}

holamake.h
/*
incluimos un fichero
*/

void myPrintHello(void);

Para compilar este código, sólo tendremos que ejecutar la siguiente orden:
gcc -o holamake holamake.c holafunc.c -I.
Con este coman compilaremos los ficheros .c y crearemos un ejecutable que se llamará holamake. Con la opción -I decimos el directorio donde debe buscar gcc y con . decimos que en el directorio actual.

Si nos fijamos, con este sistema de compilación, nos podemos encontrar problemas cuando el proyecto crezca, esta herramienta se nos quedará pequeña.

Un primer paso para crear nuestro Makefile y hacer que sea más sencilla la compilación de nuestro proyecto.
CC=gcc
CFLAGS=-I.

holamake: holamake.o holafunc.o 
  $(CC) -o holamake holamake.o holafunc.o  $(CFLAGS)
Ahora cuando invoquemos la orden
make holamake
nos creará el ejecutable holamake según las reglas definidas en el fichero Makefile

sólo nos quedará ejecutar
./holamake

Por consola Nos mostrará

Hola Mundo!!

jueves, 5 de mayo de 2011

Script Bash para modificar algunas opciones de .bashrc

Presentamos un script en bash para modificar algunas propiedades del fichero .bashrc

#!/bin/bash 


function menu(){
echo "1. Cambia HISTCONTROL"
echo "2. Cambia HISTSIZE"
echo "3. Cambia UMASK"
echo "4. Cambia alias"
echo "5. Salir"
}

function cambia_historycontrol(){
 echo "Introduce el nuevo valor de HISTCONTROL"

 read hist
 rep=`cat $1'/.bashrc'  | grep HISTCONTROL | wc -l`
 if [ rep -eq 0 ]
 then
  echo 'HISTCONTROL='$hist >> $1'/.bashrc'  #añadimos al final
 else
  sed 's/HISTCONTROL=.*/HISTCONTROL='$hist'/' $1'/.bashrc' > $1'/.bashrc' #modificamos su valor
 fi
}

function cambia_historysize(){
 echo "Introduce el nuevo valor de HISTSIZE"
 read hist
 rep=`cat $1'/.bashrc'  | grep HISTSIZE | wc -l`
 if [ rep -eq 0 ]
 then
  echo 'HISTSIZE='$hist >> $1'/.bashrc' #añadimos al final
 else
  sed 's/HISTSIZE=.*/HISTSIZE='$hist'/' $1'/.bashrc' > $1'/.bashrc' #modificamos su valor
 fi
}

function cambia_umask(){
 echo "Introduce el nuevo valor de UMASK"
 read mask
 rep=`cat $1'/.bashrc'  | grep $mask | wc -l`
 if [ $rep -eq 0 ]
 then
  echo 'umask='$mask >> $1'/.bashrc' #añadimos al final
 else
  sed 's/umask=.*/umask='$mask'/' $1'/.bashrc' > $1'/.bashrc' #modificamos su valor
 fi
}

function cambia_alias(){
 echo "Introduce un alias"
 read alia
 num=`cat $1'/.bashrc'  | grep '^'$alia | wc -l`
 if [ $num -le 9]
 then
  rep=`cat cpbash | grep '^'$alia | wc -l`
  if [ rep -eq 0 ]
  then
   echo 'alias='$alia >> $1'/.bashrc' #añadimos al final
  else
   sed 's/alias=.*/umask='$mask'/' $1'/.bashrc' > $1'/.bashrc' #modificamos su valor
  fi
 else
  echo "ya tenemos mas de 10 alias"
 fi
}


#Introduce el path donde deseas modificar el fichero .bashrc
var='ko'
while [ $var = 'ko' ]
do

 echo "Introduce el path"
 read path

 if [ -d $path ]
 then
  echo "Correcto"
  while true
  do
   menu
   echo "elegir opcion"
   read opcion
   case $opcion in
    "1")cambia_historycontrol $path;;
    "2")cambia_historysize $path;;
    "3")cambia_umask $path;;
    "4")cambia_alias $path;;
    "5")exit;;
    *)echo "Opcion de 1 a 5";;
   esac
  done
  var='ok'
 else
  echo "La ruta indicada no existe"
  var='ko'
 fi

done

Monitorizar el uso del disco por particiones, el comando df

Con el comando df podemos monitorizar el uso por particiones. O lo que es lo mismo, consultar la información sobre la utilización del espacio en disco para las distintas particiones del sistema.
$ df [OPCIÓN]... [SISTEMA ARCHIVOS]...
Si utilizamos el comando df sin opciones
$ df
S.archivos         Bloques de 1K   Usado    Dispon Uso% Montado en
/dev/sda1            144252592   6399452 130525448   5% /
none                   1525900       288   1525612   1% /dev
none                   1531504       200   1531304   1% /dev/shm
none                   1531504       244   1531260   1% /var/run
none                   1531504         0   1531504   0% /var/lock
/dev/sda6            159564484 148233924   3225140  98% /home
Algunas opciones interesantes para usar con el comando df.

-h --human-readable

Imprimir los tamaños de forma más legible para humanos.
df -h
S.archivos            Tam.  Usado Disp. % Uso Montado en
/dev/sda1             138G  6,2G  125G   5% /
none                  1,5G  288K  1,5G   1% /dev
none                  1,5G  200K  1,5G   1% /dev/shm
none                  1,5G  244K  1,5G   1% /var/run
none                  1,5G     0  1,5G   0% /var/lock
/dev/sda6             153G  142G  3,1G  98% /home

-a, --all Incluye los pseudo sistemas de archivos

df -ha
S.archivos            Tam.  Usado Disp. % Uso Montado en
/dev/sda1             138G  6,2G  125G   5% /
proc                     0     0     0   -  /proc
none                     0     0     0   -  /sys
fusectl                  0     0     0   -  /sys/fs/fuse/connections
none                     0     0     0   -  /sys/kernel/debug
none                     0     0     0   -  /sys/kernel/security
none                  1,5G  288K  1,5G   1% /dev
none                     0     0     0   -  /dev/pts
none                  1,5G  200K  1,5G   1% /dev/shm
none                  1,5G  244K  1,5G   1% /var/run
none                  1,5G     0  1,5G   0% /var/lock
/dev/sda6             153G  142G  3,1G  98% /home
binfmt_misc              0     0     0   -  /proc/sys/fs/binfmt_misc

-i

Informar sobre la utilización de los i-nodos

df -hi
S.archivos            Inodes   IUsed   IFree IUse% Montado en
/dev/sda1               8,8M    288K    8,5M    4% /
none                    208K     813    207K    1% /dev
none                    210K       6    210K    1% /dev/shm
none                    210K      69    210K    1% /var/run
none                    210K       2    210K    1% /var/lock
/dev/sda6               9,7M    232K    9,5M    3% /home

martes, 3 de mayo de 2011

Cómo copiar directorios de forma recursiva con el comando SCP

Si queremos copiar carpetas entre distintos servidores el comando scp nos será de gran utilidad.

Tan solo debemos tipear lo siguiente:
$ scp user@servidor.com:/home/user/www /home/user/www
Con esto, estamos copiando la carpeta www del servidor remoto, a nuestro pc o otro servidor.
Si queremos copiar todos los ficheros que se contengan en la carpeta www, deberemos añadir la opción -r. Así todo se copiará de manera recursiva.
$ scp -r user@servidor.com:/home/user/www /home/user/www
Un detalle que quizá os encontréis es que el servidor escucha en un puerto diferente del 22. En ese caso podemos indicarle el puerto con que se comunica con la opción -P, quedando de la siguiente manera.
$ scp -P 2022 -r user@servidor.com:/home/user/www /home/user/www

domingo, 1 de mayo de 2011

Instalación y configuración de Postgres en Debian

Instalación

La instalación es muy sencilla:
$ apt-get install postgresql
Configuración

La instalación nos ha creado un usuario y grupo 'postgres'. El usuario postgres se crea sin contraseña. Por lo que deberemos logearnos como root
$ su
y nos logamos como postgres
$ su postgresql
tipeamos:
$ psql
y crearemos un nuevo usuario:
postgres=# CREATE USER usuario WITH PASSWORD 'password';

Con esto tendremos instalado postgres y creado un nuevo usuario.

viernes, 8 de abril de 2011

Instalación de Java en Ubuntu

Cuando queremos instalar Java tenemos dos opciones:
  • Java Runtime Environment (JRE): Éste paquete contiene la máquina virtual de Java que nos permitirá aplicaciones Java en nuestro ordenador.
  • Java Development Kit (JDK):  Éste paquete contiene el JRE y además el JDK, que nos permitirá desarrollar aplicaciones Java.
Si no quieres desarrollar aplicaciones tendrás suficiente con JRE:
$ sudo apt-get install sun-java6-jre


Para JDK:

$ sudo apt-get install sun-java6-jdk




Y ya tenemos Java instalado.

miércoles, 6 de abril de 2011

Cómo conectar Postgres y Python en Ubuntu

Suponemos que tenemos instalado postgresql y python. Aquí vamos a utilizar la clásica interfaz PyGreSQL que nos proporciona el módulo pg de python.

A parte de postgresql, vamos a necesitar estos dos paquetes:
$ sudo apt-get install python-dev
$ sudo apt-get install build-essential

Y por último
$ sudo easy_install PyGreSQL
Con ésto, deberíamos poder crear nuestro script, y conectarnos a la base de datos postgresql.

Lo probamos, debemos tener una base de datos creada así cómo una tabla y algún dato que recuperar.
#!/usr/bin/env python

import pg

usuario = 'usuario'
base = 'nombre_base_de_datos'
passw = 'password'
conecta = pg.connect(dbname=base,user=usuario,passwd=passw)
consulta = 'select * from nombre_tabla'
resultado = conecta.query(consulta)
print resultado
conecta.close()   
Si todavía no hemos configurado la lista de acceso, nos mostrará un error como éste:
FATAL: la autentificación Ident falló para el usuario «x»

en ese caso éste será el momento de configurar la lista de autenticación. Ésto lo encontramos en la ruta: /etc/postgresql/8.4/main/pg_hba.conf

Editamos el fichero
sudo nano /etc/postgresql/8.2/main/pg_hba.conf
y modificamos la siguiente línea,
# "local" is for Unix domain socket connections only
local all all ident
por
# "local" is for Unix domain socket connections only
local all all md5

Ejecutamos
python conectdb.py

Con ésto tenemos una conexión a la base de datos, recogemos la consulta y la mostramos por pantalla.

martes, 5 de abril de 2011

Instalación de Postgresql

Lo primero que debemos hacer es instalar los paquetes correspondientes a Postgresql


sudo apt-get install postgresql-8.4 postgresql-client-8.4


Con esto se nos habrá creado un nuevo usuario llamado postgres, y lo primero que debemos hacer es cambiarle la contraseña.

sudo passwd -d postgres

Después de esto, ya podemos inciar una nueva base de datos de la siguiente manera. Iniciamos sesión con el usuario postgres y le indicamos que entre en la instacia de la base de datos.

sudo su postgres -c psql template1

Observaremos que el prompt ha cambiado y ahora pone, template1=#, aquí modificaremos el password de postgres para el usuario postgres de la base de datos.

template1=#ALTER USER postgres WITH PASSWORD `password´;

A partir de éste momento, ya podemos crear nuevos usuarios, instancias de bases de datos...

viernes, 1 de abril de 2011

Instalación de Virtualbox Puel

Primero descargamos el paquete que corresponda con tu distribución, en mi caso, Ubuntu 10.10.


wget http://download.virtualbox.org/virtualbox/4.0.4/virtualbox-4.0_4.0.4-70112~Ubuntu~maverick_i386.deb

Seguidamente sólo debemos tipear lo siguiente.


sudo dpkg -i virtualbox-4.0_4.0.4-70112~Ubuntu~maverick_i386.deb

Con esto tendremos instalado virtualbox, más adelante veremos cómo montar una máquina virtual y configurarla.

Convertir mdf a iso con ubuntu

Abrimos una consola e instalamos el paquete mdf2iso


sudo apt-get install mdf2iso

Después sólo deberemos indicar la imagen mdf y el formato de salida .iso

mdf2iso imagen.mdf imagen.iso