Tengo una aplicación para iPhone que puede apagar de forma remota una computadora Mac. Me gustaría que esta aplicación apague mi computadora Ubuntu.
Recibo los siguientes mensajes de la aplicación cuando intento cerrarla:
Cuando Ubuntu está apagado:
"Error de conexión"
Cuando Ubuntu está activado:
"zsh:1: comando no encontrado: osascript"
Esto me hace pensar que la aplicación realmente logra acceder a zsh. Y si es así: ¿no debería poder crear un alias para "osascript" como este?
alias osascript="shutdown -h now"
El problema es que sigo recibiendo el mensaje (en la aplicación de Iphone):
"zsh:1: comando no encontrado: osascript"
¿Alguna idea de por qué? Supongo que la aplicación usa SSH y usa el mismo nombre de usuario que el alias en Ubuntu.
Para búsqueda fallida: ¿Se supone que debo ver el comando de acceso remoto en ".zsh_history"? No puedo ver ningún comando de la aplicación aquí.
Respuesta1
No utilice aplicaciones que no sean compatibles con Linux. "RMsrv Reboot" funciona muy bien para iniciar y apagar Linux.
Respuesta2
El mensaje de error es al menos coherente con un intento fallido de ejecutar un comando directamente a través de ssh
, por ejemplo ssh someuser@somehost somecommand
. Dependiendo de cómo zsh
se inicie y en qué archivo de configuración coloque el alias de la aplicación, es posible que simplemente no se haya cargado. Además, el archivo de historial solo será escrito por sesiones interactivas (lo cual es "bueno™": imagínese si cada script zsh volcara su contenido en su archivo de historial al ejecutarse).
osascript
es el intérprete de AppleScript de línea de comando (gracias aforquarepara la pista). Como tal, no está disponible para Ubuntu. Pero es probable que la aplicación esté ejecutando algún pequeño script a través de un parámetro de línea de comando para apagar la Mac.
Si lo único que desea hacer es apagar su máquina, puede simplemente colocar algún script en
/usr/bin/osascript
su máquina Ubuntu que la apague. Por ejemplo:#!/bin/sh sudo /sbin/shutdown -h now
Esto supone acceso sin contraseña a al menos
shutdown -h now
. Puede lograrlo agregando la siguiente línea a su archivo/etc/sudoers
o a un archivo incluido en él:YOURUSERNAME ALL = NOPASSWD: /sbin/shutdown -h now
Si desea reaccionar a diferentes comandos (apagar, reiniciar, etc.), puede intentar recuperar los parámetros de la línea de comandos que la aplicación utiliza para ellos. Para eso, primero coloque el siguiente script con el nombre
osascript
en/usr/bin
(En teoría, cualquier ruta enumeradaPATH
debería funcionar. Desafortunadamente,ssh
a menudo usa su propia configuración paraPATH
. Consulte a continuación) en su máquina Ubuntu:#!/bin/sh logfile='/path/to/logfile' echo "$@" >> "$logfile" echo '---->8----' >> "$logfile"
No olvides hacerlo ejecutable (
chmod 755 /usr/bin/osascript
).Ahora puede ejecutar las diferentes opciones que la aplicación tiene para ofrecer y verificar el resultado en el archivo de registro cada vez (
tail -F /path/to/logfile
podría ayudar). Ahora sólo necesitas encontrar las diferencias en cada salida y escribir un script que reaccione en consecuencia.
Como se mencionó anteriormente, ssh
puede usar su propia configuración PATH
, que puede ser bastante diferente de la configuración que obtiene en su sesión de terminal ( echo $PATH
). Afortunadamente, puedes recuperar fácilmente el PATH
usado ssh
con
ssh localhost 'echo $PATH'
Si ve /usr/local/sbin
o /usr/local/bin
allí, le sugiero que coloque el script allí, pero cualquier directorio de la lista debería servir.