Bu terminal oturumu için sudo şifresinin girilip girilmediğini nasıl kontrol edebilirim?


16

Başlıkta belirtildiği gibi, bu terminal oturumu için sudo şifresinin bir kabukta girilip girilmediğini kontrol etmem gerekiyor (aka, şimdi sudo haklarına sahipsem).

Eğer sahipsem, bir şey yapmak isterim ve eğer sahip değilsem, o zaman beni uyarmamalı, sadece başka bir şey yapmama izin ver.

Yani sözde kodda şöyle görünür:

if (sudo = true)
   echo "i got sudo"
else
   echo "i dont have sudo"
fi

Ama bunun için bulduğum tüm komutlar kontrol etmeye çalışırken her zaman sudo şifresini istiyor.

Temel fikir komut dosyası (ve sudo) birkaç yerde sudo şifresi isteyebilir, ancak "Komut dosyası şimdi sudo şifrenizi isteyecektir." önceden girilmişse (sudo şifresini istemeyeceği anlamına gelir).

Umarım birisi bana yardım edebilir.

Yanıtlar:


21

Kullanabilirsiniz:

if sudo -n true 2>/dev/null; then 
    echo "I got sudo"
else
    echo "I don't have sudo"
fi

-n(Etkileşimli olmayan) seçeneği önler sudokullanıcıya parola istemeden gelen. Komutun çalışması için bir parola gerekiyorsa, sudobir hata mesajı görüntüler (yeniden yönlendirilir /dev/null) ve çıkar. Parola gerekli değilse, o zaman bu ifade doğrudur: sudo -n true 2>/dev/null.


4
Bir dizeyi yankılamak ve başka bir dizeyle karşılaştırmak gerçekten yardımcı olmaz, sudo'dan çıkış kodu test için yeterlidir. İlk satırif sudo -n true 2>/dev/null; then
Steven K

@StevenKath Aynı şeyi yapar, ancak öneri için teşekkürler. Öneriniz daha zarif olduğu için cevabımı geliştirdim.
Radu Rădeanu

2
Bu AskUbuntu olduğunu biliyorum, ama bu MacOSX çalışmıyor, sudo -n her zaman 0 döndürür, bu yüzden dönüş kodu kontrol başarısız olur. Bunu burada söylüyorum çünkü bunu aradım ve bu sayfa Google'da geliyor.
Mart'ta Normadize, 0

1
mail_badpassSudo'larda etkinleştirilmişse her parola gerektiğinde kök dizine posta göndereceği için bu kötü bir fikirdir .
nyuszika7h
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.