Mac'te terminal komutlarına kullanıcıdan arayüz üzerinden bilgi ve parola girişi almak.

Terminal aracılığı ile işlerimizi kolaylaştıran programlar yazabiliriz. Bu programlar kullanıcı etkileşimine ihtiyac duyabilir.Örnegin, bir metin girişi, parola girişi gibi. Bu durumda kullanıcı terminal üzerinde kendisine soru yöneltilen yere ilgili bilgiyi girmelidir ama bu durum son kullanıcı için biraz kafa karıştırıcı ve zor olabilir. Kullanıcı ile etkileşime girdiğimiz noktada bir arayüz(gui) üzerinden bilgi girişi alsak ama komut dosyamız programladığımız işlerimizi yine otomatik yapsa güzel olur diye düşündüm. Kısa bir araştırma sonucunda osascript ile aşağıda fotoğraflarını paylaştığım ekranı elde edebildim.

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
)

Metin bilgi girişini bu ekrandan alabiliriz. user_input değişkenini değeri kontrol edilerek işlemlere devam edilebilir yada bir döngü içinde boş olup olmadığı kontrol edilerek kod hayatına devam ettirilebilir. 

Metin bilgi girişi için gayet kullanılabilir bir ekran ama burada peki ya parola? Bu ekranda kullanıcıdan parolasını isteyerek parolayı değişkende tutarak koda devam edebilirsiniz ama burada parola istediğimiz zaman parolayı yazarken textbox'ta gizli görünmeyecek yani ekranda gördüğünüz gibi son kullanıcnın yazdığı metin etrafındaki başka insanlar tarafından da görülebilir. Bu durum hoş bir deneyim değil. Bu yüzden kullanıcının parolasını girmek için yukarıdaki scriptte "hidden" parametresini eklememiz yeterli. scripti hemen yeniden yazı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ş sağladık. Umarım faydalı olur. 




Hiç yorum yok:

Yorum Gönder