Merhaba.
Birkaç günden beri bash script'te takıldığım birkaç yerle uğraşıyorum. Öncelikle, bash dilinde bilgimin temel düzey olduğunu belirtmek istiyorum. İnternette sorularımı cevaplayabilecek türkçe kaynak ya da örnek bulamadım. İngilizce dili konuşulan bir foruma ise, konu açıp derdimi anlatabilecek kadar ingilizce bilgim yok. Bash dilinde, sistem açılışında otomatik başlatmayı hedeflediğim bir script yazdım. Amacım, istediğim yazılım ve komutları otomatik çalıştırmaktan ziyade, bash dilini ve bash dilindeki kafama takılan, aşağıda anlatacağım işlemlerin algoritmasını ve kodlarını yazarak ve çalıştırarak anlamak.
Not: Yazdığım script'te istediğim komutun çalışması için sorulan parolayı nasıl tanımlayabileceğimi ya da komutu parola sormasını engelleyerek, istediğim kullanıcı üzerinde çalıştırabileceğimi bilmediğimden, sudoers aracılığıyla, sudo komutundaki parola onayını kapatıp, sudo ekleyerek yazdım.
Yazdığım script bu:
#!/bin/bash
sudo -u root systemctl restart NetworkManager
sudo -u root rm -rf /home/mahmut/Downloads
sudo -u root rm -rf /home/mahmut/.local/share/Trash/files/*
if [ $USER == mahmut ]
then
if sudo -u mahmut -E konsole | sudo -u mahmut -E /opt/sublime_text_3/sublime_text | sudo -u mahmut -E /usr/bin/chromium ns1.google.com | sudo -u root systemctl start httpd
then
echo "Yazılım ya da yazılımlar başlatıldı."
else
echo "HATA: Yazılım ya da yazılımlar başlatılamadı."
fi
else
echo "HATA: Yazılımlar başlatılamadı. Giriş yapılan kullanıcı 'mahmut' kullanıcısı değil."
fi
İlk takıldığım yer, ilk if koşulundaki komutları açtırmadan önce konsole uygulamasını açıp, if koşulunun konsole uygulaması üzerinde çalışmasını istiyorum. Örneğin; sudo -u mahmut -E /usr/bin/chromium ns1.google.com komutunda chromium'un ns1.google.com adresindeki sekmeyle açılması gibi konsole'un da yukarıdaki en üstteki if koşuluyla çalışmasını istiyorum.
İkinci takıldığım yer ise, uygulamanın çalışıp çalışmadığı kontrol ettirme işlemini nasıl koda dökebileceğim konusu. İkinci if koşulunda belirttiğim bu komutlardaki uygulamaların sudo -u mahmut -E konsole | sudo -u mahmut -E /opt/sublime_text_3/sublime_text | sudo -u mahmut -E /usr/bin/chromium ns1.google.com | sudo -u root systemctl start httpd çalışma durumunu, ikinci if koşulunda then bölümüne, ekleyeceğim üçünçü if koşulu kontrol ettirip, sonuca göre hangi yazılımın başlatıldığını veya başlatılamadığını konsole'a yazmasını istiyorum. Bunun için aklıma bir algoritma geldi. Fakat bilgim temel düzey olduğu için koda dökemedim. Aklıma gelen algoritma şu; ps -aux ile aktif süreçlerin çıktısını alıp, grep ile kontrol ettirmek istediğimiz süreç isimlerini aratıp, bu sonucu bir metin belgesine aktarıp, metin belgesi içinde ilgili süreçlerin adını aratmak, ardından, adı bulunan ve bulunmayan süreçleri echo komutu ile yazdırmak. Yazdırdıktan sonra da, metin belgesinin sed ile içini boşaltmak.
Belki bu işlemler için, daha basit bir algoritma veya yardımcı olabilecek araç vardır. Varsa, önerilerinize açığım. Yoksa da, bir yardımseverin, bu algoritmadaki işlemi koda dökmesini rica ediyorum. Üstteki script'te yapmak istediklerimi daha farklı bir algoritmayla yapabileceksem, algoritma önerilerinize de açığım.