É possível reiniciar um computador em resposta a uma notificação por email?

29

Estou procurando uma maneira de reiniciar máquinas depois de receber uma notificação por email.

A instalação na qual eu quero usar isso é um farm de renderização. Temos 5 caixas com 8 Nvidia GTX 980Ti nelas. Eles estão executando o Windows 10 Professional de 64 bits.

O problema que estamos enfrentando é que eles às vezes congelam ou "paralisam" durante a renderização. Eu o configurei e, assim que isso acontece, recebo um e-mail dizendo "x machine foi interrompida".

Eu automatizei tudo nas máquinas; eles se conectam automaticamente, abrem os programas necessários, iniciam uma conexão com nosso servidor de licenças e mapeiam todas as unidades de rede necessárias.

Basicamente, tudo o que você precisa fazer é desligá-lo e ligá-lo novamente, e ele funciona novamente.

Então, o que eu quero saber é: posso configurar um programa, evento ou script que instrua as máquinas a reiniciarem depois que eu receber o email dizendo que uma máquina parou?

A máquina que executará isso está executando o Windows 7 Pro de 64 bits.

RyanIG
fonte
3
Você sabe o que está parado e com que frequência? Um plano melhor talvez para fazer a reinicialização do computador diariamente evitando a tenda todos juntos
Shaun07776
@ Shaun07776 Infelizmente, esse é o problema, é aleatório. Enviei arquivo de registro após arquivo para cada fornecedor de software que estamos usando, tentando resolver esse problema. No momento, não sabemos o que os está causando ou quando eles acontecer, é por isso que estou tentando automatizar tudo o que posso enquanto isso, até que possamos descobrir.
precisa saber é o seguinte
23
Por que o trabalho que detecta a paralisação e envia o email simplesmente não pode ser reiniciado? Por que o email precisa ser o gatilho?
Exussum
@exussum O programa que estamos usando é o Called Deadline 7.2, o objetivo é fazer isso, eu o configurei para que o software faça isso, mas não funciona por algum motivo, o programa permite scripts em python por meio de um serviço da web, mas eu também não pode fazer isso muito.
precisa saber é o seguinte
@RyanIG - Por curiosidade, isso precisa de algum tipo especial de procedimento de desligamento, a máquina não responde o suficiente?
stefgosselin

Respostas:

44

Você deseja que um dispositivo chamado "Remote Power Switch", que usamos no meu local de trabalho para reiniciar remotamente os modems a cabo, seja o UIS-322b abaixo:

insira a descrição da imagem aqui

Você pode configurá-lo com um endereço IP e, em seguida, efetuar logon nele para ligar, desligar ou desligar o dispositivo conectado e configurá-lo de acordo com a programação. Você não pode controlá-lo por email, mas pela interface da web. Você ainda pode montar algo via wgetou curlenviar automaticamente uma solicitação da Web para ele. Pode ter outros recursos e possibilidades de controle que eu desconheço.

Se você estiver executando sistemas de renderização que consomem muita energia, não tenho certeza se o dispositivo específico acima pode lidar com eles, mas pode haver outros por aí. Outra coisa a procurar é "Control Power Strip".

LawrenceC
fonte
15
Basicamente, remotamente, desconecta e conecta o dispositivo a você.
21816 LawrenceC
1
Também existem dispositivos semelhantes projetados para o uso do data center. Esses são projetados para serem montados em um rack e têm muito mais portas de saída. Aqueles que eu vi eram controlados pelo RS-232. Dessa forma, você pode conectá-los a uma unidade com várias portas RS-232, de modo que essa unidade permita remover o console e o ciclo de energia remoto de todos os servidores individuais em um rack inteiro.
kasperd
1
Alguns no-breaks também podem fornecer essa funcionalidade. Você pode conectar-se ao no-break (via HTTP, Telnet ou software lançado pelo fabricante) para conectar via cabo (Ethernet ou "cabo serial"). Detalhes específicos variam de acordo com soluções individuais. Alguns no-breaks apenas suportam isso quando se utiliza um cartão complementar (inserido no no-break), adquirido separadamente. Imagino que eles sejam mais caros do que o dispositivo LawrenceC está mostrando, porque os no-breaks também oferecem o recurso de fazer backup de bateria. No entanto, o custo mais alto pode ser aceitável devido à inclusão do recurso extra útil.
TOOGAM
1
Há software que faz parte do Red Hat Cluster Suite chamado agentes de esgrima, que fornece uma interface CLI abstrata para reiniciar esses dispositivos, incluindo o KVM como um dispositivo de "esgrima de energia". Isso tem sido útil para mim.
Sem Nome
4
@RyanIG Talvez você possa configurar um desses dispositivos para que eles executem a reinicialização automática automaticamente a cada 10 minutos, a menos que recebam um comando via Ethernet. Em seguida, você pode conectar os computadores à sua própria fonte de alimentação e deixá-los enviar o comando não me reinicialize a cada 3 minutos. Se o computador travar, ele também interromperá o envio do comando e será reiniciado. É basicamente o que é chamado de "cão de guarda (timer)" em sistemas embarcados e ignoraria toda a comunicação por email.
Nulo
33

