Son zamanlarda artan ihtiyaçlarım sebebiyle Cloudflare da bulunan +100 domain için tek tek işlem yapmaktansa toplu işlemleri kolayca yaptığım Python betiğini paylaşmak istedim.
Umarım bir çok kişinin işini görecektir.
Kullanım amacı:
Cloudflare Hesabınızda kayıtlı tüm domainlerin tek seferde A kaydı bulunan IP numaralarını değiştirmeye yarayacak,
Faydaları:
Cloudflare tarafında fazlaca domain sahibi olanlar sunucu değişikliği yaptığında tek seferde IP değiştirebilecek. Böylelikle, 1 günden fazla vakit kazanılmış olacak.
Öncelikle,
CloudFlare hesabınıza giriş yapın ve aşağıdaki linkten API oluşturun.
https://dash.cloudflare.com/profile/api-tokens
Adımları takip edin,




İşlem sonucunda size api verecek, bunu not edin.
Bilgisayarınızda Python yüklü değil ise indirip yükleyin.
https://www.python.org/downloads/
Komut İstemi açıp gerekli kütüphaneyi yükleyin.
pip install requests
Sonrasında aşağıdaki betiği kopyalayıp CF_A_Update.py dosyası oluşturun.
Python IDE ile Run yapın.
import requests
#BRKNET Danışmanlık
# API token ve yeni IP adresi
api_token = 'XXXX' # Cloudflare API token numaranızı buraya yazın
old_ip = 'XXXX' # Güncellemek istediğiniz mevcut IP adresini buraya yazın
new_ip = 'XXXX' # Değişmesini istediğiniz Yeni IP adresinizi buraya yazın
headers = {
'Authorization': f'Bearer {api_token}',
'Content-Type': 'application/json'
}
# Hesaptaki tüm zone ID'lerini ve isimlerini alma
def get_zones():
url = 'https://api.cloudflare.com/client/v4/zones'
response = requests.get(url, headers=headers)
response.raise_for_status() # Hata kontrolü
return response.json()
# Belirli bir zone içindeki DNS kayıtlarını getirme
def get_dns_records(zone_id):
url = f'https://api.cloudflare.com/client/v4/zones/{zone_id}/dns_records'
response = requests.get(url, headers=headers)
response.raise_for_status() # Hata kontrolü
return response.json()
# DNS kaydını güncelleme
def update_dns_record(zone_id, record_id, new_ip, name, proxied):
url = f'https://api.cloudflare.com/client/v4/zones/{zone_id}/dns_records/{record_id}'
data = {
'type': 'A',
'name': name,
'content': new_ip,
'proxied': proxied
}
response = requests.put(url, headers=headers, json=data)
response.raise_for_status() # Hata kontrolü
return response.json()
# Tüm zone'ları al
zones = get_zones()
for zone in zones['result']:
zone_id = zone['id']
zone_name = zone['name']
print(f"Zone: {zone_name}, ID: {zone_id}")
# Her zone için DNS kayıtlarını al
dns_records = get_dns_records(zone_id)
for record in dns_records['result']:
if record['type'] == 'A' and record['content'] == old_ip:
update_response = update_dns_record(zone_id, record['id'], new_ip, record['name'], record['proxied'])
print(f"Updated: {record['name']} from {old_ip} to {new_ip}, Status: {update_response['success']}")
print("A tipi DNS kayıtları güncellendi.")Sonuç