Ajuda em Shell script

Iniciado por kakita, 01 de Março de 2008, 21:25

tópico anterior - próximo tópico

kakita

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

kakita

já fiz um script mas ta muito mal feito foi so para exprimentar
#!/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




kakita

#!/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

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

kakita

Já funciona :D mas não a 100% de qualquer das maneiras muito obrigado arlei pois era mesmo isso que vc disse
#!/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

kakita

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
#!/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

kakita

andei fuçando e agora meu script tá assim
#!/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??

clcampos

Substitua a estrutura com erro por esta:

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

kakita

clcampos vc realmente é algo de extraordinário
tudo quanto é duvidas em shell script vc resolve, quando for grande quero ser como vc
obrigadão 

kakita

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:
#!/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


bwnotyelc

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.

kakita

Citação de: bwnotyelc 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.

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