Awk untuk mendapatkan semua pengguna reguler saya di bayangan


8

Saya punya skrip.

Saya ingin mendapatkan semua pengguna reguler saya dari /etc/shadowmisalnya semua pengguna yang istilah kedua dalam file bayangan dimulai dengan $atau !$.

Pola saya adalah

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

Untuk saat ini tidak berfungsi.


apakah itu harus awk? :-)
Rinzwind

Jawaban:


11

Anda harus melarikan diri $, karena ini adalah char khusus untuk "End of Line" seperti ^"Beginning of Line".

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

+1 tangkapan bagus :)
Rinzwind

Terima kasih, ini berhasil. Saya hanya perlu untuk tidak memasukkan pengguna root
danaso

1
Sederhana: awk -F: '$2 ~ /^!?\$/ {print $1}'- Ini menggabungkan dua tes pertandingan dan mengatakan "cocok dengan tanda dolar di awal bidang, opsional ( ?) didahului oleh !"
Dijeda sampai pemberitahuan lebih lanjut.

4

Semua pengguna dengan kumpulan kata sandi dapat dicantumkan seperti ini:

getent shadow | egrep '^[^:]*:[*!]:' -v | cut -f1 -d:
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.