/ / मुझे पासवर्ड फ़ाइल में एक सटीक शब्द के लिए grep करने की आवश्यकता है, लेकिन मुझे दो प्रतिक्रियाएं मिलती हैं - linux, shell, grep, ksh, etcpasswd

मुझे पासवर्ड फ़ाइल में एक सटीक शब्द के लिए grep की आवश्यकता है, लेकिन मुझे दो प्रतिक्रियाएं मिलती हैं - लिनक्स, खोल, grep, ksh, etcpasswd

मैं पासवर्ड फ़ाइल को पार्स करने के लिए grep का उपयोग कर रहा हूं।

जब मैं उपयोग करता हूं

grep -w "avahi" /etc/passwd

मुझे दो प्रतिक्रियाएं मिलीं
avahi तथा avahi-autoipd
मुझे अनूठी प्रतिक्रिया देने के लिए मुझे कोई विधि नहीं मिली।

यह कमांड एक बड़ी स्क्रिप्ट का हिस्सा है जहां नाम (avahi) वास्तव में एक चर है।

यह काम करता है जब नाम है rpc तथा rpcuser। इसलिए मैं अनुमान लगा रहा हूं कि इसका डैश के साथ कुछ करना है (-) नाम में।

वास्तविक कोड:

#!/bin/ksh
getent shadow |cut -d: -f1-2|grep ":!!"| cut -d: -f1 > /tmp/pasck
while read line
do
NOLOGIN=`grep -w $line /etc/passwd | cut -d -f7|cut -d/ -f3`
if [[ $NOLOGIN != "nologin: && $NOLOGIN != "false" ]] ; then
echo "$line" "$NOLOGIN" >> /tmp/pasck.list
fi
done <?tmp/pasck

स्क्रिप्ट छाया फ़ाइल के माध्यम से जाने और बिना पासवर्ड वाले उपयोगकर्ताओं की तलाश करने की कोशिश कर रही है। फिर मैं उन खातों को खोजने के लिए पासवार्ड फ़ाइल के परिणामों की तुलना करता हूं जिनके लिए सेट किया गया है /bin/false या /sbin/nologin। शेष वास्तविक उपयोगकर्ता होंगे जिनके पास कोई पासवर्ड सेट नहीं है लेकिन सिस्टम पर अनुमति है।

उत्तर:

उत्तर № 1 के लिए 4

चीजों को सरल रखते हुए - आप उस उपनिवेश को शामिल कर सकते हैं जो आपके उपयोगकर्ता नाम के बाद आता है grep बयान:

$ grep "^avahi:" /etc/passwd

जवाब के लिए 0 № 2

आप उपयोग कर सकते हैं और स्पष्ट रूप से पहले बृहदान्त्र-पृथक क्षेत्र का परीक्षण करें:

awk -F: "$1 = "avahi"" /etc/passwd