Bu script, kurulum başarısız olduğunda sorunun kaynağını (DNS, Firewall, Yetki) tespit etmek için tasarlanmıştır. Herhangi bir kurulum yapmaz, sadece test eder.
Aşağıdaki kodu
Comodo/Xcitium Panel > ITSM > Remote Monitoring and Management > Procedures kısmında yeni bir Presedür / Procedure Script oluştur deyip uygun yere yapıştırın.
Sorularınızı yorum kısmında sorabilirsiniz.
—————– KOD ————–
# -*- coding: utf-8 -*-
“””
====================================================================================================
SCRIPT KÜNYESİ: HATA AYIKLAMA VE TANI ARACI (DIAGNOSTIC TOOL)
====================================================================================================
SCRIPT ADI: Network & Download Diagnostic Tool
YAZAR/TARİH: H. Kaan ATASOY (atasoyhk@gmail.com) / 05.12.2025
HEDEF SİSTEM: Windows 10 / 11 (Comodo/Itarian)
PYTHON SÜRÜMÜ: Python 2.7 / 3.x Uyumlu (Hibrit Yapı)
AÇIKLAMA:
Bu script, kurulum başarısız olduğunda sorunun kaynağını (DNS, Firewall, Yetki)
tespit etmek için tasarlanmıştır. Herhangi bir kurulum yapmaz, sadece test eder.
YAPILAN TESTLER:
1. DNS ÇÖZÜMLEME: Sunucu isminin IP’ye dönüştürülüp dönüştürülemediği.
2. SOCKET BAĞLANTISI: 443 (HTTPS) portuna erişim var mı?
3. POWERSHELL DETAYLI İNDİRME: PowerShell’in verdiği hata mesajını (Exception) yakalar.
LOGLAMA: Ekrana (Yürütme Günlüğü) detaylı rapor basar.
====================================================================================================
“””
import os
import sys
import socket
import subprocess
# — AYARLAR —
Target_Host = “emscomo.tempobpo.net”
Target_Url = “https://www.siteadresi.com/dosyaadi.msi”
Temp_File = “C:\\Windows\\Temp\\debug_test_file.msi”
print(“-” * 50)
print(“DIAGNOSTIC TEST BASLIYOR”)
print(“-” * 50)
# — TEST 1: DNS COZUMLEME —
print(“\n[TEST 1] DNS Cozumleme Kontrolu ({0})…”.format(Target_Host))
try:
ip_address = socket.gethostbyname(Target_Host)
print(“[OK] DNS Basarili. Cozumlenen IP: ” + ip_address)
except Exception as e:
print(“[FAIL] DNS Hatasi! Bilgisayar sunucu ismini cozemiyor.”)
print(“Hata Detayi: ” + str(e))
# — TEST 2: PORT ERISIMI (SOCKET) —
print(“\n[TEST 2] Sunucuya Port Erisimi (443/HTTPS)…”)
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.settimeout(5) # 5 saniye zaman asimi
result = s.connect_ex((Target_Host, 443))
if result == 0:
print(“[OK] Sunucuya 443 portundan erisim VAR.”)
else:
print(“[FAIL] Port Erisim Hatasi! Kod: ” + str(result))
print(“Not: Bu genellikle Firewall veya Guvenlik Duvari engellemesidir.”)
s.close()
except Exception as e:
print(“[FAIL] Socket Baglanti Hatasi: ” + str(e))
# — TEST 3: POWERSHELL DETAYLI HATA YAKALAMA —
print(“\n[TEST 3] PowerShell Indirme Denemesi (Detayli Hata)…”)
# PowerShell komutu: Hatayi (Exception) yakalayip ekrana basacak sekilde tasarlandi
ps_script = “””
try {
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12;
$client = New-Object System.Net.WebClient;
$url = ‘””” + Target_Url + “””‘;
$dest = ‘””” + Temp_File + “””‘;
Write-Host “Indirme deneniyor…”;
$client.DownloadFile($url, $dest);
Write-Host “SUCCESS: Indirme basarili.”;
}
catch {
Write-Host “POWERSHELL_ERROR_MSG: ” $_.Exception.Message;
Write-Host “POWERSHELL_ERROR_INNER: ” $_.Exception.InnerException.Message;
}
“””
try:
# Komutu calistir ve ciktisini al
cmd = ‘powershell -Command “{0}”‘.format(ps_script.replace(‘\n’, ‘ ‘))
proc = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = proc.communicate()
# Ciktiyi ekrana bas
print(“— PowerShell Ciktisi —“)
print(out)
if err:
print(“— PowerShell Standart Hata (Stderr) —“)
print(err)
except Exception as e:
print(“[FAIL] PowerShell calistirilamadi: ” + str(e))
# — TEMIZLIK —
if os.path.exists(Temp_File):
try: os.remove(Temp_File)
except: pass
print(“\n” + “-” * 50)
print(“TEST TAMAMLANDI. Lutfen yukaridaki ciktilari inceleyin.”)
print(“-” * 50)