İçeriğe geç
LLCBullet
Otomasyon

Bahis Sektöründe Cron ve Otomasyon Örnekleri

Cron ifadelerinin yapısı, bahis operasyonuna uygun zamanlama örnekleri, LLCBullet görev kuralları ve kişisel API anahtarıyla kendi sunucundan çalışan gerçek bir paket bitiş kontrolü.

4 dk okuma

Bahis Sektöründe Cron ve Otomasyon Örnekleri

Cron, bir işin hangi dakikada, hangi saatte ve hangi günlerde çalışacağını tek satırda tanımlamanın en yaygın yoludur. LLCBullet'te otomasyon görevleri cron ifadeleriyle zamanlanır; kişisel API anahtarlarıyla da kendi sunucundaki cron işlerinden paket ve görev bilgilerine ulaşabilirsin. Bu yazıda cron'un temel yapısını, bahis operasyonuna uygun örnekleri ve API ile çalışan gerçek bir betik örneğini paylaşıyoruz.

Cron ifadesinin yapısı

Bir cron ifadesi boşlukla ayrılmış beş alandan oluşur: dakika, saat, ayın günü, ay ve haftanın günü. Yıldız “her değer”, virgül liste, tire aralık, eğik çizgi ise adım anlamına gelir. Haftanın günü alanında 0 pazar, 1 pazartesi, 6 cumartesidir. Örneğin aşağıdaki “0 9 * * 1” ifadesi dakika 0, saat 9, her ayın her günü ama yalnızca pazartesi anlamına gelir; yani her pazartesi 09:00.

text
# ┌──────── dakika (0-59)
# │ ┌────── saat (0-23)
# │ │ ┌──── ayın günü (1-31)
# │ │ │ ┌── ay (1-12)
# │ │ │ │ ┌ haftanın günü (0-6, 0 = pazar)
# │ │ │ │ │
  0 9 * * 1    # her pazartesi 09:00

LLCBullet görevlerinde kurallar

  • Görevler en fazla 5 dakikada bir çalışabilir; daha sık çalışan bir ifade kaydedilmez.
  • İfade, görevde seçtiğin saat dilimine göre yorumlanır. Varsayılan saat dilimi, Ayarlar sayfasındaki hesap saat dilimidir.
  • @hourly, @daily, @weekly ve @monthly kısaltmaları desteklenir.
  • Hesap başına en fazla 20 görev oluşturabilirsin; bir site kontrolü görevi en fazla 50 siteyi kapsar.
  • Bakımdaki altyapı ve siteler görevlerde atlanır; Tümünü duraklat seçeneğiyle tüm görevlerini tek hamlede durdurabilirsin.

Bahis operasyonu için zamanlama örnekleri

text
# Hafta sonu akşamları: cuma, cumartesi, pazar 17:00-23:55 arası her 5 dakikada bir
*/5 17-23 * * 5,6,0

# Mesai saatleri: her gün 08:00-20:00 arası saat başlarında
0 8-20 * * *

# Sabah özeti: her gün 09:00
0 9 * * *

# Haftalık değerlendirme: her pazartesi 09:00
0 9 * * 1

# Gece seyrek kontrol: 00:00-07:30 arası her 30 dakikada bir
*/30 0-7 * * *

Hafta sonu akşamları

Maçların yoğunlaştığı hafta sonu akşamlarını 5 dakikalık aralıkla kapsar. Bu, görevler için izin verilen en sık aralıktır; yalnızca gerçekten yoğun saatlerde kullanmak gereksiz bildirim üretmeni önler.

Mesai saatleri

Ekibin aktif olduğu saatlerde saat başı bir kontrol, genel durumu takip etmek için çoğu zaman yeterlidir. Yalnızca hafta içi günlerle sınırlamak istersen son alanı 1-5 yapabilirsin.

Sabah özeti ve haftalık değerlendirme

Bir rapor görevine bu zamanlamaları verdiğinde özet Telegram'a gelir: çalıştırma sayıları, site kontrolleri, erişilebilirlik oranı ve en yakın paket bitişi. Günlük özet operasyonun nabzını, pazartesi sabahı gelen haftalık özet ise genel eğilimi gösterir.

Gece seyrek kontrol

Trafiğin düştüğü gece saatlerinde yarım saatlik aralık, büyük bir kesintiyi kaçırmadan gürültüyü azaltır. Yoğun ve sakin saatler için ayrı görevler tanımlamak, tek bir karmaşık ifade yazmaktan daha okunur ve yönetilebilirdir.

Cron ifadeni test etmek

Bir ifadeyi kaydetmeden önce sonraki birkaç çalışma zamanını doğrulamak yanlış zamanlamaları baştan önler. Görevi kaydettikten sonra zamanlamayı beklemeden Otomasyon sayfasından elle çalıştırabilir ve sonucu çalıştırma geçmişinde görebilirsin.

  • Saat alanında aralık kullanıyorsan başlangıç ve bitiş saatlerinin dahil olduğunu unutma.
  • Hem ayın günü hem haftanın günü alanını doldurursan birçok cron uygulamasında bu ikisi “ve” değil “veya” olarak yorumlanır; karışıklığı önlemek için yalnızca birini kullan.
  • Yaz saati uygulanan saat dilimlerinde geçiş günlerinde bazı saatler atlanabilir ya da iki kez yaşanabilir.

Kendi sunucundan API ile çalışan cron işi

