Eu tenho um aplicativo para iPhone que pode desligar remotamente um computador Mac. Gostaria que este aplicativo desligasse meu computador Ubuntu.
Estou recebendo as seguintes mensagens do aplicativo ao tentar desligar:
Quando o Ubuntu está desligado:
"Erro de conexão"
Quando o Ubuntu está ligado:
"zsh:1: comando não encontrado: osascript"
Isso me faz pensar que o aplicativo realmente consegue acessar o zsh. E se sim: eu não deveria ser capaz de criar um alias para "osascript" assim:
alias osascript="shutdown -h now"
O problema é que ainda recebo a mensagem (no aplicativo do iPhone):
"zsh:1: comando não encontrado: osascript"
Alguma idéia do porquê? Meu palpite é que o aplicativo está usando SSH e o mesmo nome de usuário do alias no Ubuntu.
Para failsearch: devo ver o comando de acesso remoto em ".zsh_history"? Não consigo ver nenhum comando do aplicativo aqui.
Responder1
Não use aplicativos que não sejam compatíveis com Linux. "RMsrv Reboot" funciona muito bem para iniciar e desligar o Linux.
Responder2
A mensagem de erro é pelo menos consistente com uma tentativa fracassada de executar um comando diretamente através do ssh
, por exemplo ssh someuser@somehost somecommand
. Dependendo de como zsh
é iniciado e em qual arquivo de configuração você colocou o alias do app é possível que ele simplesmente não tenha sido carregado. Além disso, o arquivo de histórico só será gravado por sessões interativas (o que é uma "coisa boa™": imagine se cada script zsh despejasse seu conteúdo em seu arquivo de histórico durante a execução).
osascript
é o interpretador AppleScript de linha de comando (graças aquadradopara a dica). Como tal, não está disponível para Ubuntu. Mas é provável que o aplicativo esteja executando algum pequeno script por meio de parâmetro de linha de comando para desligar o Mac.
Se desligar sua máquina é a única coisa que você deseja fazer, basta colocar algum script em
/usr/bin/osascript
sua máquina Ubuntu que a desligue. Por exemplo:#!/bin/sh sudo /sbin/shutdown -h now
Isso pressupõe acesso sem senha a pelo menos
shutdown -h now
. Você pode conseguir isso adicionando a seguinte linha ao seu arquivo/etc/sudoers
ou a um arquivo incluído por ele:YOURUSERNAME ALL = NOPASSWD: /sbin/shutdown -h now
Se quiser reagir a comandos diferentes (desligar, reiniciar, etc.), você pode tentar recuperar os parâmetros de linha de comando que o aplicativo usa para eles. Para isso, primeiro coloque o seguinte script com o nome
osascript
em/usr/bin
(Em teoria, qualquer caminho listado emPATH
deve servir. Infelizmente,ssh
muitas vezes usa suas próprias configurações paraPATH
. Veja abaixo.) em sua máquina Ubuntu:#!/bin/sh logfile='/path/to/logfile' echo "$@" >> "$logfile" echo '---->8----' >> "$logfile"
Não se esqueça de torná-lo executável (
chmod 755 /usr/bin/osascript
).Agora você pode percorrer as diferentes opções que o aplicativo tem a oferecer e verificar a saída no arquivo de log a cada vez (
tail -F /path/to/logfile
pode ajudar). Agora você só precisa encontrar as diferenças em cada saída e escrever um script que reaja de acordo.
Como mencionado acima, ssh
pode usar suas próprias configurações para PATH
, que podem ser bem diferentes das configurações que você obtém em sua sessão de terminal ( echo $PATH
). Felizmente, você pode recuperar facilmente o PATH
usado por ssh
com
ssh localhost 'echo $PATH'
Se você vir /usr/local/sbin
ou /usr/local/bin
estiver lá, sugiro colocar o script lá, mas qualquer diretório listado deve servir.