Desligar como um Mac

Desligar como um Mac

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/osascriptsua 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/sudoersou 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 osascriptem /usr/bin(Em teoria, qualquer caminho listado em PATHdeve servir. Infelizmente, sshmuitas vezes usa suas próprias configurações para PATH. 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/logfilepode ajudar). Agora você só precisa encontrar as diferenças em cada saída e escrever um script que reaja de acordo.


Como mencionado acima, sshpode 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 PATHusado por sshcom

    ssh localhost 'echo $PATH'

Se você vir /usr/local/sbinou /usr/local/binestiver lá, sugiro colocar o script lá, mas qualquer diretório listado deve servir.

informação relacionada