Posso configurar um programa, evento ou script que instrua as máquinas a reiniciar?

Depende do que você quer dizer com:

eles congelam ou "param"

Se a máquina remota travar de uma maneira que exija uma "reinicialização completa", a reinicialização remota não funcionará.

Dito isto, você pode usar shutdownpara reiniciar remotamente um dispositivo.

Exemplo:

shutdown /r /f /m \\computer
  • /r - Desligue e reinicie o computador.

  • /f - Force a execução de aplicativos para fechar sem avisar os usuários.

  • /m \\computer - Especifique o computador de destino.

Você pode executar o comando acima no Outlook quando receber o email apropriado.

O link a seguir Como: Acionar um aplicativo por email no Outlook deve começar.


shutdown uso

F:\test>shutdown /?
Usage: shutdown [/i | /l | /s | /r | /g | /a | /p | /h | /e] [/f]
    [/m \\computer][/t xxx][/d [p|u:]xx:yy [/c "comment"]]

    No args    Display help. This is the same as typing /?.
    /?         Display help. This is the same as not typing any options.
    /i         Display the graphical user interface (GUI).
               This must be the first option.
    /l         Log off. This cannot be used with /m or /d options.
    /s         Shutdown the computer.
    /r         Shutdown and restart the computer.
    /g         Shutdown and restart the computer. After the system is
               rebooted, restart any registered applications.
    /a         Abort a system shutdown.
               This can only be used during the time-out period.
    /p         Turn off the local computer with no time-out or warning.
               Can be used with /d and /f options.
    /h         Hibernate the local computer.
               Can be used with the /f option.
    /e         Document the reason for an unexpected shutdown of a computer.
    /m \\computer Specify the target computer.
    /t xxx     Set the time-out period before shutdown to xxx seconds.
               The valid range is 0-315360000 (10 years), with a default of 30.
               If the timeout period is greater than 0, the /f parameter is
               implied.
    /c "comment" Comment on the reason for the restart or shutdown.
               Maximum of 512 characters allowed.
    /f         Force running applications to close without forewarning users.
               The /f parameter is implied when a value greater than 0 is
               specified for the /t parameter.
    /d [p|u:]xx:yy  Provide the reason for the restart or shutdown.
               p indicates that the restart or shutdown is planned.
               u indicates that the reason is user defined.
               If neither p nor u is specified the restart or shutdown is
               unplanned.
               xx is the major reason number (positive integer less than 256).
               yy is the minor reason number (positive integer less than 65536).

Leitura adicional

DavidPostill
fonte
2
Obrigado pela resposta rápida! Quando eles "congelam ou paralisam" às vezes o sistema está completamente paralisado e requer uma reinicialização forçada, outras vezes você pode reiniciá-lo pela linha de comando ou pelo visualizador de equipe. esse problema que estou tendo em descobrir como vincular scripts ao email, você teria algum tópico ou recurso sobre como fazer isso? Estamos usando o gmail, mas eu poderia executá-lo através do Outlook, se necessário. Felicidades!
precisa saber é o seguinte
Não se preocupe, obrigado por sua ajuda! vou continuar cavando.
precisa saber é o seguinte
@RyanIG Como: acionar um aplicativo por email no Outlook deve fornecer um ponto de partida. Resposta atualizada.
DavidPostill
16

Se você possui servidores reais , eles provavelmente têm um recurso de gerenciamento remoto que pode ser conectado mesmo que o sistema operacional principal da máquina esteja completamente congelado. Geralmente, você usa o SSH para conectar-se ao controlador. O comando específico emitido depende da marca do seu servidor.

