SQL Server : WAN IP Adresini Tespit Etmek
Soru:
Dinamik IP kullanan internete bağlı bir terminalde veya sunucuda kurulu olan SQL Server aracılığıyla WAN-IP adresini nasıl tespit edebiliriz?
Cevap:
Anladığım kadarıyla dinamik IP kullanan bir network’deki SQL Server’a erişmek istiyorsunuz ve bunun için IP’nin güncel değerini öğrenmek niyetindesiniz, doğru mu?
Durum bundan ibaret ise aşağıdaki kodlarla bunu yapabilirsiniz. Fakat dikkat etmeniz gereken bazı noktalar var, bu noktalara dikkat etmez ve kodun arkasını toplamazsanız ciddi güvenlik açıklarına da sebep olabilirsiniz. O nedenle aşağıda örneğini verdiğim kodu iyice hazmetmeden kullanmamanızı tavsiye ederim.
sp_configure 'show advanced options', 1 --> SQL Server'in gelişmiş seçeneklerini kullanabilmek için ilgili kilidi AÇIYORUZ
reconfigure with override --> SQL Server'i son duruma göre yeniden konfigüre ediyoruz.
GO
sp_configure 'Ole Automation Procedures', 1 --> SQL Server'in OLE Otomasyon nesnelerini kullanabilmesi için ilgili kilidi AÇIYORUZ
reconfigure with override --> SQL Server'i son duruma göre yeniden konfigüre ediyoruz.
GO
DECLARE @SONUC VARCHAR(50)
, @HATA INT
, @CEVAP INT
EXEC @HATA = sp_OACreate 'MSXML2.ServerXMLHTTP' --> OLE Otomasyon nesnesi üretiyoruz,
, @CEVAP OUT --> metodun return değerini @CEVAP değişkenine alıyoruz...
;
IF (@HATA <> 0) RAISERROR('HTTP Bağlantısı açılamadı.', 10, 1); --> Cevap olarak Durum koduna bakıyoruz, 0'dan farklıysa hata kodu oluşmuş demektir...
EXEC @HATA = sp_OAMethod @CEVAP --> AYNI NESNENİN
, 'open' --> OPEN metodunu çalıştırıp parametreleri devamında veriyoruz.
, NULL --> Bundan sonrası çağırdığımız metodun parametrelerine göre değişebiliyor
, 'POST' --> Ayrıntılar için https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-oamethod-transact-sql?view=sql-server-2017
, 'http://www.dubaron.com/myip' --> IP adresimizi bize söyleyen bir web sitesi. sonuç sadece IP adresi olduğu için parse etme ihtiyacı olmuyor...
, 'false'
;
EXEC @HATA = sp_OAMethod @CEVAP --> AYNI NESNENİN
, 'send' --> SEND metodunu çalıştırıyoruz...
EXEC @HATA = sp_OAGetProperty @CEVAP --> AYNI NESNENİN
, 'responseText' --> "responseText" field'ini "OKUYORUZ"
, @SONUC OUT --> okunan fieldin değerini / içeriğini @SONUC değişkenine alıyoruz
;
SELECT @SONUC as WanIpAdresi;
GO
sp_configure 'Ole Automation Procedures', 0 --> SQL Server'in OLE Otomasyon nesnelerini kullanabilmesi için ilgili kilidi KAPATIYORUZ
reconfigure with override --> SQL Server'i son duruma göre yeniden konfigüre ediyoruz.
GO
sp_configure 'show advanced options', 0 --> SQL Server'in gelişmiş seçeneklerini kullanabilmek için ilgili kilidi KAPATIYORUZ
reconfigure with override --> SQL Server'i son duruma göre yeniden konfigüre ediyoruz.
GO
Yorum yapılmamış