Autor Tópico: Shutdown script que verifica arquivo instrução em XML que autoriza desligamento.  (Lida 3761 vezes)

Offline wemersonrv

  • Usuário Ubuntu
  • *
  • Mensagens: 53
    • Ver perfil
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:

Código: [Selecionar]
<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?

Offline jeflui

  • Usuário Ubuntu
  • *
  • Mensagens: 745
    • Ver perfil
Código: [Selecionar]
sed -n 's/.*<desligarpermitido>\(.*\)<\/desligarpermitido>.*/\1/p'Assim você pega o valor, depois só tratar se for igual a 1 =)

Offline wemersonrv

  • Usuário Ubuntu
  • *
  • Mensagens: 53
    • Ver perfil
Hum... tranquilo... mas e pra abrir um arquivo xml? o que eu uso no linux?

Offline irtigor

  • Equipe Ubuntu
  • Usuário Ubuntu
  • *****
  • Mensagens: 4.344
  • Delete, delete, delete!
    • Ver perfil
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
Código: [Selecionar]
dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop

Offline wemersonrv

  • Usuário Ubuntu
  • *
  • Mensagens: 53
    • Ver perfil
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
Código: [Selecionar]
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.

Offline irtigor

  • Equipe Ubuntu
  • Usuário Ubuntu
  • *****
  • Mensagens: 4.344
  • Delete, delete, delete!
    • Ver perfil
Use o incron.

Offline wemersonrv

  • Usuário Ubuntu
  • *
  • Mensagens: 53
    • Ver perfil
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...

Código: [Selecionar]
#!/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...

Offline wemersonrv

  • Usuário Ubuntu
  • *
  • Mensagens: 53
    • Ver perfil
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?
« Última modificação: 23 de Maio de 2011, 11:43 por wemersonrv »

Offline irtigor

  • Equipe Ubuntu
  • Usuário Ubuntu
  • *****
  • Mensagens: 4.344
  • Delete, delete, delete!
    • Ver perfil
Usando o programa sed
Código: [Selecionar]
sed -i 's;<desligarpermitido>1</desligarpermitido>;<desligarpermitido>0</desligarpermitido>;g'

Offline wemersonrv

  • Usuário Ubuntu
  • *
  • Mensagens: 53
    • Ver perfil
Usando o programa sed
Código: [Selecionar]
sed -i 's;<desligarpermitido>1</desligarpermitido>;<desligarpermitido>0</desligarpermitido>;g'

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

Offline irtigor

  • Equipe Ubuntu
  • Usuário Ubuntu
  • *****
  • Mensagens: 4.344
  • Delete, delete, delete!
    • Ver perfil
 sed -i 's;<desligarpermitido>1</desligarpermitido>;<desligarpermitido>0</desligarpermitido>;g' /caminho/para/o/arquivo/texto

Offline wemersonrv

  • Usuário Ubuntu
  • *
  • Mensagens: 53
    • Ver perfil
Maravilha... valeu!!!!!