Ma poate ajuta cineva va rog cu un script de shutdown pentru un NAS? Trebuie sa contina urmatoarele comenzi:
ssh root@IP
password
poweroff
Problema e urmatoarea: intrucat mi-au crapat 2 hard-uri datorita penelor de curent, am fost nevoit sa iau un UPS. Am cautat unul cu serial si USB (sperand sa leg MacMini-ul pe serial si NAS-ul pe USB), dar problema e duala: MacMini-ul nu il recunoaste pe serial (utilizand un cablu serial to USB), ci doar pe USB, iar NAS-ul nu il recunoaste deloc.
Asa ca solutia ar fi sa leg MacMini-ul prin USB si sa folosesc un script pentru a da comanda de shutdown si catre NAS.
Am incercat cu Automator, dar chestia cu Watch Me Do nu functioneaza as advertised (de exemplu in loc de ssh root@IP incepe cu h root@IP, omitand cei doi ‘s’), iar daca ii dau run a script imi spune ca stdin nu e whatever.
Incep sa cred ca am o problema fundamentala - incercati va rog sa nu radeti, habar n-am programare. Cred ca scriptul pentru expect ar trebui sa arate asa:
Thanks, sper sa vina Sergiu cu sfaturi. Pana atunci, nu stau chiar degeaba si am modificat un script gasit pe net si pare sa mearga (am reusit sa ii dau shutdown).
Raman 2 probleme:
(1) script-ul are o eroare in sintaxa “make new document” - cred ca asta inseamna sa deschida o fereastra noua si nu merge. Functioneaza deci doar cand Terminal e deja deschis (situatie in care deschide intr-adevar o noua fereastra de terminal). O sa mai fac ceva incercari ca sa vad daca pot sa il pacalesc.
(2) trebuie sa includ cumva script-ul asta in shutdown-ul Mac-ului. Cum fac asta?
Iacata si script-ul - poate ii va fi de folos cuiva in viitor.
tell application “System Events”
if not (exists process “Terminal”) then
set aDone to 0
set wCounter to 0
tell application “Terminal”
activate
delay 2
make new document
end tell
else
delay 2
set wCounter to 1
tell application “Terminal”
activate
delay 2
end tell
end if
end tell
delay 2
tell application “System Events”
tell process “Terminal”
keystroke “n” using {command down}
delay 3
keystroke “k” using {command down}
delay 1
keystroke “ssh root@IP”
delay 2
keystroke return
delay 5
keystroke “k” using {command down}
delay 1
keystroke “a” using {command down}
delay 1
keystroke “c” using {command down}
delay 1
set screenData to (the clipboard) as text
if screenData contains “password” then
keystroke “PASSWORD”
delay 2
keystroke return
delay 5
end if
delay 3
keystroke “k” using {command down}
delay 1
keystroke “a” using {command down}
delay 1
keystroke “c” using {command down}
delay 1
set screenData to (the clipboard) as text
if screenData contains “~ $” then
keystroke “poweroff”
delay 1
keystroke return
end if
end tell
end tell
delay 2
Problema (1) e rezolvata - am mai scurtat script-ul.
Ramane (2) - cum fac sa automatizez procesul. Ma gandesc ca poate nu merge sa il leg de shutdown-ul Mac-ului, ca nu stiu daca mai poate porni/rula noi aplicatii cand s-a initiat shutdown. Solutia alternativa ar fi ca script-ul sa porneasca automat cand Mac-ul a detectat ca e pe UPS.
Ce ai instalat tu pe NAS ca să știe de UPS ? Nu există un standard la comunicația cu UPS-ul pe serială - fiecare producător are altceva dar 95% sigur că există deja un driver
Zi ce model de UPS ai
pentru ca să faci ssh fără ă te întrebe de parole faci așa pe mac:
ssh-keygen -t rsa
(la passphrase ii dai un Enter)
ssh root@IP_NAS mkdir .ssh
scp .ssh/id_rsa.pub root@IP_NAS:.ssh/authorized_keys
de acuma, de fiecare dată când dai “ssh root@IP_NAS” nu te mai întreabă parola
și poți da simplu comanda: “ssh root@IP_NAS poweroff”
Pe OSX, dacă există scriptul /etc/rc.local.shutdown, el se va executa ca userul root la oprirea mac-ului (deci trebuie să repeți generarea unei chei de ssh și pentru root pe mac și să ADAUGI cheia publica a root-ului la authorized_keys pe NAS cu un editor de text) . Acuma e interesant de văzut cum îți dai seama dacă e shutdown/reboot normal sau a fost cauzat de către UPS
Am incercat inainte chestia cu rsa_id pana nu am mai putut. Problema e ca NAS-ul e o mare porcarie (WD ShareSpace) si nu stie scp, asa ca deocamdata nu am reusit sa ii dau de cap. Mai incerc, dar pentru mine nu e o problema daca trimit parola in clear (desi as prefera desigur sa evit daca ar merge cu rsa_id).
NAS-ul ar trebui sa vada UPS-ul prin interfata web, dar nu il detecteaza (nici cand il leg prin USB, si cu atat mai putin cand il leg prin serial).
UPS-ul e un Tripp Lite SMX750SLT - l-am ales pentru ca are atat USB, cat si serial si inteleg ca stie sa le foloseasca in acelasi timp (APC poate folosi ori una, ori alta).
Am incercat si asa (asta pentru ca ma agravasem serios cand am vazut ca nu merge cu scp), dar tot nu a mers, probabil ca am bagat un rand suplimentar pe undeva. Inteleg ca in unele cazuri trebuie sa ii dai si chown, asa ca voi mai sapa.
Vesti bune insa: scriptul functioneaza si merge si shutdown-ul multumita unui program numit Power Manager facut de DssW. Deocamdata e in demo mode, am 30 de zile de mocangeala, apoi il voi cumpara daca nu gasesc intre timp vreo solutie alternativa de a automatiza executia scriptului cand Mac-ul intra pe UPS.
Hint: daca vreti ca toata smecheria asta sa functioneze, nu uitati sa puneti si router-ul pe UPS…