Awk để có được tất cả người dùng thường xuyên của tôi trong bóng tối


8

Tôi có một kịch bản.

Tôi muốn nhận tất cả người dùng thông thường của mình, /etc/shadowví dụ: tất cả người dùng có thuật ngữ thứ hai trong tệp bóng bắt đầu bằng $hoặc !$.

Mẫu của tôi là

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

Nó không hoạt động bây giờ.


nó có phải là awk không? :-)
— Rinzwind

Câu trả lời:


11

Bạn cần phải thoát khỏi $, vì nó là một char đặc biệt cho "End of Line" giống như ^"Beginning of Line".

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

+1 bắt tốt :)
— Rinzwind

Cảm ơn, nó hoạt động. Tôi chỉ cần không bao gồm người dùng root
— danaso

1
Đơn giản hóa: awk -F: '$2 ~ /^!?\$/ {print $1}'- Điều này kết hợp hai bài kiểm tra khớp và cho biết "khớp với ký hiệu đô la ở đầu trường, tùy chọn ( ?) đứng trước dấu !"
— Tạm dừng cho đến khi có thông báo mới.

4

Tất cả người dùng có mật khẩu được đặt có thể được liệt kê như thế này:

getent shadow | egrep '^[^:]*:[*!]:' -v | cut -f1 -d:
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookie và Chính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.