Merhaba,
VDS sunucumuz var olsun, biliyorsunuz ssh ile bağlandığımızda veya sftp ile ssh bağlantısı yaptığımızda IP'nin ana klasörüne gidiyoruz. İçerisinde .bashrc vs. olan yer.
Aynı zamanda bir domain bağlayıp FTP hesabı açtığımızda htdocs klasörü olan domaine özel açılmış domaine ait klasöre ulaşıyoruz.
Sitemizde bir php dosyası oluşturup dosya oluşturma php kodu kullandığımızda bu dosya htdocs içerisine kayıt oluyor.
1- Bu yazdığımız dosya oluşturma kodu, dosyayı htdocs içerisine değil, ssh ile bağlanıldığında açılan kök klasöre açsın istiyorum nasıl yaparım?
2- Elimde bir docker script olsun, bu scripti ssh ile bağlanıp çalıştırabiliyoruz diyelim .sh dosyası ile. Ve bu script diyelim ki bir data istiyor olsun çalıştıktan sonra, örneğin adınız nedir diye soruyor olsun ve bunu ssh konsolda görüyor olabilelim. Bu scripti PHP ile çağırabilir miyiz? tetikleyebilir miyiz? Diyelim ki tetikledik(çünkü php ile bu tarz şeylerin yapılabildiğini duymuştum) bu scriptin bize soracağı soruyu php sitede nasıl göreceğiz ve geri cevap vereceğiz? not: bu docker script de ssh ile bağlanılan root klasörüde olacak.
2 Adet PHP & Docker Sorum Var
17
●220
- 28-09-2021, 12:40:02
- 28-09-2021, 12:51:421 -> Eriştiğiniz sftp'nin varsayılan bir dizin konumu olur, bunu değiştirerek yapacaksın,
https://askubuntu.com/questions/9612...-ftp-directory
https://serverfault.com/questions/14...hange-ftp-path
2 -> argv olarak tetikleyebilirsin gelen sonuçları ise çıktıyı okuman gerekir lakin gerçek zamanlı nasıl yönetirsin o biraz script yapısı ile ilgili
https://stackoverflow.com/questions/...ugh-docker-run
https://stackoverflow.com/questions/...-output-in-php - 28-09-2021, 13:02:27Hocam attığınız linklere az sonra bakacağım ama dediğiniz şeylerle alakalı cevabımı şimdi atmak istedim siz görüp cevap verirseniz ben gelene kadar görmüş olun diye erkenden yazayım.BedirhanERKAN adlı üyeden alıntı: mesajı görüntüle
Şimdi docker scripti normal temiz bir script, bir .sh ile çalışıyor. ./script.sh yapınca çalışıyor. Bu scriptin içinde 2 komut var aslında. Biri build komutu docker image build diye. Öteki ise build bittikten sonra docker container run yapıyor.
Run yaptıktan sonra önce ad soruyor, sonra enter'a basıyoruz sonra doğum tarihi soruyor. Sonra tekrar entera basıyoruz sonra o kendi takılıyor yapması gerekeni yapıyor.
Ama burada mesele, phpde öyle bir çalıştırmak lazım ki bunu, biz php'de anlık olarak dediğiniz gibi bu iki sorunun cevabını verip olup biteni terminalde görüyor gibi görelim. Mümkün mü bu?
Ben araştıracağım ama araştıramıyorum tam olarak ne aratmam gerektiğini bilmiyorum.
Elimde bir kod da olmadığı için stackoverflow'da soramıyorum. Kod olmadan sorunca - atıyorlar hakaret falan ediyorlar. - 28-09-2021, 13:09:15Docker'ı ile hiç script geliştirip, kullanmadım lakin ufak bir ingilizce ile bu istediklerin yapılabilir çünkü docker test platformlarında bu parametreleri çok fazla kullanıyoruz.
docker command argv
docker command line args
https://vsupalov.com/docker-arg-env-variable-guide/
şeklinde araştırabilirsin. Bunu şey olarak düşünebilirsin eskiden oyunlarda para hilesi yapmak için oyunAdı.exe --money=500000 gibi yazardık. Bu args, argv olarak biliniyor. - 28-09-2021, 13:09:59Merhaba,
Öncelikle şunu düzeltmek isterim.
SSH veya SFTP ile bağlandığınızda karşınıza çıkan klasör bağlandığınız kullanıcının home yani varsayılan ev dizinidir. IP adresinin değil.
FTP için bağlandığınız kullanıcınnda home yani varsayılan ev dizin FTP hesabı açılırken belirtilen X bir dizin olduğu için o dizin açılır.
1. Madde için istediğiniz şeyde ince bir detay var. Oda şu;
htdocs klasöründeki dosya-dizin sahipliklerinin kullanıcısı kim? www-data mı yoksa x bir kullanıcı mı? Bunu neden soruyorum şu yüzden dosya yüklendiğinde /home/x/... klasörüne yani X kullanıcısının varsayılan home/ev dizinine (SSH ve SFTP den bağlandığında varsayılan olarak gelen klasöre) yüklenmesini istiyor iseniz htdocs klasöründeki dosya ve dizinler X kullanıcısınn sahipliğine ait ise yazılımda dosyanın yüklendiği fonksiyon,sınıf veya kısımda $path diye bir değişken oluşturup o değişkene /home/X/... yolunu verip dosyanın $path değişkenindeki yola yüklenmesini sağlayabilirsiniz. Bunun siz dinamik olmasını istiyor iseniz farklı bir durum söz konusu. Tersi işlem gerekiyor @BedirhanERKAN; bahsettiği gibi. Yani home dizinine değil dizini değiştirerek htdocs altına alarak.
2. Madde için ise;
shell_exec - exec - argv gibi php içerisinde shell komutlarını çalıştırabilirsiniz. Yani bahsettiğiniz sh scriptini çalıştırabilir geri dönüş alabilir buna istinaden de tekrar komut gönderebilirsiniz. Ancak şunu belirtmek isterim ki bunun dikkatli ve ayrı bir katmanda güvenli şekilde yapılması gerekir. Bu komutlar genelde hosting firmalarında kapalı olur. Çünkü bu komutlar sayesinde sunucuya shell,exploit,malware gibi zararlı yazılımlar bulaştırılabilir dolaylı yoldan. - 28-09-2021, 13:17:58Ayrıca
PHP Interactive Shell olarak aratabilirsiniz 2. Madde için ( Php Interactive Shell ) Kısaca özetlemek gerekir ise;
Bu php dosyası size interaktif bir shell ekranı sunuyor. Bu ekrandan bir nevi SSH ekranında gibi işlem yapabiliyorsunuz.
Tabi bu sadece bir ipucu. Yani ilgili linkteki sistemi inceleyip kullanmanız sizin sorumluluğunuzda. - 28-09-2021, 13:25:44Teşekkür ederim hocam, peki docker değilde düz python olsa daha mı basit olurdu? Örneğin ya şöyle diyeyim mesela burç hesaplatıyor python scripti, bu scripti python ile bağlarsak daha mı basit olur?BedirhanERKAN adlı üyeden alıntı: mesajı görüntüle
Hocam 1. maddeyi çözebilirim sanırım teşekkür ediyorum 1. halloldu diyelim.Ambassador adlı üyeden alıntı: mesajı görüntüle
2. İçin ise sadece ben kullanacağım gerekirse dosyayı şifreleyip girilmesini vs. engellerim. Daha nasıl güvenlik önlemi alınabilir bilemiyorum açıkcası.
Evet bu attığınız işlevsel çalışıyor gibi. Ancak sayfa kapanınca gider bu bence. Tarayıcı kapanınca da arkada çalışmaya devam eder mi?Ambassador adlı üyeden alıntı: mesajı görüntüle
Birde ben kullanıcı shell ile muhatap olsun istemiyorum.
Kullanıcı default html inputlarıyla giriş yapsın, o bilgiler shellde tetikleme yapsın istiyorum açıckası. - 28-09-2021, 13:32:45caylakgirisimci adlı üyeden alıntı: mesajı görüntüle
Böyle bir şey kullanıyor isen evet;
Python + flask ile sunucu üzerinden port açar ve yayın yaparak işlemleri sağlarsın ve direkt parametreleri gönderirsin. Ben bir çok projede bu şekilde yapıyorum ve kullanıyorum. - 28-09-2021, 13:33:17Tarayıcı kapanınca arkada çalışmaya devam etmesi sh scriptinin arkada çalışmasına devam etmesi ise hayır devam etmez çünkü php işlemini siz sonlandırmış oluyorsunuz kapatarak.
Ancak başta dediğiniz şey ile şu anda dediğiniz şey farklı. Bunu kullanıcıya yaptırmak istiyorsanız yani form input - submit vs buda yapılabilir tabi ki ilk mesajımda yazdığım komutlar ile ve detaylı sh script bilgisine sahip olarak yapabilirsiniz. Yada php worker ile de yapabilirsiniz. Fakat yapmak istediğiniz şeyi dah açık ve net belirtirseniz daha net yardımcı olabiliriz. Python tarafından bahsetmişsiniz. Python ile bu anlamda da her şeyi yapabilirsiniz. Komutlar gönderebilirsiniz geri dönüş yani callback alabilirsiniz.
Ancak burada karıştırdığınız şey şu docker ile python aynı mimariler değil aynı şeyler değil. Biri programlama dili biri ise sanallaştırma yazılımı kısacası.
Docker sizin projenizi ayağa kaldıran bir sanal sunucu oluyor. O yüzden docker yerine python dediğiniz anda sunucuya web server - mysql vb. gibi gerekli tüm bileşenleri kurup daha sonrasında python ile işlem yaptırmanız gerekir. Ancak yazılımınız PHP ise bunu php ile de yaptırabilirsiniz.