अगर इस टर्मिनल सत्र के लिए sudo पासवर्ड दर्ज किया गया है, तो कैसे जांचें?


16

जैसा कि हेडलाइन में कहा गया है, मुझे यह जांचने की आवश्यकता है कि क्या इस टर्मिनल सत्र के लिए शेल (उर्फ, अगर मेरे पास सूडो अधिकार है) में सूडो पासवर्ड दर्ज किया गया है या नहीं।

अगर मेरे पास है, तो मैं एक काम करना चाहूंगा और अगर मेरे पास नहीं है, तो मुझे इसके लिए संकेत नहीं देना चाहिए, बस मुझे एक और काम करने देना चाहिए।

इसलिए छद्म कोड में ऐसा दिखता है:

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

लेकिन इसके लिए मुझे मिलने वाली सभी कमांड मुझे हमेशा जांचने की कोशिश करने के लिए सूडो पासवर्ड के लिए प्रेरित करती है।

मूल विचार यह है कि स्क्रिप्ट कई स्थानों पर सूडो पासवर्ड मांग सकती है, लेकिन मैं यह नहीं छापना चाहता हूं कि "अब स्क्रिप्ट आपके सूडो पासवर्ड की मांग करेगी।" अगर यह पहले से ही दर्ज किया गया है (जिसका मतलब है कि यह sudo पासवर्ड के लिए नहीं पूछेगा)।

उम्मीद है कि कोई मेरी मदद करे।

जवाबों:


21

आप उपयोग कर सकते हैं:

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

-n(गैर-सहभागी) विकल्प रोकता है sudoपासवर्ड के लिए उपयोगकर्ता को संकेत से। यदि कमांड चलाने के लिए पासवर्ड आवश्यक है, तो sudoएक त्रुटि संदेश (रीडायरेक्टेड /dev/null) और बाहर निकलने के लिए प्रदर्शित होगा । यदि पासवर्ड की आवश्यकता नहीं है, तो यह अभिव्यक्ति सही है sudo -n true 2>/dev/null:।


4
यह वास्तव में एक स्ट्रिंग को प्रतिध्वनित करने में मदद नहीं करता है और किसी अन्य स्ट्रिंग से इसकी तुलना करता है, सुडो से निकलने वाला कोड परीक्षण के लिए पर्याप्त है। पहली पंक्ति हो सकती हैif sudo -n true 2>/dev/null; then
स्टीवन के

@StevenKath यह वही काम करता है, लेकिन सुझाव के लिए धन्यवाद। मैंने आपके उत्तर को बेहतर बनाया क्योंकि आपका सुझाव अधिक सुरुचिपूर्ण है।
रादु राईडेनु

2
मुझे पता है कि यह AskUbuntu है, लेकिन यह MacOSX में काम नहीं करता है, sudo -n हमेशा 0 रिटर्न देता है इसलिए रिटर्न कोड विफल रहता है। मैं यह यहाँ कह रहा हूँ क्योंकि मैंने इसके लिए खोज की है और यह पृष्ठ Google में आया है।
Normadize

1
यह एक बुरा विचार है क्योंकि यह हर बार रूट करने के लिए मेल भेजेगा यदि एक पासवर्ड की आवश्यकता होगी जो कि mail_badpasssudoers में सक्षम है।
nyuszika7h
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.