0 votos

¿Cómo montar una imagen de disco con automator o Applescript y sin hdiutil?

Un flujo de trabajo de Automator que monte una imagen de disco cuando arrastre y suelte el archivo dmg en él es fácil: enter image description here

En lugar de arrastrar y soltar el archivo dmg quiero hacer doble clic en el flujo de trabajo creado y hacer que monte un archivo específico. He intentado usar "Establecer valor de variable" a la ruta del dmg, "Abrir elementos del Finder" y "Obtener elementos de carpeta seleccionados", nada funciona.

Puedo hacerlo con la línea de comandos como:

hdiutil mount disk_image_name.dmg

También he probado con el Applescript:

    on run {input, parameters}

        tell application "DiskImageMounter"
            open "path/disk_image_name.dmg"
        end tell
    end run

Pero después de montar la imagen de disco como se esperaba, Automator se congela durante unos 15 segundos y da el siguiente error de sintaxis.

enter image description here

La razón por la que quiero evitar usar hdituil es que las imágenes de disco están encriptadas. Cuando se utiliza la herramienta de montaje de Automator la contraseña se hace en el cuadro de diálogo de Apple. Usando hdiutil termino pasando la contraseña como stdin.

printf '%s\0' "$PASSPHRASE" | hdiutil attach $LOCATION -stdinpass

0 votos

¿Hay alguna buena razón por la que no pueda hacer doble clic en el archivo DMG de destino en Finder? Eso le pedirá la contraseña y montarlo si se da la contraseña adecuada.

0 votos

No utilice Contador de imágenes de disco . Este es un caso en el que debe utilizar Buscador ya que es más fiable (que es el sólo vez que esto sea cierto).

0 votos

@user3439894 No puedo simplemente hacer doble clic porque hay más en el flujo de trabajo que simplemente montar la imagen.

2voto

klanomath Puntos 19587

Yo usaría hdiutil ... en lugar de otros métodos, pero con una imagen protegida por un certificado en lugar de una contraseña. Esto es similar a construir una imagen encriptada con una contraseña y una clave de recuperación (basada en un cert) - aunque sin contraseña:

  1. Crea una carpeta temporal de cert y cd en ella:

    mkdir ~/certsecdmg
    cd ~/certsecdmg 
  2. Cree una CA root si aún no tiene una:

    openssl genrsa -des3 -out casecdmg.key 4096
    openssl req -new -x509 -days 7300 -key casecdmg.key -out casecdmg.crt

    Rellene todos los campos propuestos.

  3. Crear una solicitud de firma de certificado protegida por contraseña:

    openssl genrsa -des3 -out secdmgbuild.key 4096 
    openssl req -new -key secdmgbuild.key -out secdmgbuild.csr

    Rellene todos los campos propuestos.

  4. Crear el certificado firmado en formato PEM

    openssl x509 -req -days 7300 -in secdmgbuild.csr -CA casecdmg.crt -CAkey casecdmg.key -set_serial 01 -out secdmgbuild.crt
  5. Convertir el certificado firmado a formato DER

    openssl x509 -in secdmgbuild.crt -inform pem -out secdmgbuild.der -outform der   
  6. Agrupe el certificado PEM y la clave privada en un paquete PKCS#12

    openssl pkcs12 -export -in secdmgbuild.crt -inkey secdmgbuild.key -out secdmgbuild.p12
  7. Utilice hdiutil con el -certificado opciones para crear un volumen encriptado (sólo ejemplo):

    hdiutil create -type SPARSE -encryption aes-256 -certificate ~/certsecdmg/secdmgbuild.der -fs HFS+J -volname "SecureImage" -size 100m ~/Desktop/SecureImage
  8. Importar secdmgbuild.p12 en su llavero

  9. Haga doble clic en SecureImage.sparseimage Entra: contraseña del paso 3/permitir siempre para permitir siempre el acceso de diskimages-helper.

  10. Cree un nuevo flujo de trabajo Automator, añadiendo una acción Ejecutar Shell script con el siguiente comando:

    hdiutil mount ~/Desktop/SecureImage.sparseimage

    (por favor, aplique los caminos según sea necesario)

    Este sencillo flujo de trabajo de Automator funciona como "flujo de trabajo" y "aplicación".

  11. Añada otras acciones si es necesario.

  12. Guardar el contenido de la carpeta certsecdmg en un lugar seguro y retíralo después.

0 votos

@user3439894 puede requerir alguna entrada que depende de "@user3439894 no puedo simplemente haga doble clic en porque el flujo de trabajo no se limita a montar la imagen . - OrigamiEye hace 8 horas"

1 votos

@user3439894 Otra cita: "En lugar de arrastrar y soltar el archivo dmg quiero hacer doble clic en el flujo de trabajo creado y que monte un archivo específico." El flujo de trabajo simple consistente únicamente en la acción "ejecutar shell script ...", funciona tanto como flujo de trabajo como app (ambos probados).

0 votos

Es interesante, pero no es lo que buscaba.

0voto

OrigamiEye Puntos 21

El código de mi AppleScript estaba causando problemas.

El flujo completo del automator son 2 Apple scripts, uno para establecer la variable para la ubicación del fichero y otro para ejecutarlo.

El primer script:

on run {input, parameters}

    set output to "NameOfImage"

    return output
end run

El siguiente

on run {input, parameters}
    set imagePath to "Macintosh HD:Rest of Path:" & (item 1 of input) & ".dmg"
    tell application "DiskImageMounter"
        try
            open alias imagePath
        end try
    end tell
end run

Ejecutar el código anterior en script Editor produjo un mensaje de error en lugar de tiempo de espera.

error "DiskImageMounter obtuvo un error: La conexión no es válida." número -609

No sé por qué una sentencia try lo arregló o por qué necesita el alias, pero no hay mucha información disponible sobre AppleScript.

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