Mac으로 종료

Mac으로 종료

Mac 컴퓨터를 원격으로 종료할 수 있는 iPhone 앱이 있습니다. 이 앱으로 Ubuntu 컴퓨터를 종료하고 싶습니다.

종료하려고 할 때 응용 프로그램에서 다음 메시지가 나타납니다.

Ubuntu가 꺼져 있을 때:

"연결 오류"

Ubuntu가 켜져 있을 때:

"zsh:1: 명령을 찾을 수 없습니다: osascript"

이로 인해 앱이 실제로 zsh에 액세스할 수 있다고 생각됩니다. 그렇다면 다음과 같이 "osascript"에 대한 별칭을 만들 수 없어야 할까요?

alias osascript="shutdown -h now"

문제는 여전히 메시지가 표시된다는 것입니다(Iphone 앱에서).

"zsh:1: 명령을 찾을 수 없습니다: osascript"

이유가 무엇인가요? 내 생각에는 앱이 SSH를 사용하고 있으며 Ubuntu의 별칭과 동일한 사용자 이름을 사용하고 있는 것 같습니다.

오류 검색의 경우: ".zsh_history"에서 원격 액세스 명령을 보아야 합니까? 여기서는 앱의 명령을 볼 수 없습니다.

답변1

Linux를 지원하지 않는 앱을 ​​사용하지 마세요. "RMsrv Reboot"는 Linux를 시작하고 종료하는 데 효과적입니다.

답변2

오류 메시지는 적어도 를 통해 명령을 직접 실행하려는 실패한 시도와 일치합니다 ssh(예: ) ssh someuser@somehost somecommand. 시작 방법과 앱에서 별칭을 넣은 구성 파일에 따라 zsh별칭이 로드되지 않았을 수도 있습니다. 또한 기록 파일은 대화형 세션에 의해서만 기록됩니다("Good Thing™"입니다. 모든 zsh 스크립트가 실행 시 해당 내용을 기록 파일에 덤프한다고 상상해보세요).


osascript명령줄 AppleScript 해석기입니다(덕분에forquare힌트를 위해). 따라서 우분투에서는 사용할 수 없습니다. 그러나 앱이 Mac을 종료하기 위해 명령줄 매개변수를 통해 일부 작은 스크립트를 실행하고 있을 가능성이 높습니다.

  • 컴퓨터를 종료하는 것만 하고 싶은 경우 /usr/bin/osascriptUbuntu 컴퓨터에 일부 스크립트를 배치하여 컴퓨터를 종료할 수 있습니다. 예를 들어:

    #!/bin/sh
    sudo /sbin/shutdown -h now
    

    이는 최소한 shutdown -h now. 귀하 /etc/sudoers또는 그에 포함된 파일 에 다음 줄을 추가하여 이를 달성할 수 있습니다 .

    YOURUSERNAME ALL = NOPASSWD: /sbin/shutdown -h now
    
  • 다른 명령(종료, 재부팅 등)에 반응하려면 앱에서 해당 명령에 사용하는 명령줄 매개변수를 검색해 보세요. 먼저 Ubuntu 시스템에서 이름이 osascriptin인 다음 스크립트를 실행합니다 /usr/bin(이론적으로는 에 나열된 모든 경로가 PATH그래야 합니다. 불행하게도 ssh종종 에 대한 자체 설정을 사용합니다 . 아래를 참조하세요.).PATH

    #!/bin/sh
    logfile='/path/to/logfile'
    echo "$@" >> "$logfile"
    echo '---->8----' >> "$logfile"
    

    실행 가능하게 만드는 것을 잊지 마십시오( chmod 755 /usr/bin/osascript).

    이제 앱이 제공해야 하는 다양한 옵션을 실행하고 매번 로그 파일의 출력을 확인할 수 있습니다( tail -F /path/to/logfile도움이 될 수 있음). 이제 각 출력의 차이점을 찾고 그에 따라 반응하는 스크립트를 작성하기만 하면 됩니다.


위에서 언급한 대로 에서는 ssh자체 설정을 사용할 수 있으며 PATH이는 터미널 세션( )에서 얻는 설정과 상당히 다를 수 있습니다 echo $PATH. 운 좋게도 다음과 PATH같이 사용된 항목을 쉽게 검색할 수 있습니다 .ssh

    ssh localhost 'echo $PATH'

/usr/local/sbin또는 거기에 있으면 /usr/local/bin스크립트를 거기에 배치하는 것이 좋지만 나열된 모든 디렉토리에 배치해야 합니다.

관련 정보