Melhor maneira de reiniciar remotamente o Ubuntu a partir da máquina Windows

3

Antecedentes: Eu estou olhando para colocar uma série de máquinas Ubuntu em locais de varejo, eles estão sendo usados como quiosques idiotas para mostrar uma série de slides em grandes telas de TV LCD. Uma vez instalado, eles não terão um teclado ou mouse conectado, mas terão um IP fixo na rede local. Tudo está configurado para iniciar automaticamente, sem atualizações automáticas, sem economia de energia, etc. - Acho que é muito bom ir além de uma coisa. Preciso que a equipe de varejo possa reiniciar as caixas caso surja algum problema.

Temos o VNC em execução (agora que desativamos os aprimoramentos da área de trabalho!) para que possamos entrar remotamente nas máquinas, se necessário, mas isso não é algo que permitiríamos que a equipe de varejo fizesse. As máquinas estarão fisicamente 'fora do caminho' (provavelmente no espaço do teto), então o botão liga / desliga não é facilmente acessível! .

Eu gostaria de ter alguns meios de permitir que a equipe de varejo reinicie a máquina Ubuntu, da área de trabalho de um dos seus terminais Windows. Eu realmente não quero dar a eles algum tipo de acesso terminal bruto (a linha de comando irá assustá-los!) E eu não quero que eles usem o VNC (como dito acima). O ideal seria que houvesse um ícone na área de trabalho do Windows, eles clicassem nele duas vezes, respondessem a um simples "você tem certeza?" prompt e, em seguida, a caixa do Ubuntu é instruída a reiniciar. O lado do Windows não será um problema, podemos escrever algo usando Delphi, Python & amp; Qt4, seja o que for - é o lado do Ubuntu que eu estou preso.

Fora da vista / visão, eu poderia ter um programa do Windows abrir um terminal na rede e dizer ao Ubuntu para reiniciar? É para isso que o SSH pode ser usado (nunca defini esse tipo de coisa). O lado de programação do Windows não é realmente um problema, é apenas que eu sou um noob total do Ubuntu e não sei por onde começar do ponto de vista da plataforma.

A outra coisa que consideramos é também fazer com que a máquina automaticamente reinicie a si mesma em um horário definido a cada dia (obviamente fora do horário de funcionamento!). Para mim, isso parece um pouco desnecessário (embora forçar uma reinicialização uma vez por semana / mês pode valer a pena).

Quaisquer pensamentos ou sugestões? Ser capaz de reiniciar a caixa sob demanda em toda a rede é o meu principal requisito.

    
por robsoft 23.08.2010 / 11:24

3 respostas

3
  

Fora da vista / visão, eu poderia ter um programa do Windows abrir um terminal na rede e dizer ao Ubuntu para reiniciar? É para isso que o SSH poderia ser usado para [?]

Sim. Isso é efetivamente como eu faria. O primeiro passo é que você deseje instalar o Putty nos computadores com Windows. Isso permite que você conecte o SSH. Mas não se preocupe com isso por enquanto. Vamos fazer isso de trás para frente, a partir da máquina Ubuntu.

Eu escreveria um script na máquina Ubuntu para fazer o reinício. Se você puder ssh, é provável que você não precise fazer uma reinicialização completa. Você poderia argumentar que "poderia muito bem", mas isso geralmente significa que a reinicialização demora quatro ou cinco vezes mais do que precisava ser; é apenas uma perda de tempo.

Você deve conseguir se safar apenas com o reinício do GDM ( sudo restart gdm ), então eu escreveria um script Python interativo que avisasse o usuário para ter certeza de que eles estão certos de que desejam reiniciar GDM e, em seguida, reinicie-o. Depois disso, ele esperaria por cinco segundos e depois perguntaria se estava funcionando. Se não, faça uma reinicialização completa ( sudo reboot ).

Editar: Também existe a possibilidade de você ser capaz de reiniciar o aplicativo que essas telas estão exibindo, mesmo sem reiniciar o GDM. Eu não sei o que você espera cair, mas assuma todos os três e dê ao usuário a opção de reiniciar cada um sequencialmente, começando com o aplicativo, então o gdm, e depois a máquina.

Você pode usar maldições para tornar essa aparência mais bonita.

Em seguida, você precisa ter certeza de que o usuário do ubuntu pode fazer estes comandos no nível da raiz. Execute sudoedit /etc/sudoers e adicione algo assim:

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

useraccount   ALL=REBOOT
useraccount   ALL=RESTART

Subtraindo useraccount para o nome de usuário da conta que estaria executando este script.

Você deve conseguir fazer login via SSH e testar o script agora.

A última peça do quebra-cabeça é conectar o SSH ao Ubuntu e executar o script automaticamente. Você pode usar um certificado (é provavelmente mais seguro), mas para este exemplo eu vou usar apenas uma senha em texto puro.

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

Obviamente, sub-out useraccount , 1.2.3.4 e password com valores reais. commands.txt deve ser um arquivo de texto no computador Windows contendo algo assim:

python my_python_script.py

Nota: O caminho quando você faz o login com /home/useraccount/ , ou coloque seu script python lá ou altere o caminho em commands.txt .

Nota importante: O Putty será fechado assim que o comando terminar de ser executado. Isso significa que seu script Python DEVE ser interativo (pelo menos, perguntar "Pressione qualquer tecla para continuar" antes de sair) ou o usuário não verá nenhuma saída. Isso é bem simples. Você mencionou o Python, então presumo que você saiba (ou saiba como descobrir) como fazer prompts simples. Como eu disse anteriormente, uma interface simples de curses seria a mais profissional.

Nota importante 2: Por vezes, uma máquina / software falha ao ponto de um reinício difícil ser a única opção. Se você é o computador em um espaço que é realmente difícil de alcançar, certamente vale a pena considerar se você tem acesso a sua fonte de alimentação para que você possa fazer um "hard off-and-on" como último recurso. Certifique-se de usar um sistema de arquivos journalling para que a equipe não estrague tudo se eles usarem isso com muita freqüência e avise os funcionários que, se eles não o usarem como último recurso, pessoas de circo malvados irão roubar seus filhos, etc. são poucas coisas piores do que um funcionário que cheira o botão de reinicialização ao menor soluço.

    
por Oli 23.08.2010 / 12:53
1

Se você pode configurar o ssh na máquina windows, isso deve ser bem fácil. Isto é o que eu faço agora para executar algum comando remoto de um servidor ubuntu para outro

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

A parte -i diz ao ssh para usar um certificado em vez de usar um login de senha. A ordem da linha de comando para reinicializar uma máquina é reinicializar. Você precisará ter certeza de que o usuário usado para fazer o registro tenha permissão para desligar a máquina.

    
por Javier Rivera 23.08.2010 / 12:00
0

    
por A Student at a University 23.08.2010 / 12:58