Fórum Ubuntu Linux - PT
Suporte Técnico => Programação e Scripts => Tópico iniciado por: wemersonrv em 02 de Maio de 2011, 09:09
-
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?
-
sed -n 's/.*<desligarpermitido>\(.*\)<\/desligarpermitido>.*/\1/p'
Assim você pega o valor, depois só tratar se for igual a 1 =)
-
Hum... tranquilo... mas e pra abrir um arquivo xml? o que eu uso no linux?
-
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
-
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.
-
Use o incron.
-
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...
-
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?
-
Usando o programa sed
sed -i 's;<desligarpermitido>1</desligarpermitido>;<desligarpermitido>0</desligarpermitido>;g'
-
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 ?
-
sed -i 's;<desligarpermitido>1</desligarpermitido>;<desligarpermitido>0</desligarpermitido>;g' /caminho/para/o/arquivo/texto
-
Maravilha... valeu!!!!!