Para servidores Dell, que usam DRAC (Dell Remote Access Controller), o comando a ser executado após o SSH no DRAC é:

racadm serveraction hardreset

Isso realiza uma reinicialização total, equivalente a puxar o cabo de alimentação e, em seguida, reiniciar a máquina. Se a máquina não estiver completamente travada, em powercyclevez de hardresetfazer o trabalho. ( Fonte. )

Os servidores HP usam o iLO, que também é acessível por SSH. O comando de reinicialização completa é simplesmente:

reset hard

( Fonte , a referência oficial em PDF ao script do iLO.)

Você pode conectar o recebimento de e-mail à execução desses comandos com a resposta de DavidPostill. Existem clientes SSH para Windows; Acredito que o PuTTY tenha uma interface de linha de comando.

Ben N
fonte
Vou dar uma olhada nisso, pois usamos 3 servidores dell powerblade, porém, pergunta rápida: ele precisa estar no controlador de domínio ou, se tivéssemos um servidor de licença, ele poderia ser configurado? as máquinas estão constantemente conectadas a ambos. Obrigado pela sua resposta!
precisa saber é o seguinte
1
O DRAC deve estar acessível de qualquer lugar na mesma rede. Portanto, qualquer computador que possa receber o email e acessar o DRAC deve poder gerenciar todo o sistema.
Ben N
Incrível, vou olhar para isso e deixar você saber como eu entro, aplausos!
precisa saber é o seguinte
13

Use o Outlook.

O link na parte inferior da resposta tem informações que ajudaram nessa resposta. Elogios a GuidingTech.com

Crie um arquivo .bat primeiro.

shutdown.exe /r /t 00

Salvar como Restart.bat

Verifique se o computador está conectado com o email em que você recebe a notificação por email.

Você pode configurar contas diferentes para cada computador, se desejar, e ter sua configuração de e-mail para encaminhar os e-mails recebidos como notificações.

Exemplo.

[email protected] é o PC host com uma placa gráfica que não está renderizando.

Testemail.com é o seu email em que você recebe notificações.

Quando o email é recebido, o seu Outlook automaticamente o encaminha para o email correspondente. que neste caso é [email protected]

[email protected] recebido em [email protected], em seguida, envie esse email para todos os computadores.

O truque aqui é configurar um email de notificação diferente para cada computador, para que ele saiba qual desligar.

Para configurar uma regra a ser encaminhada, siga estas instruções e digite uma palavra no assunto com base no computador que deseja reiniciar.

Nota: Isto é para configurar o seu computador e receber os e-mails a seguir. Vamos configurar os computadores individuais.

Etapa 1. Agora abra o MS Outlook. Na guia Página Inicial, vá para Regras e expanda o menu>. Selecione Gerenciar regras e alertas. insira a descrição da imagem aqui

Etapa 2. Na janela Regras e alertas, clique em Nova regra, na guia Email> Regras. insira a descrição da imagem aqui

Etapa 3. Comece selecionando seu modelo como Aplicar regra nas mensagens que recebo. Clique em Next. insira a descrição da imagem aqui

Etapa 4. Mais uma vez, precisamos especificar qual regra você deseja usar no final do recebimento, que será o computador no qual o email encaminhado será exibido. Essa será a regra para reiniciar o computador que você especificou.

UMA. Com palavras específicas no assunto - Outra restrição para que o> recebimento de e-mail seja identificado melhor.

B. Com palavras específicas no corpo - Às vezes, apenas o assunto pode ser> ambíguo. Assim, um corpo o torna mais refinado.

Selecione-os e clique em Avançar.

insira a descrição da imagem aqui

Agora, especifique o que você deseja que o email acione para reiniciar.

Exemplo se você escolher o assunto.

Diga a palavra que você escolher é Computer1-RenderIssue

Você digitará isso no digitará "Especificar palavras ou frases para pesquisar no sub-objeto"

Agora que você já configurou, é hora de executar a etapa final.

Etapa 5. A seguir, vem a ação a ser aplicada quando um email é recebido e> todas as condições coincidem. Selecione Iniciar aplicativo e exclua-o. insira a descrição da imagem aqui

** Nota: ** Se você não o excluir. Se o computador for reiniciado, se o outlook for aberto, ocorrerá um loop.

Etapa 5a Para iniciar a ação do aplicativo, clique no link e selecione o arquivo que você criou Restart.bat Clique em Avançar.

