5 votos

Uso mdfind para identificar a todos los cifrados dmg?

Puede alguien sugerir una forma inteligente para identificar todos dmg que están cifrados?

Mi única idea es bastante complicado. uso mdfind '(kMDItemFSName=*.dmg)' y, a continuación, probar la respuesta de hdiutil imageinfo y registrar el resultado de los que pide una contraseña. Gracias a la respuesta y comentarios, el siguiente comando se ejecuta todo el dmg a través de hdiutil, pero no puedo averiguar cómo identificar a los que dar un error. Alguna idea?

mdfind -0 "kMDItemFSName=*.dmg" |xargs -0 -I{} -L 1 hdiutil imageinfo {}

2voto

klanomath Puntos 19587

Spotlight simplemente no tiene suficientes metadatos para diferenciar el sistema de ficheros de opciones almacenados dentro de un DMG. Dicho de otra manera, es como preguntar ¿qué Páginas de documentos francés palabras en ellos, utilizando sólo mdls. Los datos para hacer que la búsqueda no está contenida en los metadatos.

El comando adecuado para comprobar si un determinado archivo de imagen está codificada es hdiutil isencrypted /path/to/dmg

Ejemplo:

host:~ user$ hdiutil isencrypted /Users/user/Downloads/test.dmg

Salida:

encrypted: YES
blocksize: 512
uuid: DE78A7BE-2B64-4556-8EC9-93DFAC15A839
private-key-count: 0
passphrase-count: 1
max-key-count: 1
version: 2

1voto

user3439894 Puntos 5883

En el momento presente en mi disco local tengo 88 .dmg archivos, de los cuales tres están cifrados. Antes de ejecutar la línea de comandos siguiente no sabía cómo muchos cifrados .dmg archivos que he tenido y si cualquier, lugar donde se encontraban. Así, mientras que la siguiente línea de comandos puede parecer complicado, no obstante, que debería funcionar como se anuncia.

Abrir Terminal y copiar y pegar toda la línea de comandos a continuación, como es, en la Terminal , a continuación, presione Entrar.

mdfind '(kMDItemFSName=*.dmg)' | while IFS= read -r line; do printf "$line " & hdiutil isencrypted "$line"; done > dmg_file_list; grep ': YES' dmg_file_list > encrypted_dmg_file_list; clear; cat encrypted_dmg_file_list

Esto creará dos archivos, dmg_file_list y encrypted_dmg_file_list, y la salida el contenido de este último para el Terminal. Los archivos se pueden abrir en un editor de texto.

Los ficheros contendrán el nombre completo de la ruta de la .dmg archivos seguido por un espacio y ya sea cifrada: NO o cifrado: SÍ en el dmg_file_list archivo y sólo el nombre completo de la ruta de la .dmg archivos seguido por un espacio y cifrada: SI en el encrypted_dmg_file_list archivo.

Usted puede, a continuación, elimine manualmente los dos archivos creados por el comando cuando haya terminado con ellos.

Nota: una Vez que la línea de comandos se ejecuta si puede tomar un momento para procesar y obtener el contenido de la encrypted_dmg_file_list archivo a la Terminal. Esto dependerá de cuántos .dmg archivos que hay.

Aquí está la línea de comando completa se muestra con la línea de continuación para asegurarse de que copiar y pegar en toda la línea. (En realidad se puede copiar y pegar la línea de comandos en este formato también.)

mdfind '(kMDItemFSName=*.dmg)' | while IFS= read -r line; \
do printf "$line " & hdiutil isencrypted "$line"; \
done > dmg_file_list; grep ': YES' dmg_file_list > encrypted_dmg_file_list; \
clear; cat encrypted_dmg_file_list

1voto

Michael Zhou Puntos 167

Una solución usando mdfind -0 y xargs :

mdfind -0 "kMDItemFSName == '*.dmg'" | xargs -0 -IX ksh -c '
    if    hdiutil isencrypted "X"  2>&1 | grep -q "encrypted: YES"
    then  echo "X -ENCRYPTED"
    fi'

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X