Comando para comprobar si los usuarios de /etc/passwd existen en un archivo diferente

Comando para comprobar si los usuarios de /etc/passwd existen en un archivo diferente

¿Es posible consultar el archivo /etc/passwd para ver todos los UIDS de usuario inferiores a 200 y comprobar si esos usuarios están dentro de un archivo como /etc/ftpusers?

Hasta ahora, he logrado crear el siguiente comando que enumera a todos los usuarios con un UID inferior a 200, pero no estoy seguro de cómo verificar si esos usuarios enumerados están dentro del archivo /etc/ftpusers.

grep -Ev "^\+" /etc/passwd | awk -F: '($3 < 200) {print $1}'

Si algún usuario no está en el archivo, necesito que se genere la diferencia. Intenté utilizar una declaración for pero no funcionó bien.

Respuesta1

No sé si aix difftengo la misma opción, GNU diffpero en mi linuxesto cuando se ejecuta con ksh(el shell predeterminado en aix) funciona:

diff -I "^#" --new-line-format="" --unchanged-line-format="" <(awk -F: '$3 < 200  {print $1}' /etc/passwd) /etc/ftpusers

Si el diffcomando difiere, intente con un bucle:

for u in $(awk -F":" '$3 < 200 {print $1}' /etc/passwd); do
        count=$(grep -scx "$u" /etc/ftpusers)
        [ "$count" -gt 0 ] || echo "$u"
done

Lo he probado kshy funciona.

También he comprobado las grepopciones disponibles en el grepsistema distribuido aixy admite tanto -ccontar como -ssuprimir mensajes de error.

información relacionada