Etapa 5b Clique em Avançar em * "Existem Exceções?"

Etapa 6 Atribua um nome à regra para futuras referências, ative-a e clique em> Concluir.

Agora, sempre que um de seus computadores tiver um problema ao processar o email, será enviado a você com o computador especificado. Isso encaminhará o email para esse computador e reiniciará a máquina.

Espero que isto ajude. Tentei formatá-lo da melhor maneira possível enquanto fazia meu trabalho.

Referência para alguns dos trabalhos aqui

NetworkKingPin
fonte
Tudo bem David, eu entendi o que você quis dizer com cuidado agora.
NetworkKingPin
2
Isso é muito melhor;)
DavidPostill
6

Para ser honesto, se tudo o que você quer fazer é devolver (com força) uma caixa, a maneira mais fácil é "pressionar o botão de redefinição".

Como você precisa fazer uma redefinição HARD, você pode mexer na extremidade de alta tensão (bastante arriscada) ou na placa-mãe.

Algumas placas-mãe topo de linha possuem uma placa / controlador de rede incorporada para dar um salto no PC. No entanto, você também pode conectar a chave de reset a uma placa de relé e controlá-la usando uma máquina separada.

Eu recomendaria conectar um Raspberry Pi via GPIO a uma placa de retransmissão. Em seguida, conecte cada relé à chave de redefinição nas placas-mãe.

Raspberry Pi 2

CHAPÉU do relé do Raspberry Pi

Aron
fonte
3

Você já pensou em executar seu servidor como cliente em uma máquina virtual? Você executaria o software da VM (VMware, VirtualBox) no servidor físico e, em seguida, executaria uma máquina virtual com o software de renderização como cliente. Com nenhum outro processamento em andamento na máquina, você deve obter um desempenho comparável e seria mais fácil parar e reiniciar uma máquina virtual do que uma física.

TMN
fonte
3
Eu sei para onde você está indo com o conceito de Máquina Virtual, mas sua declaração sobre desempenho comparável não faz muito sentido.
pun
Como assim? Basicamente, você apenas envolve um servidor físico com uma VM e o executa no mesmo hardware. Não é como se você estivesse tentando executar várias VMs. De acordo com este artigo de 2009 "se você estiver usando as tecnologias VMware ou Xen deste ano, a Intel Nehalems e Shanghai Opterons e os novos adaptadores de E / S - a virtualização tem quase todos os problemas de desempenho". Não imagino que a virtualização tenha retrocedido muito desde então.
TMN
1
Esqueci de mencionar: este é um farm de renderização; portanto, a maior parte do trabalho está sendo feita pelas placas gráficas, e seu desempenho não será prejudicado pela execução do host em uma VM.
TMN
1
O acesso da VM às GPU pode ser complicado (muito específico da VM, muito específico da placa, se houver suporte), portanto, verifique se ele funciona para você.
precisa saber é o seguinte
1

Eu sugiro que você investigue se as placas-mãe dessas máquinas têm um cronômetro de vigilância a bordo. Acredito que estes sejam razoavelmente comuns pelo menos nos chipsets Intel. Se o hardware do watchdog estiver presente, encontre o software Windows adequado para configurar o temporizador e redefina-o regularmente enquanto a máquina permanecer descongelada. Se a máquina congelar, o software não poderá mais redefinir o timer e o cão de guarda redefinirá a máquina. Isso deve pelo menos resolver o congelamento do sistema rígido.

Dependendo do software, você poderá adicionar requisitos adicionais para a redefinição do timer, como conectividade de rede, processo de renderização ainda em execução, processo de renderização que fez algum progresso desde a última redefinição do timer ou similar. Não conheço o software disponível no Windows, só tenho usado watchdogs no Linux até agora.

MvG
fonte
-1

Uma solução criativa é descrita aqui

Os meninos resolveram um problema semelhante colocando 2 PCs um contra o outro. Quando o email chegou, o computador abriu (e depois fechou) o trailer do CD e pressionou o botão de reset no outro PC.

É claro que você pode usar qualquer outra coisa, capaz de receber sinal e mover qualquer parte para lá e para trás (como servo conectado a alguma coisa - porta paralela do PC antigo, GPIO da Rapsberry ou Arduino, ou qualquer outra coisa que você tenha por perto)

gilhad
fonte
1
Leitura divertida, mas inclua as partes importantes em sua postagem - as respostas devem ser o mais independentes possível.
Ben N