Mac'te terminal komutlarına GUI üzerinden bilgi ve parola girişi almak.

Terminal aracılığı ile işlerimizi otomatize eden scriptler yazabilir. Bu scriptlerin kullanıcı ile etkileşime girmesi gerekebilir. Örneğin, işlem ve yetkilendirme için parola istemek veya herhangi bir metin girişi istemek.

Bu durumda kullanıcı terminal üzerinden istenilen bilgiyi girebilir. Fakat terminal üzerinden bilgi girişi yapmak son kullanıcı için kafa karıştırıcı olabilir.

Kullanıcı ile etkileşime girilen bu noktada bir arayüz (GUI) üzerinden bilgi girişi alsak ve sonrasında scriptimiz otomatize ettiğimiz işi yapmaya devam etse diye düşünürken, kısa bir araştırma sonucunda aşağıda paylaştığım pencere görüntüsünü elde edebileceğim osascript ile karşılaştım.

Mac'te osascript ile kullanıcıdan input almak.

user_input=$(osascript <<EOF
  set dialogTitle to "PencereBasligi"
  set titledialog to display dialog "Açıklama: " default answer "" with answer buttons {"İptal", "Tamam"} default button "Tamam" with title dialogTitle
  set buttonPressed to button returned of titledialog
  set dialogResult to text returned of titledialog
  if buttonPressed is "İptal" then
      error "Kullanıcı İptal etti."
  else
      dialogResult
  end if
EOF
)

Artık user_input değişkenini kontrol ederek kodu hayatına devam ettirebiliriz.

Düz bir metin girişini veya parolayı bu şekilde kullanıcıdan temin edebiliriz fakat parolasını yazdığı zaman  ekranda okunabileceği için bu tip giriş parola güvenliğini tehlikeye düşürecektir. Bu kabul edilebilir bir durum değil. Bu yüzen kullanıcıdan parolasını girmesi için gönderdiğimiz osascripte “hidden” parametresini eklememiz gerekiyor. Parametre ekli haldeki osascripti yine aşağıda paylaşıyorum.

password=$(osascript <<EOF
set dialogTitle to "Pencere Basligi"
set passwordDialog to display dialog "Parolanızı girin:" default answer "" with hidden answer buttons {"İptal", "Tamam"} default button "Tamam" with title dialogTitle
set buttonPressed to button returned of passwordDialog
set passwordResult to text returned of passwordDialog
if buttonPressed is "İptal" then
  error "Kullanıcı İptal etti."
else
  passwordResult
end if
EOF
)

Terminal komutlarımıza gui ile kullanıcıdan bilgi ve parola girişi sağladık. Böylece etkileşimi  kullanıcı deneyimi açısından daha verimli bir hale getirdiğimizi düşünüyorum.

Umarım faydalı olur.

Scriptleri örnek amaçlı paylaşıyorum. Olası güvenlik açıkları ve ya kod hatalarından doğabilecek sorunların sorumluluğu tamamen kullanıcıya aittir.

Hiç yorum yok:

Yorum Gönder