Jump to content

Auto Ping


Exselans
 Share

Recommended Posts

Merhaba Arkadaşlar,

Ağımda 15 tane Bilgisayar ipcop linux bilgisayara bağlı.Ağdaki Bilgisayarlarda bazen internet sayfası açmıyor.Sorun ipcop cihaz ile iletişim sıkıntısı çekmeleri.internete girmeyen(İnternet Sayfası Açmayan) cihazdan ipcop cihazın ip adresine ping attığımz zaman cihaz internete hemen giriyor ve 15-20dk sonra yine aynı sorunu yaşıyorum. Sizden ricam.Bilgisayarda servislerinde otomatik olarak çalışacak
ve belirlediğim ip adresine 5-10 dk ara ile ping gönderecek.böyle bir bat veya script dosyasını kullanıcı mudehale etmemesi için görünmemesi lazım.yardımlarınız için şimdiden teşekkür ederim.
Link to comment
Share on other sites

@Exselans

Ilgili ağdaki bilgisayarlar windows işletim sistemi mi kullanıyor?
Bu bilgisayarlarda ki yüklü işletim sistemi nedir?

Ağındaki bilgisayarlar sabit ip atamıştısın.
ipcop linux pcnin ip adresi nedir?

Biraz daha detaylı bilgi verirsen ve kullanmış olduğun sistem windows ise senin için ufak bir şey yapabilrim..

Link to comment
Share on other sites

Ağdaki Arkadaşlar windows xp sp3 kullanıyorlar.
İpcop cihazımın ip adres:192.168.1.1
İç ağdaki xp cihazlarımında ip adreslerini sabitledim. 192.168.1.2 den 192.168.1.13 e kadar ip verdim.
yani iç ağdaki cihazlarım ip adresleri:192.168.1.x
Alt Ağ Maskesi:255.255.255.0
Ağ Geçidi : 192.168.1.1
Dns :192.168.1.1
İlginiz için Çok teşkkür ederim.

Link to comment
Share on other sites

@Exselans

Kusura bakma biraz geç yanıt veriyorum. Bazı halletmem gerek işler vardı.
Senin için ufak bir şey yaptım.

[color="#0000FF"][u][b]http://bluelife.zxq.net/BluePing_Create.zip[/b][/u][/color]
Programı çalıştır ve arayüzden ip adresini ve dakika bilgisini düzelt.
Daha sonra Servisi Kur tuşuna tıklat.

Program kısaca bir servis yaratıyor ve bu servis system32 ye kopyalanan BluePing.exe adlı küçük programu çalıştırıyor.
Bu program senin kurulum yaparken belirlediğin, ip numarasına bellirlediğin zaman aralıklarıyla ping atıyor.
Program yanında oluşan blueping.txt dosyasına yaptıklarını log halinde yazıyor.
Yani ping işlemi başarısız olur ise bu dosyada yazar.

Servis olarak kurduğumuz için ilgili program her sistem açılışında otomatik başlayacaktır.
Ama servis ilgili programı başlattıktan sonra kapanıyor. Yani görev yöneticisinden ilgili programı kapatmamalısınız.

Unutmadan , kurulumdan sorna yapılan değişiklikleri geri almak için, ilgili verdiğim programı çalıştırıp servisi kaldır tuşuna basman yeterli!

Link to comment
Share on other sites

[img]http://i.imgur.com/qRFiX.png[/img]

@MeHMeTBeN

Paket ike programdan oluşuyor. Birisi normal çalışıp kurulum yaptığım BluePing_Create.exe
Diğeri ise BluePing_Create.exe nin içinde olan BluePing.exe
Kurulum yapılınca BluePing.exe sisteme kopyalanıyor. Yani normal olarak çalışan program bu.

