Il PL/SQL e' il linguaggio procedurale
del diffuso database relazionale Oracle.
In qualche caso si ha l'accesso ad una base dati ma non al sistema
che lo ospita e questo limita i controlli possibili.
Il PL/SQL e' ricco di funzionalita' per l'accesso ai dati ma sono presenti anche
funzioni di rete che possono essere utilizzate per realizzare
procedure di controllo sulla raggiungibilita' di sistemi e servizi.
Questa pagina spiega come effettuare il ping ed il controllo delle porte verso un host
utilizzando il PL/SQL.
Accedendo via SQL ad una base dati le possibilita' di azione sul sistema ospite sono limitate. Tipicamente l'unica azione che si effettua direttamente sul sistema e' limitata all'uso dei package utl_file e dbms_output. In realta' i package del PL/SQL son
Il codice PL/SQL necessario e':
CREATE OR REPLACE FUNCTION ck_tcp(pHost VARCHAR2, pPort NUMBER DEFAULT 0) RETURN VARCHAR2 AUTHID DEFINER IS Conn utl_tcp.connection; lPort NUMBER; BEGIN IF (pPort = 0) THEN lPort:=1000; ELSE lPort:=pPort; END IF; Conn := utl_tcp.open_connection (pHost, lPort); utl_tcp.close_connection(Conn); dbms_output.put_line ('ck_tcp: Done port connection'); RETURN 'OK'; EXCEPTION WHEN UTL_TCP.NETWORK_ERROR THEN IF (UPPER(SQLERRM) LIKE '%HOST%') THEN dbms_output.put_line ('ck_tcp: Host not reachable'); RETURN 'ko'; ELSIF (UPPER(SQLERRM) LIKE '%LISTENER%') THEN IF (pPort = 0) THEN dbms_output.put_line ('ck_tcp: Done ping'); RETURN 'OK'; ELSE dbms_output.put_line ('ck_tcp: Port not open'); RETURN 'ko'; END IF; ELSE dbms_output.put_line ('ck_tcp: Unknown error'); RAISE; END IF; END ck_tcp; /
Una volta creata la procedura e' possibile utilizzarlo con:
Richiamata senza parametri la funzione effettua con controllo sulla raggiungibilita'
dell'host (ping), con un parametro viene invece contattata la porta TCP/IP indicata
e consente di controllare la presenza di specifici servizi.
Per quanto riguarda Oracle le porte piu' comunemente utilizzate sono: 1521, 1525 e 1526.
Altri servizi utili sono: 21 (FTP), 25 (SMTP), 80 (HTTP), 443 (HTTPS).
Altri documenti di questo tipo su questa pagina.
Titolo: PL/SQL Ping e controllo porte TCP/IP
Livello: Hack
Data:
31 Ottobre 2012 - Halloween
Versione: 1.0.0 - 31 Ottobre 2012
Autore: mail [AT] meo.bogliolo.name