すべての通常のユーザーをシャドウにするAwk


8

スクリプトがあります。

/etc/shadowたとえば、シャドウファイルの2番目の用語が$またはで始まるすべてのユーザーから、すべての通常のユーザーを取得します!$

私のパターンは

sudo getent shadow | awk -F: '$2 ~ /^$/ || /^!$/ {print $1}'

今のところ機能しません。


それはawkでなければなりませんか?:-)
リンツウィンド

回答:


11

をエスケープする必要があります。$これは、「行の^始まり」のように「行の終わり」の特別な文字であるためです。

sudo getent shadow | awk -F: '$2 ~ /^\$/ || $2 ~  /^!\$/ {print $1}'

良いキャッチ+1):
Rinzwind

おかげで、それは動作します。ルートユーザーを含める必要はありません
danaso

1
簡体字:awk -F: '$2 ~ /^!?\$/ {print $1}'-これは、2つのマッチテストを組み合わせて言う「(必要に応じて、フィールドの先頭にドル記号と一致する?)が先行!
デニス・ウィリアムソン

4

パスワードが設定されているすべてのユーザーは、次のようにリストできます。

getent shadow | egrep '^[^:]*:[*!]:' -v | cut -f1 -d:
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.