5 votos

¿Cómo puedo desmontar una unidad con un script?

He instalado sleepwatcher para ejecutar ~/.sleep antes de que mi equipo se va a dormir.

Necesito desmontar /Volumes/Backup antes de que mi equipo se queda dormido. Si me olvido de hacerlo, me sale un mensaje diciéndome que me insegura desmonta la unidad, etc. cuando el equipo se reanuda. Es una rara externo Seagate de la unidad de fallo. Lucky me.

Así que estoy tratando de solucionar el problema con Sleepwatcher por el desmontaje de la unidad antes de que el sistema duerme. Obviamente sudo y la contraseña que se requiere es de pie en mi camino.

Alguna idea?

No puedo usar el echo "password" | sudo -S xx xx método porque mi contraseña contiene un dólar ($) firmar, Así que necesito otra forma de inyección.

Si puedo eliminar el requisito de contraseña de /etc/sudoers, el sistema se vuelve muy inseguro.

Así que las ideas creativas?

8voto

moodforaday Puntos 2633

Usted no necesita sudo a desmontar una unidad.

Uso diskutil

El siguiente comando expulsa el volumen Backup:

diskutil eject /Volumes/Backup

Esto debería hacerlo, aunque (IIRC) es posible que desee...

diskutil unmount /Volumes/Backup

...para hacer más fácil para volver a montar sin tener que desconectar/conectar la unidad.

Expulsión De Todos Los Discos

Si desea asegurarse de que usted ha expulsado de sus discos, puedes intentar esto:

osascript -e 'tell application "Finder" to eject (every disk whose ejectable is true)'

Herramienta De Terceros: La Montaña

También hay Montaña que automatizará esta para usted.

Herramienta De Terceros: Teclado Maestro

Por encima de todas las demás ideas, yo recomendaría Teclado Maestro que puede hacer todas estas cosas en el sueño, y volver a montar la unidad en la vigilia, más de 1.000 otras cosas.

1voto

Douglas Puntos 10417

Usted puede tener un "$" en su instrucción echo, sólo tienes que escapar de él.

$ echo "$abc123"
                         <-----Results in a blank line

Sin embargo

$ echo "\$abc123"
$abc123                  <-----Works

También, en lugar de utilizar comillas dobles, use comillas simples para encapsular la cadena:

$echo '$abc123'
$abc123                  <-----Works

Básicamente, lo que sucede es que dentro de las comillas dobles ("), conserva los valores literales de los personajes, con la excepción de que el signo de dólar ("$"), la tilde ("~"), y la barra diagonal inversa ("\"). Al encerrar el texto dentro de una comilla simple ('), conserva todos los personajes, período.

Modificar Su sudoers archivo.

Con eso aclarado, no guardar/uso de contraseñas en texto claro en el script es igual de inseguro!

En su lugar, lo que usted debe hacer es modificar su sudoers archivo, de modo que la concesión "sin contraseña" de acceso a ese comando solo.

username ALL = (ALL) ALL
username ALL = (root) NOPASSWD: /path/to/foo/bar/command

Con este método, puede dejar la seguridad de su sistema intacto y permitir el uso de la sudo sin contraseña para este comando en particular.

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