wake-up-neo.net

Il modo migliore per riavviare Ubuntu in remoto dal computer Windows

Background: sto cercando di mettere una serie di macchine Ubuntu in punti vendita, vengono utilizzate come chioschi muti per mostrare una serie di diapositive su schermi TV di grandi dimensioni LCD. Una volta installati, non avranno una tastiera o un mouse collegati ma avranno un IP fisso sulla rete locale. Tutto è configurato per l'avvio automatico, nessun aggiornamento automatico, nessun risparmio energetico ecc. - Penso che siamo praticamente bravi a separarci da una cosa. Ho bisogno che il personale al dettaglio sia in grado di riavviare le scatole in caso di problemi.

Abbiamo VNC in esecuzione (ora che abbiamo disattivato i miglioramenti del desktop!) In modo da poter accedere in remoto alle macchine se necessario, ma non è qualcosa che permetteremmo al personale di vendita. Le macchine saranno fisicamente "fuori mano" (probabilmente nello spazio del soffitto) il pulsante di accensione non è facilmente accessibile!.

Vorrei avere dei mezzi per consentire al personale di vendita al dettaglio di riavviare la macchina Ubuntu, dal desktop di uno dei loro terminali di Windows. Non voglio davvero dare loro una sorta di accesso al terminale non elaborato (la riga di comando li spaventerà!) E non voglio che utilizzino VNC (come indicato sopra). Idealmente ci sarebbe un'icona sul desktop di Windows, fanno doppio clic su di essa, rispondono a un semplice 'sei sicuro?' Richiedi, quindi viene richiesto di riavviare la casella Ubuntu. Il lato di Windows non sarà un problema, possiamo scrivere qualcosa usando Delphi, Python & Qt4, qualunque cosa - è il lato di Ubuntu con cui sono bloccato.

Lontano da vista/vista, potrei avere un programma Windows aprire un terminale attraverso la rete e dire a Ubuntu di riavviare? È per questo che SSH potrebbe essere usato (non ho mai impostato questo tipo di cose). Il lato della programmazione di Windows non è davvero un problema, è solo che sono un totale nocciolo di Ubuntu e non so da dove cominciare dal punto di vista della piattaforma.

L'altra cosa che abbiamo considerato è anche far riavviare automaticamente la macchina ogni giorno a un'ora prestabilita (ovviamente fuori orario di negozio!). Per me, questo sembra un po 'inutile (anche se potrebbe essere utile forzare un riavvio una volta alla settimana/al mese).

Qualche idea o suggerimento? Essere in grado di riavviare la casella su richiesta in tutta la rete è il mio requisito principale.

3
robsoft

Lontano da vista/vista, potrei avere un programma Windows aprire un terminale attraverso la rete e dire a Ubuntu di riavviare? È per questo che SSH potrebbe essere usato per [?]

Sì. È effettivamente così che lo farei. Il primo passo è che ti consigliamo di installare PuTTY sui computer Windows. Questo ti permette di entrare in SSH. Ma per ora non preoccuparti. Facciamo questo all'indietro, partendo dalla macchina Ubuntu.

Vorrei scrivere uno script sulla macchina Ubuntu per fare il riavvio. Se riesci ad accedere, è probabile che non sia necessario eseguire un riavvio completo. Si potrebbe sostenere che si potrebbe "anche", ma spesso significa che il riavvio richiede quattro o cinque volte più tempo di quanto dovrebbe essere; è solo una perdita di tempo.

Dovresti essere in grado di cavartela semplicemente riavviando GDM (Sudo restart gdm), quindi scrivo uno script interattivo Python che richiede all'utente di assicurarsi che sei sicuro di voler riavviare GDM e poi riavviarlo. Dopodiché, aspetterebbe cinque secondi, quindi chiederà loro se funziona. In caso contrario, eseguire un riavvio completo (Sudo reboot).

Modifica: C'è anche la possibilità che tu possa semplicemente riavviare l'applicazione che queste schermate stanno visualizzando senza nemmeno riavviare GDM. Non so cosa ti aspetti di cadere ma presumo tutti e tre e dare all'utente la possibilità di riavviare ciascuno in sequenza, iniziando con l'app, quindi con gdm, quindi con la macchina.

Puoi usare le maledizioni per rendere questo aspetto più bello.

Successivamente devi assicurarti che l'utente ubuntu possa eseguire questi comandi a livello di root. Esegui sudoedit /etc/sudoers e aggiungi qualcosa del genere:

Cmnd_Alias REBOOT = /sbin/reboot
Cmnd_Alias RESTART = /sbin/restart

useraccount   ALL=REBOOT
useraccount   ALL=RESTART

Subbing useraccount per il nome utente dell'account che avrebbe eseguito questo script.

Dovresti essere in grado di accedere tramite SSH e testare lo script ora.

L'ultimo pezzo del puzzle è collegare SSH a Ubuntu ed eseguire automaticamente lo script. Puoi usare un certificato (probabilmente è più sicuro) ma per questo esempio userò solo una password in chiaro.

PuTTY.exe [email protected] -pw password -m commands.txt

Ovviamente sottrai useraccount, 1.2.3.4 e password con valori reali. commands.txt dovrebbe essere un file di testo sul computer Windows contenente qualcosa del genere:

python my_python_script.py

Nota: Il percorso quando accedi con essere /home/useraccount/ quindi inserisci il tuo script python o modifica il percorso in commands.txt.

Nota importante: PuTTY si chiuderà non appena il suo comando termina l'esecuzione. Ciò significa che il tuo script Python DEVE essere interattivo (almeno chiedi "Premi qualsiasi tasto per continuare" prima di uscire) o l'utente non vedrà alcun output. Questo è abbastanza semplice. Hai citato Python, quindi suppongo che tu sappia (o sappia come scoprirlo) come eseguire semplici istruzioni. Come ho detto prima, una semplice interfaccia di maledizioni sembrerebbe la più professionale.

Nota importante 2: A volte una macchina/software non riesce al punto in cui un riavvio forzato è l'unica opzione. Se siete i computer in uno spazio che è davvero difficile da raggiungere, vale sicuramente la pena considerare di avere accesso al loro alimentatore in modo da poter fare un "hard-and-on" come ultima risorsa. Assicurati di usare un filesystem di journaling in modo che lo staff non lo rovini se lo usano troppo spesso e avvisa lo staff che se non lo usano come ultima risorsa, le persone malvagie del circo ruberanno i loro figli, ecc. sono alcune cose peggiori di un membro dello staff che preme il pulsante di hard reset al minimo singhiozzo.

3
Oli

Se puoi configurare ssh nel computer Windows, dovrebbe essere abbastanza semplice. Questo è quello che faccio ora per eseguire alcuni comandi remoti da un server Ubuntu a un altro

ssh ip.number.0.28 -i /home/javier/.ssh/id_rsa_web -l javier "cd /home/javier/sincrotod;./sincroniza.py"

La parte -i dice a ssh di usare un certificato invece di usare un login con password. L'ordine della riga di comando per riavviare un computer è il riavvio. Dovrai essere sicuro che l'utente utilizzato per accedere disponga dell'autorizzazione per arrestare la macchina.

1
Javier Rivera