BluePing.exe nin kodlarını verebilirim. Lakin BluePing_Create.exe nin kodlarını veremiyorum.
Nedeni ise, bir arkadaşla farklı bir projede kullandığımız kodları barındırması
Bu konuda beni mazur gör :(

BluePing.exe nin kodları;
[codebox]#NoTrayIcon
#RequireAdmin
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=package_settings.ico
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_UseUpx=y
#AutoIt3Wrapper_Res_Comment=http://www.autoitscript.com/autoit3/
#AutoIt3Wrapper_Res_Description=BlueLife Ping Service
#AutoIt3Wrapper_Res_Fileversion=1.0.0.0
#AutoIt3Wrapper_Res_LegalCopyright=Created by BlueLife ©2011
#AutoIt3Wrapper_Res_Field=Compile Date|%date% %time%
#AutoIt3Wrapper_Res_Field=AutoIt|%AutoItVer%
#AutoIt3Wrapper_Res_Field=File Name|BluePing.exe
#AutoIt3Wrapper_Run_Tidy=y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

Global $SystemDir = @SystemDir
If StringRight($SystemDir, 1) <> "\" Then $SystemDir &= "\"
If StringLeft(@AutoItExe, StringLen($SystemDir)) <> $SystemDir Then Exit

If $CMDLINE[0] = 0 Then
Run(@AutoItExe & " " & "/BlueLife " & @AutoItPID)
Exit 1
ElseIf $CMDLINE[1] <> "/BlueLife" Or $CMDLINE[0] <> 2 Then
MsgBox(64, $CMDLINE[2], $CMDLINE[1])
Exit 1
EndIf

While ProcessClose($CMDLINE[2])
Sleep(100)
WEnd

_ProcessCheck()

Local $BLUE_TITLE = "BlueLife Ping Service"
Local $BLUE_REG_KEY = "HKLM\SYSTEM\CurrentControlSet\Services\!BluePing"
Local $BLUE_SLEEP = Number(RegRead($BLUE_REG_KEY, "Sleep"))
If $BLUE_SLEEP < 1 Then $BLUE_SLEEP = 1

Local $BLUE_IP = RegRead($BLUE_REG_KEY, "IP")
If _BLUE_IP_CHECK($BLUE_IP) = False Then
MsgBox(16, $BLUE_TITLE, "Registryden okunan ip adresi hatalı! Işlem sonlandırıldı..." & @CRLF & @CRLF & "Registry anahtarı;" & @CRLF & $BLUE_REG_KEY & "\IP")
Exit 1
EndIf

Local $Dakika = 60 * 1000
Local $Ping

Local $BluePing_Txt = $SystemDir & "BluePing.txt"
If FileExists($BluePing_Txt) = 1 Then FileDelete($BluePing_Txt)
ProcessSetPriority(@AutoItExe, 1)
DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'long', -1)
While 1
$Ping = Ping($BLUE_IP)
If @error Then
FileWrite($BluePing_Txt, "Ping -> " & $BLUE_IP & " -> Sorun oluştu! " & @CRLF & "Bekle -> " & $BLUE_SLEEP & " dakika" & @CRLF)
Else
FileWrite($BluePing_Txt, "Ping -> " & $BLUE_IP & " -> " & $Ping & @CRLF & "Bekle -> " & $BLUE_SLEEP & " dakika" & @CRLF)
EndIf
Sleep($BLUE_SLEEP * $Dakika)
WEnd

Func _BLUE_IP_CHECK($IP_CHECK)
Local $Value = StringSplit($IP_CHECK, ".")
If $Value[0] = 4 And StringIsDigit($Value[1]) And StringIsDigit($Value[2]) And StringIsDigit($Value[3]) And StringIsDigit($Value[4]) Then
If $Value[1] >= 0 And $Value[1] <= 255 Then
If $Value[2] >= 0 And $Value[2] <= 255 Then
If $Value[3] >= 0 And $Value[3] <= 255 Then
If $Value[4] >= 0 And $Value[4] <= 255 Then
Return True
EndIf
EndIf
EndIf
EndIf
EndIf
Return False
EndFunc ;==>_BLUE_IP_CHECK

Func _ProcessGetLocation($iPID); Programın çalıştığı dizin
Local $aProc = DllCall('kernel32.dll', 'hwnd', 'OpenProcess', 'int', BitOR(0x0400, 0x0010), 'int', 0, 'int', $iPID)
If $aProc[0] = 0 Then Return SetError(1, 0, '')
Local $vStruct = DllStructCreate('int[1024]')
DllCall('psapi.dll', 'int', 'EnumProcessModules', 'hwnd', $aProc[0], 'ptr', DllStructGetPtr($vStruct), 'int', DllStructGetSize($vStruct), 'int_ptr', 0)
Local $aReturn = DllCall('psapi.dll', 'int', 'GetModuleFileNameEx', 'hwnd', $aProc[0], 'int', DllStructGetData($vStruct, 1), 'str', '', 'int', 2048)
If StringLen($aReturn[3]) = 0 Then Return SetError(2, 0, '')
Return $aReturn[3]
EndFunc ;==>_ProcessGetLocation

Func _ProcessCheck()
Local $Plist
If @Compiled Then
$Plist = ProcessList(@ScriptName)
For $i = 1 To $Plist[0][0]
If $Plist[$i][1] <> @AutoItPID Then
If FileGetLongName(_ProcessGetLocation($Plist[$i][1])) = FileGetLongName(@AutoItExe) Then
Exit
EndIf
EndIf
Next
EndIf
EndFunc ;==>_ProcessCheck[/codebox]

Edited by blue_life
Link to comment
Share on other sites

Mehmet Kardeş Program için çok teşekkür ederim,çok makbule geçti.Çalışması güzel ping atabiliyor fakat zaman ile ilgili sıkıntı var.Sanırsam zaman aralığı dk olarak hesaplanıyor? ben 15 dk da bir ping atması için zaman aralığına 15 yazdım fakat program 1 dakikada bir atıyor pingleri.10 Dk aldım acaba saniye olarak mı hesaplıyor diye 200-300 yazdım fakat nafile System32 deki blueping log dosyasınıda kontrol ettiğimde Ping -> 192.168.1.3 -> 1 milisaniye
Bekle -> 1 dakika

Olarak hep işlem devam ediyor.

İlgilenirsen çok sevinirim kardeş.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...