Liman MYS üzerinde python, bash veya powershell betikleri çalıştırabilmekteyiz.
1.İlk olarak Sistem Ayarları > Eklenti > Yeni yolunu izleyerek eklenti oluşturuyoruz. Yaptığımız işlem bize varsayılan olarak views klasör altında index.php ve functions.php olmak üzere iki dosya oluşturmaktaydı.
Visual Studio Code ile Liman sunucusuna bağlanıp eklenti dosyalarına erişebiliyoruz. Bu konu hakkında Mert Çelen'in yazdığı yazıya buradan ulaşabilirsiniz.
2.Scripts klasörü içine liman sunucusunda liman user'ı ile aşağıdaki kod yardımıyla devtopython adında python dosyası oluşturulur.
touch /liman/extensions/devtopython/scripts/devtopython.py
Veya Visual Studio Code arayüzü ile scripts klasörüne sağ tıklayıp new file diyerek oluşturabilirsiniz.
3.index.blade.php dosyasına gerekli kod parçacıkları yazılır. Aşağıdan erişebilirsiniz.
<button class="btn btn-primary mb-2" onclick="runScript()">Python scriptini çalıştır</button>
<div id="devtoPython"></div>
<script>
function runScript(){
var form = new FormData();
request("{{API('runPythonScript')}}", form, function(response) {
message = JSON.parse(response)["message"];
$('#devtoPython').html(message);
}, function(error) {
$('#devtoPython').html("Hata oluştu");
});
}
</script>
Butona tıklandığında anda javascript fonksiyonu çalışıp backend de runPythonScript php fonksiyonuna gidecek.
4.functions.php sayfasının içeriği ise aşağıdaki gibidir.
<?php
function index(){
return view('index');
}
function runPythonScript(){
$output = runScript("devtopython.py","",false);
return respond($output,200);
}
?>
runScript helperı Liman üzerinden betik çalıştırmamızı sağlamaktadır. 3 parametre almaktadır. Birinci parametre betik adı, ikinci parametre betiğe gönderilmek istenen parametrelerdir, üçüncüsü ise betiğin sudo veya normal çalışacağını belirtmektedir. Üçüncü parametre false verilir ise normal, true verilir ise betik sudo ile çalıştırılmaktadır.
5.devtopython.py içerisinde istediğiniz python komutlarını kullanabilirsiniz. Örnek amaçlı kullanılan betiğin içeriği aşağıdadır.
#!/usr/bin/python3
print("Merhaba Dünya !!")
Eklentinin görsel çıktıları aşağıdadır.
Butona basılmadan önceki görsel ;
Butona basıldıktan sonraki görsel ;
Eklentinin koduna buradan ulaşabilirsiniz.
Top comments (0)