CGI en C

7 06 2008

Para los que ya tienen instalado apache y quieren trabajar con CGI es necesario hacer un pequeña pero muy importante modificacion en el archivo apache2.conf.

El archivo apache2.conf se encuentra en /etc/apache2/ y en él debemos agregar lo siguiente :
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>

Luego de esto es debemos reiniciar apache :
sudo /etc/init.d/apache2 restart

Ahora ya estamos en condiciones de hacer nuestro hola mundo en CGI.
Creamos un archivo llamado hello.c en el cual escribimos lo siguiente :
int main (){
printf("Content-Type: text/html\n\n");
printf("Hola Mundo\n");
return( 0 );
}

lo compilamos de la siguiente manera :
gcc hello.c .-o hello.cgi

Luego lo copiamos a la carpeta /usr/lib/cgi-bin, es en esta carpeta donde se deben guardar nuestros ejecutables cgi.
sudo cp hello.cgi /usr/lib/cgi-bin
le damos permisos de ejecucion
cd /usr/lib/cgi-bin
sudo chmod 755 hello.cgi

ya con esto tenemos listo nuestra prueba.
En estos momentos se deben cruzar los dedos y tener mucha fé, luego con mucho cuidado ir al navegador y poner :
localhost/cgi-bin/hello.cgi

y magicamente y como nadie se lo esperaba nos aparecerá un granadisimo «hola mundo» 😀





Problema con script : /bin/bash: intérprete incorrecto: Permiso denegado

16 04 2008

Un error, no se si tan recurrente, pero que me ha quitado algunos minutos en encontrar una solucion, ya que no estan obvia, pero si es sencilla 😛
Paso a explicar mi problema :
creo el «hola mundo» en un script :
vim hello.sh
Lo escribo :
#!/bin/bash
echo "hola mundo desde bash"

Luego le doy los permisos de ejecución:
chmod +x hello.sh
Y al ejecutarlo, viene la gran sorpresa :
./hello.sh
me dá como respuesta :
bash: ./hello.sh: /bin/bash: intérprete incorrecto: Permiso denegado
:O :O :O
Obviamente no era problema de los permisos del archivo, ya que los habia cambiado durante el proceso :S, tampoco era problema de los permisos de la bash ya que al hacer :
/bin/bash < hello.sh
Lo ejecuta normalmente.

Finalmente, el problema es el disco en cual estamos ejecutando el script, al cambiar de directorio ( a otra particion) ya no hubo problema, pronto espero encontrar la forma de poder ejecutar el script en al particion que desee, por el momento tendré que trabajar en otra particion :S

Saludos.





Ejecutar comando de shell desde C

30 01 2008

Hay ocaciones en que ejecutar un comando nativo del sistema, o mejor dicho un comando reconocido por nuestra shell, nos facilita mucho la vida….

Bueno, no para todos es tan obvio como hacer esto, asi que aca voy a dejar registrado como realizar esta sencilla operacion 😉

El formato es simple 😀
system("comando que quieras");

Aqui dejo un sencillisimo ejemplo, primero creamos un archivo llamado myls.c y dentro de él ponemos el siguiente codigo:

#include<stdio.h>
int main(){
system("ls -l");
return 0;
}

Al copiar y pegar el codigo va a tener un problemas con las comillas, asi que las tienen que poner denuevo 😀

Para compilar hacemos lo siguiente:
gcc myls.c -o myls

y finalmente para ejecutarlo, hacemos lo siguiente :

./myls

Al ejecutar este programa , será lo mismo que ejecutar en la consola el comando «ls -l» ( sin comillas).

Saludos