Błąd podczas korzystania z „sudo shutdown” na zdalnym komputerze

3

Zdalnie zamykam kilka komputerów Mac, używając polecenia sshdo wykonania shutdownna każdym z nich. Zadałem to pytanie wcześniej ( zamknięcie „nie ma tty i nie podano programu askpass”? ) I działało, dodając ADMIN ALL=(ALL) NOPASSWD: /sbin/shutdown -h nowdo plików sudoers zgodnie z zaleceniami.

W międzyczasie dwa zdalne komputery Mac zostały uaktualnione do Sierra i znów otrzymałem

sudo: no tty present and no askpass program specified

mimo że linia w pliku sudoers wciąż tam jest.

Co muszę zmienić, aby to działało z Sierra?

Gunter
źródło

Odpowiedzi:

0

Prawidłowe rozwiązanie dla skryptu zdalnego zamykania jest następujące:

Skrypt (proszę dostosować wartość MAX_UPSEC, do celów testowych użyłem niskiej wartości):

#!/bin/bash
BOOT_TIME=$(sysctl -n kern.boottime | sed -e 's/.* sec = \([0-9]*\).*/\1/')
CURR_TIME=$(date +%s)
MAX_UPSEC=300 #Seconds

SECS_UP=$(($CURR_TIME - $BOOT_TIME))
    if [ $SECS_UP -ge ${MAX_UPSEC} ];then
        echo "Mac is going to shutdown because it is already $SECS_UP seconds running"
        shutdown -h now
    else
        echo "No shutdown needed because the Mac is only $SECS_UP seconds up"
fi

Jeśli uruchomisz skrypt zamykania (zakładając, że skrypt znajduje się w ~ / bin / sh /) za pomocą następującego polecenia:

ssh admusr@host  'sudo bash -s' < /Users/admusr/bin/sh/ShutdownUPTIME.sh

odpowiednie wiersze sudoers na zdalnych hostach są wtedy

root        ALL = (ALL) ALL
%admin      ALL = (ALL) ALL
admusr      ALL = (ALL) NOPASSWD: /bin/bash
klanomath
źródło