Ich habe Sleepwatcher so installiert, dass es ausgeführt wird, ~/.sleep
bevor mein Computer in den Ruhezustand wechselt.
Ich muss die Bereitstellung aufheben /Volumes/Backup
, bevor mein Computer einschläft. Wenn ich es vergesse, erhalte ich eine Meldung, die mir mitteilt, dass ich das Laufwerk usw. unsicher getrennt habe, wenn der Computer wieder hochfährt. Es ist ein seltener externer Seagate-Laufwerksfehler. Ich Glückspilz.
Also versuche ich, das Problem mit Sleepwatcher zu beheben, indem ich das Laufwerk aushänge, bevor das System in den Ruhezustand wechselt. Offensichtlich sudo
steht mir das benötigte Passwort im Weg.
Irgendwelche Ideen?
Ich kann die Methode nicht verwenden echo "password" | sudo -S xx xx
, weil mein Passwort ein Dollarzeichen ($) enthält, also brauche ich eine andere Form der Injektion.
Wenn ich die Passwortanforderung aus entferne /etc/sudoers
, wird das System sehr unsicher.
Also irgendwelche kreativen Ideen?
Sie müssen ein Laufwerk nicht sudo
aushängen.
diskutil
Der folgende Befehl wirft das Volume aus Backup
:
diskutil eject /Volumes/Backup
Dies sollte es tun, obwohl (IIRC) Sie vielleicht möchten ...
diskutil unmount /Volumes/Backup
…um das erneute Mounten zu erleichtern, ohne das Laufwerk physisch trennen/wieder anschließen zu müssen.
Wenn Sie sicherstellen möchten, dass Sie alle Ihre Festplatten ausgeworfen haben, können Sie Folgendes versuchen:
osascript -e 'tell application "Finder" to eject (every disk whose ejectable is true)'
Es gibt auch Mountain , das dies für Sie automatisiert.
Vor allem würde ich Keyboard Maestro empfehlen , das all diese Dinge im Ruhezustand erledigen und Ihr Laufwerk im Wachzustand wieder einhängen kann, sowie 1.000 andere Dinge.
Sie können ein "$" in Ihrer Echo-Anweisung haben, Sie müssen es nur maskieren.
$ echo "$abc123"
<-----Results in a blank line
Jedoch
$ echo "\$abc123"
$abc123 <-----Works
Verwenden Sie außerdem anstelle von doppelten Anführungszeichen einfache Anführungszeichen, um Ihre Zeichenfolge zu kapseln:
$echo '$abc123'
$abc123 <-----Works
Was im Grunde passiert, ist, dass innerhalb doppelter Anführungszeichen (") die wörtlichen Werte der Zeichen mit Ausnahme des Dollarzeichens ("$"), der Tilde ("~") und des umgekehrten Schrägstrichs ("\" beibehalten werden. ).Wenn Sie Ihren Text in ein einfaches Anführungszeichen (') setzen, bleiben alle Zeichen und der Punkt erhalten.
sudoers
Datei.Wenn das geklärt ist, speichern/verwenden Sie keine Passwörter im Klartext in Ihrem Skript, da dies ebenso unsicher ist!
Stattdessen sollten Sie Ihre sudoers
Datei so ändern, dass Sie nur diesem Befehl "kein Passwort" Zugriff gewähren.
username ALL = (ALL) ALL
username ALL = (root) NOPASSWD: /path/to/foo/bar/command
Mit dieser Methode lassen Sie Ihre Systemsicherheit intakt und ermöglichen die Verwendung sudo
ohne Passwort für diesen einen bestimmten Befehl.