Vi siete mai chiesti come fa STCP a sapere come si chiama? Nella directory >sistema>stcp c'è un file chiamato host. Il file contiene una riga che è il nome del modulo. È possibile modificare o visualizzare il file direttamente, ma vi consiglio di usare il comando hostname. Senza argomenti visualizzerà il contenuto del file host.
hostname atenavs pronto 13:46:51 |
Figura 1 - visualizzare il nome dell'host con il comando hostname |
Se si fornisce un argomento, questo imposterà il contenuto del file host su quel valore di argomento, che diventa il nome dell'host STCP.
hostname this-is-a-test questo-è-un-test pronto 13:47:00 hostname questo-è-un-test pronto 13:47:03 |
Figura 2 - Cambiare il nome dell'host con il comando hostname |
Oltre al comando c'è una funzione di programmazione per restituire il nome dell'host
#include <stdio.h> #include <errno.h> #include <netdb.h> int errno; void exit (int); main () { char name [32]; if (gethostname (name, 32) < 0) { perror ("ex_gethostname: Error getting hostname"); exit (errno); } else printf ("hostname is %sn", name); |
Figura 3 - Programmazione con la funzione gethostname |
Alcuni sottosistemi si basano sul nome dell'host per poter identificare il modulo. Essi recuperano il nome e lo usano come stringa di caratteri oppure risolvono il nome in un indirizzo IP. Se il nome non c'è, sbagliato, risolve all'indirizzo IP sbagliato o non può essere risolto l'applicazione può fallire o funzionare in modo errato.
Ad esempio, se si sta effettuando l'autenticazione esterna tramite un server Radius, l'indirizzo IP del modulo, risolto dal nome host, viene inviato nel pacchetto di richiesta Radius nel campo NAS-IP-ADDRESS. Il server Radius può rifiutare la richiesta se l'indirizzo IP non è quello previsto o se l'ID utente fornito non è associato a quell'indirizzo IP.
Il comando hostname fa parte della macro di comando module_start_up. Non è necessario impostare il nome ogni volta che il sistema si avvia, poiché il nome è persistente attraverso gli stivali, ma non fa male. L'importante è assicurarsi che il nome sia impostato su qualcosa che si risolva all'indirizzo IP corretto. Avere il nome sbagliato o la risoluzione dell'indirizzo IP sbagliato può rendere inutilizzabili sottosistemi come Radius, SSH o Samba.