Desligar como um Mac

0

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.

    
por Grains 25.06.2016 / 21:11

2 respostas

1

Não use aplicativos que não suportam o Linux. "RMsrv Reboot" funciona muito bem ao iniciar e desligar o Linux.

    
por 27.06.2016 / 17:02
0

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.

    
por 25.06.2016 / 23:05