İçeriğe geç

System API

System API, platformun çalıştığı sunucu üzerinde OS seviyesinde işlem yapar: platformu kapatıp yeniden başlatır, sistem saatini ayarlar, keyfi bir komut çalıştırır ve bekleyen sistem isteklerini yönetir.

Platform sürecini kapatır.

ins.shutdown();

Platformu yeniden başlatır.

var h = ins.now().getHours();
if (h >= 2 && h <= 4) {
ins.writeLog("warn", "System", "Planlı yeniden başlatma");
ins.restart();
}

Sunucu sistem saatini ms (epoch) değerine ayarlar.

ParametreAçıklama
msHedef zaman (epoch milisaniye)
dateCmdFormatYalnızca Windows’ta kullanılan Java SimpleDateFormat pattern’i (örn. "MM-dd-yyyy") — pattern cmd /c date <değer>’e geçirilir, saat ayrıca HH:mm:ss ile time komutuna iletilir. Linux’ta bu parametre yok sayılır — dahili olarak sabit yyyy-MM-dd HH:mm:ss biçimi + date -s kullanılır
// Windows
ins.setDateTime(Date.now(), "MM-dd-yyyy");
// Linux — format görmezden gelinir, boş bırakabilirsin
ins.setDateTime(Date.now(), "");

Sunucuda OS komutu çalıştırır. Dönüş değeri komut çıktısı DEĞİL, exit code (int) — 0 başarı.

Argüman dizisi olarak verilir — shell parse etmesi yoktur, injection riski düşük.

var rc = ins.exec(["df", "-h", "/"]);
if (rc != 0) {
ins.writeLog("error", "System", "df komutu başarısız — exit " + rc);
}

Tek string olarak verilir, içsel olarak boşluklara göre parse edilir (yalın yaklaşım, tırnak içi argümanlara duyarlı değil).

ins.exec("df -h /");

Platform içinde “sistem isteği” (kullanıcıdan onay bekleyen shutdown / restart gibi) kuyruklanabilir. API bu kuyruğa script’ten erişim sağlar.

Bekleyen sistem isteklerini döner — Collection<SystemRequestDto>.

var reqs = ins.getSystemRequests();
reqs.forEach(function(r) {
ins.consoleLog(r.getType() + "" + r.getRequestDate());
});

Bir isteği kuyruktan siler.

var reqs = ins.getSystemRequests();
reqs.forEach(function(r) {
if (r.getType() == "RESTART") ins.deleteSystemRequest(r);
});
MetodTürAçıklama
getType()Stringİstek tipi (örn. "SHUTDOWN", "RESTART")
getRequester()Map<String, Object>İsteği yapan kullanıcı bilgileri
getRequestDate()DateOluşturulma zamanı

Örnek: Düşük Disk Alanında Planlı Restart

Section titled “Örnek: Düşük Disk Alanında Planlı Restart”
function main() {
var rc = ins.exec(["sh", "-c", "df -h / | awk 'NR==2 {print $5}' | tr -d '%' > /opt/inscada/tmp/disk.txt"]);
if (rc != 0) return;
var used = parseInt(ins.readFile("tmp/disk.txt").trim(), 10);
if (used > 95) {
ins.sendMail(["ops"], "Disk %" + used, "Kritik disk doluluk — bakım penceresinde restart planlanıyor");
}
}
main();