Introduzione
CGI ( Common gateway Interface ) è un'interfaccia tra il client Web e il server Web che esegue lo script/programma CGI. CGI è piuttosto vecchio ed è stato ampiamente sostituito da diversi linguaggi di programmazione come PHP, ecc. Tuttavia, può ancora trovare il suo posto nelle mani dell'amministratore di sistema Linux come strumento rapido per il monitoraggio e l'amministrazione del sistema tramite browser web. Questo articolo descrive passo dopo passo come eseguire script CGI di base con vari linguaggi di programmazione e script utilizzando il server Web Apache su Ubuntu Linux.
Installa Apache
Per prima cosa dobbiamo installare il server web apache. Questo è un compito abbastanza semplice e può essere raggiunto con apt-get comando:
$ sudo apt-get install apache2
Il comando precedente installerà il server Web Apache 2 con un sito predefinito situato in:/etc/apache2/sites-available/default. Quando apri questo sito di configurazione predefinito vedrai che è configurato per eseguire script CGI da /usr/lib/cgi-bin directory con alias URL /cgi-bin/ :
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
Facoltativamente, puoi modificare le tue impostazioni DNS in modo che puntino all'indirizzo IP del tuo nuovo server web o semplicemente modificare il tuo file locale /etc/hosts. Ad esempio:
10.1.1.61 cgi-example.local
Dove 10.1.1.61 è un IP del tuo server web che esegue apache e cgi-example.local è un nome di dominio arbitrario.
Crea script CGI
CGI funziona con più linguaggi, ma per ora iniziamo con bash shell. Mostreremo esempi per alcune altre lingue in seguito. Ecco una versione semplice dell'esempio bash CGI:
#!/bin/bash
echo "Content-type: text/html"
echo ''
echo 'CGI Bash Example'
Copia il codice sopra e incollalo in un nuovo file in /usr/lib/cgi-bin/ chiamato example-bash.sh. Una volta terminato, rendi eseguibile il file usando il chmod comando:
$ sudo chmod 755 /usr/lib/cgi-bin/example-bash.sh
Visualizza script CGI
Non resta che navigare con il tuo browser verso il nome host o l'indirizzo IP del tuo server web. Nel nostro caso l'URL sarà:http://cgi-example.local/cgi-bin/example-bash.sh
È possibile modificare questo esempio per visualizzare l'utilizzo del disco della partizione root del server "/". Sei limitato solo dalla tua immaginazione:
#!/bin/bash
echo "Content-type: text/html"
echo ''
echo 'CGI Bash example<br>'
echo `df -h / | grep -v Filesystem`
Il codice precedente verificherà la disponibilità di spazio su disco per una partizione root e produrrà la seguente pagina:
Altri esempi CGI
Come promesso, ecco altri esempi CGI per alcuni linguaggi di programmazione in più per iniziare.
Perl
Crea e rendi eseguibile il seguente /usr/lib/cgi-bin/example-perl.pl con un contenuto:
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print <<htmlcode;
<html>
<head>
<title>CGI Perl Example</title>
</head>
<body>
<h1>CGI Perl Example</h1>
<p>CGI Perl Example</p>
</body>
htmlcode
Pitone
Crea e rendi eseguibile il seguente /usr/lib/cgi-bin/example-python.py con un contenuto:
<html>
<head>
<title>CGI Python Example</title>
</head>
<body>
<h1>CGI Python Example</h1>
<p>CGI Python Example</p>
</body></html>
"""
C
Affinché C e C++ funzionino, avremo bisogno di un compilatore installato. Innanzitutto, installa il compilatore con:
$ sudo apt-get install build-essential
Una volta installato crea un file example-c.c con il seguente codice:
#include <stdio.h>
int main(void)
{
printf("Content-Type: text/plain \n\n");
printf("CGI C Example \n");
}
salva il contenuto del file esempio-c.c e compilalo con il seguente comando linux:
$ sudo gcc -o /usr/lib/cgi-bin/example-c example-c.c
ora dovresti essere in grado di accedere al tuo script CGI compilato in C con:http://cgi-example.local/cgi-bin/example-c
C++
Affinché C e C++ funzionino, avremo bisogno di un compilatore installato. Innanzitutto, installa il compilatore con:
$ sudo apt-get install build-essential
Una volta installato, crea un file example-cpp.c con il seguente codice:
#include <iostream>
using namespace std;
int main()
{
cout << "content-type: text/html" << endl << endl;
cout << "<h1>CGI C++ example</h1>" << endl;
return 0;
}
salva il contenuto del file example-cpp.c e compilalo con il seguente comando linux:
$ sudo g++ -o /usr/lib/cgi-bin/example-cpp example-cpp.c
ora dovresti essere in grado di accedere al tuo script CGI compilato in C con:http://cgi-example.local/cgi-bin/example-cpp
Conclusione
Come accennato in precedenza, il CGI è piuttosto vecchio ed è stato ampiamente sostituito da diversi linguaggi di programmazione come PHP, ecc. Tuttavia, come puoi vedere, è ancora uno strumento relativamente semplice da utilizzare per automatizzare le attività di amministrazione di Linux come un monitoraggio personalizzato remoto per i tuoi server Linux utilizzando un browser web.