Shutdown script que verifica arquivo instrução em XML que autoriza desligamento.

Iniciado por wemersonrv, 02 de Maio de 2011, 09:09

tópico anterior - próximo tópico

wemersonrv

Bom dia galera!

Seguinte, não tenho nenhum conhecimento com scripts linux e preciso montar um script pra shutdown do pc, só que com uma particularidade:

Quando o script rodar, preciso verificar num arquivo XML se uma informação específica está OK... e só então executar o shutdown... Ah... o usuário em questão não é root, então preciso forçar o shutdown pra usuário não root...

O arquivo xml tem a estrutura abaixo:

<config>
  <conexao>
    <servidor>http://servidor1.com.br/</servidor>
    <terminal>44</terminal>
    <chave>chavedoterminal</chave>
    <desligar0>23:59:59</desligar0>
    <desligar1>23:59:59</desligar1>
    <desligar2>23:59:59</desligar2>
    <ligar>00:00:00</ligar>
    <intervaloatualiza>1</intervaloatualiza>
    <radio>1</radio>
    <ativo>1</ativo>
    <desligarpermitido>1</desligarpermitido>
  </conexao>
  <servidores>
    <servidor>http://servidor1.com.br/</servidor>
    <servidor>http://servidor2.com.br/</servidor>
    <servidor>http://servidor3.com.br/</servidor>
  </servidores>
</config>


Preciso ler a opção: config.conexao.desligarpermitido se igual a 1 permite desligar pelo script, caso contrário não permite...

Alguma dica?

jeflui

sed -n 's/.*<desligarpermitido>\(.*\)<\/desligarpermitido>.*/\1/p'
Assim você pega o valor, depois só tratar se for igual a 1 =)

wemersonrv

Hum... tranquilo... mas e pra abrir um arquivo xml? o que eu uso no linux?

irtigor

Citação de: wemersonrv online 02 de Maio de 2011, 11:29
Hum... tranquilo... mas e pra abrir um arquivo xml? o que eu uso no linux?
Ficou vago. Minha resposta seria "use um editor de texto".

Pra desligar

dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop

wemersonrv

Citação de: irtigor online 02 de Maio de 2011, 12:52
Citação de: wemersonrv online 02 de Maio de 2011, 11:29
Hum... tranquilo... mas e pra abrir um arquivo xml? o que eu uso no linux?
Ficou vago. Minha resposta seria "use um editor de texto".

Pra desligar

dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop


Opa... funcionou que é uma beleza a parte de desligar sem ser root... agora preciso que o sistema verifique automaticamente o arquivo xml pra ver se pode rodar o script de shutdown ou não.

irtigor


wemersonrv

Pessoal... demorei um tempo porque estava concentrado em outras tarefas e hoje conclui o script pra fazer o parse do arquivo xml e verificar se o desligamento está autorizado ou não e faz o shutdown...

#!/bin/sh

DESLIGAR = `sed -n 's/.*<desligarpermitido>\(.*\)<\/desligarpermitido>.*/\1/p' config.xml´

if [ $DESLIGAR = '1' ]
then
dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop
fi


Valeu a todos pelo auxilio...

wemersonrv

Bom dia pessoal...

Fiz uma série de testes aquie Funcionou 99%!  ;D :'(

O problema é que quando ligo a máquina, o script já roda e o <desligarpermitido> continua setado com 1 e desliga o micro novamente. Então, antes de desligar, preciso alterar o conteúdo do <desligarpermitido> para 0 e só então fazer o shutdown... como faço pra alterar esse valor e gravar o arquivo usando shell?

irtigor

Usando o programa sed

sed -i 's;<desligarpermitido>1</desligarpermitido>;<desligarpermitido>0</desligarpermitido>;g'

wemersonrv

Citação de: irtigor online 23 de Maio de 2011, 14:04
Usando o programa sed

sed -i 's;<desligarpermitido>1</desligarpermitido>;<desligarpermitido>0</desligarpermitido>;g'


Beleza... mas como faço pra gravar essa alteração no arquivo config.xml ?

irtigor

 sed -i 's;<desligarpermitido>1</desligarpermitido>;<desligarpermitido>0</desligarpermitido>;g' /caminho/para/o/arquivo/texto