Удаленная перезагрузка нескольких компьютеров Mac одновременно - PullRequest
1 голос
/ 29 января 2012

У нас есть сеть из 9 компьютеров Mac, которые я бы хотел отключить сразу. Сейчас я использую этот AppleScript, но, как вы можете видеть, он использует SSH для выключения компьютеров один за другим. И если один из них уже не работает, сценарий остановится. Могу ли я закрыть все эти Mac одновременно?

set finalIP to 100
repeat until finalIP is 109
tell application "Terminal"
    activate
    set success to 0
    do script "echo Rebooting.."
    do script "ssh -l username 192.168.1." & finalIP in front window
    delay 1
    repeat until success = 1
        if last word of (contents of front window as text) = "no" then
            do script "yes" in front window
            delay 1
        else if last word of (contents of front window as text) = "password" then
            do script "password" in front window
            set success to 1
            do script "echo About to reboot.." in front window
        else
            delay 1
        end if
    end repeat
    do script "sudo reboot" in front window
    repeat until last word of (contents of front window as text) = "password"
        delay 1
    end repeat
    do script "password" in front window
    close front window
end tell
set finalIP to finalIP + 1
delay 1
end repeat
tell application "Terminal" to quit

Ответы [ 2 ]

1 голос
/ 29 января 2012

Вы можете просто установить тайм-аут для ssh-соединения:

ssh -o ConnectTimeout=10 -l ...

(Это 10-секундный тайм-аут, настроить в соответствии с вашими потребностями.)

Также действительно подумайте об использовании ключейдля ваших связей.На самом деле нет веской причины помещать в скрипт пароли SSH.(И если вы сделаете это, добавьте параметр -o BatchMode=yes - он пропустит хосты, в которые вы не можете войти с помощью ключа.)

0 голосов
/ 29 января 2012

Флаг -o позволяет указать время ожидания, поэтому, если ему не удается подключиться через указанное количество секунд, оно прерывается.

imac$ ssh -o ConnectTimeout=5 123.45.6.7
ssh: connect to host 123.45.6.7 port 22: Operation timed out
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...