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/osascript
Ubuntu 컴퓨터에 일부 스크립트를 배치하여 컴퓨터를 종료할 수 있습니다. 예를 들어:#!/bin/sh sudo /sbin/shutdown -h now
이는 최소한
shutdown -h now
. 귀하/etc/sudoers
또는 그에 포함된 파일 에 다음 줄을 추가하여 이를 달성할 수 있습니다 .YOURUSERNAME ALL = NOPASSWD: /sbin/shutdown -h now
다른 명령(종료, 재부팅 등)에 반응하려면 앱에서 해당 명령에 사용하는 명령줄 매개변수를 검색해 보세요. 먼저 Ubuntu 시스템에서 이름이
osascript
in인 다음 스크립트를 실행합니다/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
스크립트를 거기에 배치하는 것이 좋지만 나열된 모든 디렉토리에 배치해야 합니다.