Panel görevleri çoğu ihtiyacı karşılar. Ama bazen veriyi kendi sistemine almak istersin: örneğin paket bitişlerini finans ekibinin kullandığı bir kanala düşmek ya da büyük bir maçtan önce bir görevi kendi planlayıcından tetiklemek. Bunun için panelin API sayfasından kişisel bir API anahtarı oluşturursun. Anahtar oluşturma Telegram'dan onay ister ve gizli anahtar yalnızca bir kez gösterilir.

Aşağıdaki betik, imzalı bir istekle 15 dakika geçerli bir erişim jetonu alır ve süresi 5 günden az kalan aktif paketleri listeler. Anahtarın yalnızca read:subscriptions kapsamına ihtiyacı vardır:

bash
#!/usr/bin/env bash
# paket-bitis.sh: süresi 5 günden az kalan aktif paketleri listeler
set -euo pipefail
: "$LB_API_BASE" "$LB_KEY_ID" "$LB_KEY_SECRET"  # Panel > API sayfasındaki adres ve anahtar

TS=$(date +%s)
NONCE=$(openssl rand -hex 16)
BODY_HASH=$(printf "" | sha256sum | cut -d " " -f1)
SIG=$(printf "%s\n%s\nPOST\n/api/ext/v1/token\n%s" "$TS" "$NONCE" "$BODY_HASH" \
  | openssl dgst -sha256 -hmac "$LB_KEY_SECRET" | sed "s/^.*= //")

TOKEN=$(curl -fsS -X POST "$LB_API_BASE/token" \
  -H "X-LB-Key: $LB_KEY_ID" \
  -H "X-LB-Timestamp: $TS" \
  -H "X-LB-Nonce: $NONCE" \
  -H "X-LB-Signature: $SIG" | jq -r .accessToken)

LIMIT=$(( $(date +%s) + 5 * 86400 ))
curl -fsS "$LB_API_BASE/subscriptions" -H "Authorization: Bearer $TOKEN" \
  | jq -r --argjson limit "$LIMIT" '
      .subscriptions[]
      | select(.status == "active" and .expiresAt != null)
      | select((.expiresAt | sub("\\.[0-9]+"; "") | fromdateiso8601) < $limit)
      | "\(.id)  \(.plan)  \(.expiresAt)  \(.infrastructures | join(", "))"'

Betiği sunucundaki crontab'a eklemek için:

bash
# Her sabah 08:30'da çalıştır, çıktıyı günlük dosyasına ekle
30 8 * * * /opt/llcbullet/paket-bitis.sh >> /var/log/paket-bitis.log 2>&1

Paket bitişine 7, 3 ve 1 gün kala Telegram hatırlatmaları zaten gelir; bu betik aynı bilgiyi kendi raporlarına ya da ekibinin kanalına taşımak için kullanışlıdır. Çıktıyı bir mesaj kanalına göndermek istersen son satırı kendi bildirim aracına yönlendirebilirsin; gizli değerleri betiğin içine değil, sunucudaki ortam değişkenlerine koy.

Bir görevi dışarıdan tetiklemek

Büyük bir maçtan hemen önce zamanlamayı beklemeden bir site kontrolü çalıştırmak istersen run:automation kapsamlı bir anahtarla görevi tetikleyebilirsin. Görev kimliklerini read:automation kapsamıyla GET /automation/tasks ucundan alırsın:

bash
curl -fsS -X POST "$LB_API_BASE/automation/tasks/$TASK_ID/run" \
  -H "Authorization: Bearer $TOKEN"

Tetiklenen çalıştırma, zamanlanmış çalıştırmalar gibi görevin çalıştırma geçmişinde görünür. run:automation kapsamını yalnızca gerçekten gerekiyorsa ver; sabit IP'li bir sunucudan çağırıyorsan anahtara IP izin listesi ekle. İmzalama ayrıntıları için kişisel API anahtarları rehberine bakabilirsin.

Sık yapılan hatalar

  • Saat dilimini unutmak: Görevdeki saat dilimi ile sunucundaki crontab'ın saat dilimi farklı olabilir; sunucular çoğunlukla UTC ile çalışır.
  • Gün numaralarını karıştırmak: Haftanın günü alanında 0 pazardır, pazartesi 1'dir.
  • Aralığın bitişini yanlış okumak: 17-23 saat aralığı 23:00'ü de kapsar; */5 ile son çalışma 23:55'tedir.
  • Her şeyi en sık aralıkla kurmak: Gereksiz sık kontrol bildirim gürültüsü üretir; doğru aralığı bulmak için kontrol sıklığı rehberine göz at.
  • Gizli anahtarı betiğe gömmek: Anahtarı ortam değişkeninde ya da bir gizli değer yöneticisinde tut.

Sonuç

Cron ifadeleri, izleme ve raporlama işlerini operasyonunun ritmine göre ayarlamanı sağlar. Panel görevleriyle yoğun saatleri ve raporları, API ile de kendi sistemindeki ihtiyaçları karşılayabilirsin. Sonuçları zamanlanmış sorgular yerine her çalıştırmada kendi sistemine itmek istiyorsan webhook görevleri daha uygun bir seçenektir.

  • cron örnekleri
  • bahis otomasyonu
  • llcbullet api
  • otomasyon görevi
  • zamanlanmış görev

Bu yazıyı paylaş

Ortak etiket sayısına göre sıralanır.