asp.net (c#) ile ping atma

Ana Sayfa » Asp.net » asp.net (c#) ile ping atma
Asp.net 3 yorum

şimdi bir çok alanda sunucu barındırıyorum ve hepsinin şuanda aktif olarak çalıştığını bilmek istiyorum. daha doğrusu bu sunuculardan veya web sitelerinden herhangi biri çalışmaz ise, haberim olsun istiyordum.

ve bu işlemi en basit nasıl çözerim diye düşündüm. aklıma asp ile ping atma geldi 🙂

en kolay böyle çözülür dedim. ve başladım yazmaya. programı yazdım. şimdi sıra sağlam bir yerden zamanlanmış görev(scheduled task) yani cron job hizmeti veren bir hosting firması buldum. 2 ayrı yerden 2 tane hosting aldım çok ucuza. ve bu web sitelerini oraya yükledim. sonrasında zamanlanmış görevleri oluşturdum. her 30 dakikada bir bu siteleri çağıracak şekilde görevleri atadım. ve sistem hazır. artık zamanlanmış görevlerde atanan ip veya domainlerden biri cevap vermez ise, artık bana mail gelecek 🙂

benim böyle bir şeye ihtiyaç duyma sebebim buydu. siz artık nasıl kullanmak isterseniz 🙂
iş çalışan sistem: http://ping.eskiyaprak.com


asp.net de ping atmanın temeli şudur;

        var ping0 =new System.Net.NetworkInformation.Ping();
        try
        {
            var ping_sonuc = ping0.Send("212.68.55.2");
            if (ping_sonuc!=null)
            {
                Response.Write("status=" + ping_sonuc.Status + ", time=" + ping_sonuc.RoundtripTime+" ms");
            }
        }
        catch (Exception ex)
        {
              Response.Write("hata oluştu:"+ex);
              return;
        }


ama ben olayı biraz abarttım. eğer işlem olumsuz olursa bana mail gelsin dedim.


Default.aspx

<html>
<head>
    <title>ping atma - ping test - ping check</title>
</head>
<body>
    <form method="GET" action="?">
        <input type="search" name="ip" placeholder="ip veya domain adını yazınız (http olmadan)" size="40" />
        <input type="submit" value="ping at" />
    </form>
</body>
</html>

Default.aspx.cs

using System;
using System.Globalization;
using System.Net;
using System.Net.Mail;


public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {    
        string pingAdresi = "";
        string sonuc = "HATA";
        int cpuTime = Convert.ToInt32(DateTime.Now.ToString("t").Replace(":", ""));  // integer şekilde zaman oluşturalım.
        int gecmis_zaman =(Session["cpuTime"]==null)? 999999:Convert.ToInt32(Session["cpuTime"]);   //session kontrol

        if (gecmis_zaman == cpuTime){Response.Write("bu sık istek gönderemezsiniz."); return;}  // bu şekilde, çok sık istek göndermesini engelleyebilirsiniz.

        if (string.IsNullOrEmpty(Request["ip"])) return;  //ip yoksa işleme devam etme.

        Session["cpuTime"] = cpuTime;  //aktif zamanı session atamasını yapalım.
        pingAdresi = Request["ip"];    //gelen ping adresi

        var ping = new System.Net.NetworkInformation.Ping();    //ping kaydımızı açalım.
        try
        {
            var pingSonuc= ping.Send(pingAdresi);  //ping işlemi başlar
            if (pingSonuc != null)
            {
                sonuc = " adres:" + pingSonuc.Address + " ~ Sonuc:" + pingSonuc.Status + " ~ süre: " + pingSonuc.RoundtripTime + "ms"; //sonuç mesajımı
                if (pingSonuc.Status.ToString().ToLower() != "success")   //eğer işlem başarılı değilse
                {
                    mailAT(sonuc, pingAdresi);
                }
            }

            Response.Write(sonuc);

        }
        catch (Exception ex)
        {
            Response.Write(ex.Message);
            mailAT(ex.Message, pingAdresi);
            return;
        }
    }//page_load

    protected void mailAT(string gelenHATA, string ping_adresi)
    {


        string aliciMailAdres = "[email protected]";
        string aliciAdi = "DiLSAZ OKTAYI";

        string SunucuMailSunucusu = "mail.alanadi.com";
        string SunucuMailAdresi = "[email protected]";
        string SunucuMailSifresi = "sifre";





        CultureInfo tr = new CultureInfo("tr-TR");
        string dateNumber = DateTime.Now.ToString("G", tr);
        string konu = ping_adresi + " - ACİL - " + dateNumber;
        string gonderenAdi = "Sunucu Hata Bilgilendirme";
        string htmlMesaj = "HATA Mesajı: " + gelenHATA;

        htmlMesaj += "<hr>işlem Zamanı:" + dateNumber;
        htmlMesaj += "<hr>ip / domain:" + ping_adresi;





        var smtp = new SmtpClient(SunucuMailSunucusu);
        try
        {
            string reTurnAndSend = htmlMesaj;

            MailAddress gonderen = new MailAddress(SunucuMailAdresi, gonderenAdi);
            MailAddress alicim = new MailAddress(aliciMailAdres, aliciAdi);
            MailMessage mesaj = new MailMessage(gonderen, alicim);
            smtp.EnableSsl = false;
            mesaj.Subject = konu;
            smtp.Port = 587;
            smtp.EnableSsl = false;
            smtp.Credentials = new NetworkCredential(SunucuMailAdresi, SunucuMailSifresi);
            mesaj.Body = reTurnAndSend;
            mesaj.IsBodyHtml = true;

            mesaj.ReplyToList.Add(new MailAddress(aliciMailAdres));

            smtp.Send(mesaj);

        }

        catch (Exception ex)
        {
            Response.Write("<hr>Mail Gönderilmedi:" + ex.Message);
            return;
        }


    }      //mailAt
}//web.ui

Yorumlar (3):

YORUM YAZ