Autor Tópico: Ajuda em Shell script  (Lida 7372 vezes)

Offline kakita

  • Usuário Ubuntu
  • *
  • Mensagens: 285
    • Ver perfil
Ajuda em Shell script
« Online: 01 de MAR?O de 2008, 21:25 »
boas
sou muito noob em programaçao só sei mexer um pouco em python e queria ajuda para fazer um shell script
visto que nao consigo jogar com o compiz ligado eis o que ele tem de fazer (por esta ordem):
Desligar AWN
Desligar os efeitos do compiz
abrir o savage( jogo)
e quando desligar o savage
ligar os efeito do compiz
ligar AWN
nota: o caminho para o savage é "/home/miguel/Savage/Savage"
Agradeco muito

Offline kakita

  • Usuário Ubuntu
  • *
  • Mensagens: 285
    • Ver perfil
Re: Ajuda em Shell script
« Resposta #1 Online: 03 de MAR?O de 2008, 12:09 »
já fiz um script mas ta muito mal feito foi so para exprimentar
Código: [Selecionar]
#!/bin/bash
killall avant-window-navigator
killall compiz.real
metacity
/home/miguel/Savage/Savage && echo "Iniciando o Savage"
killall metacity
Compiz.real && echo "Iniciando o Compiz"
avant-window-navigator && echo "Iniciando o AWN"
mas dá erro e penso que seja por faltar uma condiçao a dizer que só depois de desligar o savage e que e faz o resto do código mas esta parte nao sei fazer




Offline kakita

  • Usuário Ubuntu
  • *
  • Mensagens: 285
    • Ver perfil
Re: Ajuda em Shell script
« Resposta #2 Online: 05 de MAR?O de 2008, 12:04 »
Código: [Selecionar]
#!/bin/bash
killall avant-window-navigator  && echo "Fechando AWN"
metacity --replace &
/home/miguel/Savage/Savage &
sleep 10
killall silverback.bin && echo "Fechando Savage"
compiz --replace &
avant-window-navigator &
done
mas nao sei como executar os comandos
compiz --replace &
avant-window-navigator &
apenas quando desligar o savage

arlei

  • Visitante
Re: Ajuda em Shell script
« Resposta #3 Online: 05 de MAR?O de 2008, 14:54 »
Olá amigo.

Sei praticamente nada de shell script (programação como um todo), mais o uso do operador && acho que pode ser usado neste caso, pois com uso deste operador entre os comandos o próximo comando apenas será executado se o anterior teve sucesso. Assim como o operador || (duplo-pipe) serve justamente ao contrario, ou seja, executa o próximo se o anterior falhou.

Nota: Acredito que o mais correto seria fazer uma rotina (loop) onde determinada condição seria analisada e caso satisfeita algo executado, caso contrário emitir um aviso ou executar outro comando diferente, mais como disse, isso não é minha praia.

T+
Arlei

Offline kakita

  • Usuário Ubuntu
  • *
  • Mensagens: 285
    • Ver perfil
Re: Ajuda em Shell script
« Resposta #4 Online: 09 de MAR?O de 2008, 23:01 »
Já funciona :D mas não a 100% de qualquer das maneiras muito obrigado arlei pois era mesmo isso que vc disse
Código: [Selecionar]
#!/bin/bash
killall avant-window-navigator  && echo "Fechando AWN"
sleep 2
metacity --replace &
sleep 2
/home/miguel/Savage/Savage ||
sleep 2
compiz --replace &
sleep 2
avant-window-navigator ||
done
exit
eu sei que tem muito sleep mas eu gosto de dar tempo para fazer tudo bem feito
o problema agora é que eu nao consigo fazer com que o AWN e o compiz fiquem ligados quando a consola fecha (penasava que era só meter & mas nao é) por ixo tenho aquelo duplo pipe ali provisório mas é chato porque a consola fica sempre ligada. O mais estranho é que por pesquisas que fiz pela internet todos dizem que é só por & a frente do comando e depois poxo fechar a consola. Alguem sabe como?? acho que é facil eu é que sou novato ;)
obrigado e fiquem bem
 

Offline kakita

  • Usuário Ubuntu
  • *
  • Mensagens: 285
    • Ver perfil
Re: Ajuda em Shell script
« Resposta #5 Online: 07 de Abril de 2008, 21:59 »
Boas
Tenho de fazer outro script, o que quero é um script que me teste se determinado programa está aberto e se não estiver que o abra e depois quero ligar varios programas em cadeia, eis um exemplo muito fácil daquilo que fiz que vc's mesmos podem ver que não está funcionando direito pois todos tem esses programas
Código: [Selecionar]
#!/bin/bash
if [-e gedit]
then
echo "gedit is On"
else
gedit
fi
if [-e gcalctool]
then
echo "Calculator is On"
else
gcalctool
fi
no lugar do -e já pus -r e já deixei em branco mas o resultado é sempre o mesmo penso que não seja dificil mas sou novo em shell e pratico muito pouco, só faço um script quando preciso.
Agradeço qualquer ajuda

