Não use aplicativos que não suportam o Linux. "RMsrv Reboot" funciona muito bem ao iniciar e desligar o Linux.
Eu tenho um aplicativo para iPhone que pode desligar remotamente um computador Mac. Eu gostaria que este aplicativo desligasse meu computador Ubuntu.
Estou recebendo as mensagens do aplicativo ao tentar desligar:
Quando o Ubuntu está desligado:
"Connection error"
Quando o Ubuntu está ligado:
"zsh:1: command not found: osascript"
Isso me faz pensar que o aplicativo realmente consegue acessar o zsh. E se assim for: não devo poder criar um alias para "osascript" assim:
alias osascript="shutdown -h now"
O problema é que ainda recebo a mensagem (no aplicativo do iPhone):
"zsh:1: command not found: osascript"
Alguma idéia por quê? Meu palpite é que o aplicativo está usando o SSH e está usando o mesmo nome de usuário do alias no Ubuntu.
Para o failsearch: Eu deveria ver o comando de acesso remoto em ".zsh_history"? Não consigo ver nenhum comando do aplicativo aqui.
A mensagem de erro é pelo menos consistente com uma tentativa fracassada de executar um comando diretamente por meio de ssh
, por exemplo, %código%.
Dependendo de como ssh someuser@somehost somecommand
é iniciado e em qual arquivo de configuração você coloca o alias pelo aplicativo, é possível que ele não tenha sido carregado. Além disso, o arquivo de histórico só será escrito por sessões interativas (que é um "Good Thing ™": imagine se todo script zsh despejaria seu conteúdo em seu arquivo histórico na execução).
zsh
é a linha de comando do interpretador AppleScript (graças a forquare para a dica). Como tal, não está disponível para o Ubuntu. Mas é provável que o aplicativo esteja executando um pequeno script via parâmetro de linha de comando para desligar o Mac.
Se desligar sua máquina é a única coisa que você quer fazer, você pode simplesmente colocar algum script em osascript
em sua máquina Ubuntu que o encerre. Por exemplo:
#!/bin/sh
sudo /sbin/shutdown -h now
Isso pressupõe acesso sem senha a pelo menos /usr/bin/osascript
. Você pode conseguir isso adicionando a seguinte linha ao seu shutdown -h now
ou um arquivo incluído:
YOURUSERNAME ALL = NOPASSWD: /sbin/shutdown -h now
Se você quiser reagir a diferentes comandos (desligamento, reinicialização, etc.), poderá tentar recuperar os parâmetros da linha de comando que o aplicativo usa para eles. Para esse primeiro lugar, o script a seguir com o nome /etc/sudoers
in osascript
(em teoria, qualquer caminho listado em /usr/bin
deve ser feito. Infelizmente PATH
geralmente usa suas próprias configurações para ssh
. Veja abaixo.) Máquina Ubuntu:
#!/bin/sh
logfile='/path/to/logfile'
echo "$@" >> "$logfile"
echo '---->8----' >> "$logfile"
Não se esqueça de torná-lo executável ( PATH
).
Agora, você pode executar as diferentes opções que o aplicativo tem para oferecer e verificar a saída no arquivo de log a cada vez ( chmod 755 /usr/bin/osascript
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, tail -F /path/to/logfile
pode usar suas próprias configurações para ssh
, o que pode ser bem diferente das configurações que você obtém na sua sessão de terminal ( PATH
). Felizmente, você pode recuperar facilmente o echo $PATH
usado por PATH
com
ssh localhost 'echo $PATH'
Se você vir ssh
ou /usr/local/sbin
, sugiro colocar o script lá, mas qualquer diretório listado deve fazer isso.