Me han dado el siguiente plist que apunta a un bash script.
El script se supone que elimina el instalador (El capitan.app) después de que se haya descargado para evitar que la gente se actualice a él.
No funciona y no estoy seguro de lo que hay que cambiar/ajustar, si es que hay algo, al script. No consigue borrar el instalador descargado.
He colocado el script en la ubicación /usr/local/bin, nombre de archivo blockelcapitan.sh y también puedo confirmar que el dameon de lanzamiento (almacenado en /Library/LaunchDaemons) se carga como se confirma usando el comando:
sudo launchctl list | grep net.
que muestra un resultado de:
- 78 net.ORG.blockelcapitan
Necesito ayuda con el script, no tengo ni idea de si es correcto o qué hay que añadir/quitar/cambiar.
#!/bin/bash
Version=$(sw_vers | grep ProductVersion | tail -c 7 | cut -d . -f 2)
if [[ $Version -ge 11 ]]
then
sudo launchctl unload /Library/LaunchDaemons/net.ORG.blockelcapitan.plist
sudo rm -rf /Library/LaunchDaemons/net.ORG.blockelcapitan.plist
sudo rm -rf /var/ORG/ElCapitan/
sudo rm -rf /var/db/receipts/net.ORG.pkg.BlockElCapitanLaunchDaemon.bom
sudo rm -rf /var/db/receipts/net.ORG.pkg.BlockElCapitanLaunchDaemon.plist
exit 0
fi
rm -rf /Applications/Install\ OS\ X\ El\ Capitan.app/
osascript -e 'display dialog "OS X El Capitan is not allowed on ORG computers at this time." with title "ORG Technology Notice" buttons {"OK"} default button "OK" giving up after 30'
Post-flight for installer PKG (you’ll want to use something like Packages for Mac to build a deployable .pkg):
#!/bin/bash
launchctl load -w /Library/LaunchDaemons/net.ORG.blockelcapitan.plist
Version=$(sw_vers | grep ProductVersion | tail -c 7 | cut -d . -f 2)
if [[ $Version -ge 11 ]]
then
sudo launchctl unload /Library/LaunchDaemons/net.ORG.blockelcapitan.plist
sudo rm -rf /Library/LaunchDaemons/net.ORG.blockelcapitan.plist
sudo rm -rf /var/ORG/ElCapitan/
sudo rm -rf /var/db/receipts/net.ORG.pkg.BlockElCapitanLaunchDaemon.bom
sudo rm -rf /var/db/receipts/net.ORG.pkg.BlockElCapitanLaunchDaemon.plist
exit 0
fi
Aquí está el propio launchdaemon:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com /DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>net.ORG.blockelcapitan</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/blockelcapitan.sh</string>
</array>
<key>KeepAlive</key>
<dict>
<key>PathState</key>
<dict>
<key>/Applications/Install OS X El Capitan.app/</key>
<true/>
</dict>
</dict>
<key>OnDemand</key>
<true/>
</dict>
</plist>
2 votos
¿Cuál es el resultado previsto del shell script? ¿Cuál es la razón para usar un doble shebang y repetir partes del "shell script" en tu pregunta? Por favor, edita tu pregunta para aclararla.
0 votos
Ya lo he hecho. Lo siento, no sé la razón de un doble shebang.
0 votos
He editado tu pregunta para que veas los duplicados: las partes que siguen a los shebangs son casi idénticas excepto el
rm
y elosascript
¡línea después del primer tinglado!0 votos
¿Por qué necesitas exactamente ayuda con el script? ¿Falla al borrar un instalador descargado, o muestra algún otro comportamiento inesperado?
0 votos
No funciona y no estoy seguro de qué hay que cambiar/ajustar, si es que hay que hacerlo, al script. Correcto, falla al borrar el instalador descargado.
0 votos
Si el script se parece al que has pegado arriba, parece que está duplicado en alguna casa. Puedes borrar todo lo que hay en el segundo
#!/bin/bash
en adelante. Entonces, ¿funciona si lo ejecutas manualmente desde el Terminal (con un instalador descargado, por supuesto)? Si no es así, ¿da un mensaje de error?0 votos
@patrix La parte superior script parece destinada al LaunchDaemon script y la parte inferior script parece destinada a un paquete instalador. En cualquier caso, no está claro cómo se instala el LaunchDaemon.
0 votos
Klanomath - eso funciona de maravilla, gracias. Una solución en osascript también estaría bien.