Offline kakita

  • Usuário Ubuntu
  • *
  • Mensagens: 285
    • Ver perfil
Re: Ajuda em Shell script
« Resposta #6 Online: 08 de Abril de 2008, 11:08 »
andei fuçando e agora meu script tá assim
Código: [Selecionar]
#!/bin/bash
if [(ps -C gedit | wc -l) -gt 1]
then
echo "gedit is On"
else
echo "gedit is Off"
fi

if [(ps -C gcalctool | wc -l) -gt 1]
then
echo "Calculator is On"
else
echo "Calculator is Off"
fi

mas dá esse erro :
./teste.sh: line 2: syntax error near unexpected token `ps'
./teste.sh: line 2: `if [(ps -C gedit | wc -l) -gt 1]'

penso que esteja faltando aspas ou algo assim
alguem pode ajudar??

Offline clcampos

  • Administrador
  • Usuário Ubuntu
  • *****
  • Mensagens: 10.790
  • .:: User Linux #439596 ::.
    • Ver perfil
Re: Ajuda em Shell script
« Resposta #7 Online: 08 de Abril de 2008, 11:15 »
Substitua a estrutura com erro por esta:

Citar
if test `ps -C gedit | wc -l` -gt 1
Cristiano/Timóteo - MG
.: Como Fazer Perguntas de Forma Inteligente :.                
Com dúvida? pesquise!

Offline kakita

  • Usuário Ubuntu
  • *
  • Mensagens: 285
    • Ver perfil
Re: Ajuda em Shell script
« Resposta #8 Online: 08 de Abril de 2008, 13:58 »
clcampos vc realmente é algo de extraordinário
tudo quanto é duvidas em shell script vc resolve, quando for grande quero ser como vc
obrigadão 

Offline kakita

  • Usuário Ubuntu
  • *
  • Mensagens: 285
    • Ver perfil
Re: Ajuda em Shell script
« Resposta #9 Online: 08 de Abril de 2008, 20:28 »
Eu queria fazer um script desses genero para consertar uma falha no boot dos screenlets mas como o tipo do comando dos screenlets é diferente dos programas acima referidos o script não faz aquilo que eu quero
este é meu script, tem mais mas o resto é sempre igual:
Código: [Selecionar]
#!/bin/bash
#Criado por Miguel Soares
if test `ps -C 'python -u /usr/share/screenlets/Clock/ClockScreenlet.py' | wc -l` -gt 7
then
echo "Screenlet On"
else
/usr/share/screenlets/Clock/ClockScreenlet.py &
fi
#---------------------------------------------------------------------------------------------------------
if test `ps -C 'python -u /home/miguel/.screenlets/CPU_Meter/CPU_MeterScreenlet.py' | wc -l` -gt 8
then
echo "Screenlet On"
else
/home/miguel/.screenlets/CPU_Meter/CPU_MeterScreenlet.py &
fi
o problema é que ele nao diferencia cada screenlet um do outro para ele é tudo python
se eu tiver os scrrenlets desligados meter na consola ps -C 'python /usr/share/screenlets/Clock/ClockScreenlet.py' | wc -l
ele retorna 7 em vez de 1 e se eu ligar um screenlet qualquer ele retorna 8 e por aí fora
ps -C ' /usr/share/screenlets/Clock/ClockScreenlet.py' | wc -l tambem não serve
não sei como resolver isto


Offline bwnotyelc

  • Usuário Ubuntu
  • *
  • Mensagens: 1
    • Ver perfil
Ajuda em Shell script
« Resposta #10 Online: 17 de Setembro de 2008, 21:20 »
Boa noite galere
Eu estou precisando desenvolver um script que envie um arquivo para o Dansguardian analisar. Nesse arquivo conterá várias url´s como por exemplo:
www.uol.com.br
www.globo.com
www.bol.com.br
www.playboy.com.br

Na verdade esse arquivo seria um corte do arquivo access.log do squid, vai ter apenas as url´s. Esse script deverá enviar esse arquivo para o Dansguardian analisar site por site. Você poderia me ajudar nessa batalha? Grato.

Offline kakita

  • Usuário Ubuntu
  • *
  • Mensagens: 285
    • Ver perfil
Re: Ajuda em Shell script
« Resposta #11 Online: 21 de Setembro de 2008, 08:40 »
Boa noite galere
Eu estou precisando desenvolver um script que envie um arquivo para o Dansguardian analisar. Nesse arquivo conterá várias url´s como por exemplo:
www.uol.com.br
www.globo.com
www.bol.com.br
www.playboy.com.br

Na verdade esse arquivo seria um corte do arquivo access.log do squid, vai ter apenas as url´s. Esse script deverá enviar esse arquivo para o Dansguardian analisar site por site. Você poderia me ajudar nessa batalha? Grato.

Eu não sou grande programador mas posso tentar dar uma ajuda

1º escreve o programa em linguagem corrente, escreve tudo bem detalhado, passo por passo tudo o queres fazer e depois é só passar para linguagem shell e aí eu posso dar uma ajuda