Pular para o conteúdo

problemas com argumentos [RESOLVIDO]

Responder tópico
  • Denunciar
  • Indicar
01 02

1. problemas com argumentos [RESOLVIDO]

Enviado em 25/10/2009 - 13:46h

meu objetivo eh criar um script que me diga quando existe uma atualização no slackware utilizando o slackpkg

veja como está ateh agr:

========================================

#!/bin/bash

#verifica se o slackpkg esta atualizado e envia o resultado para o arquivo aa
su -c 'slackpkg check-updates' > aa

i="No news is good news"
a=`grep "No news is good news" aa`

echo $a

if [ $a = $i ]; #verifica se o slackpkg esta atualizado

then

su -c 'slackpkg upgrade-all' #atualiza o sistema

else

su -c 'slackpkg update' #atualiza o slackpkg

fi

===============================================

o nome do script eh "atualização"

e veja oq esta acontecendo

==================================================

douglas@Casa:~/scripts/atualização$ sh atualização
Password:
No news is good news
atualização: line 11: [: too many arguments
Password:

========================================

ou seja, se eu coloca a senha dnovo, ele executa a linha 19 "su -c 'slackpkg update'"

sendo que era primeiro ele analizar se o slackpkg esta atualizado

qualquer resposta será vem vinda

vlw

Responder tópico

2. Re: problemas com argumentos [RESOLVIDO]

Melhor resposta

Enviado em 25/10/2009 - 14:28h

troca isso:

#verifica se o slackpkg esta atualizado
if [ "$a" = "$i" ]; then
su -c 'slackpkg upgrade-all' #atualiza o sistema
else
su -c 'slackpkg update' #atualiza o slackpkg
fi

mas acho q a logica ta meio doida, nao?
{{{
se [ "sem novidades" = "sem novidades" ]; entao
su -c atualiza tudo
se nao
su -c atualiza o slackpkg
fim se
}}}

como que funciona esse slackpkg???

3. Re: problemas com argumentos [RESOLVIDO]

Enviado em 25/10/2009 - 14:43h

xD funcionou

fiz do meu jeito e soh coloquei com as aspas

vlw

funciona assim:

slackpkg check-updates ele verifica se esta atualizado

se ele estiver atualizado aparesse o seguinte

===============================


No news is good news

================================

igual como esta ai, ou seja ele pula 2 linhas coloca o resultado e pula mais uma

por isso eu enviei o resultado para o arquivo "aa" e depois busquei o resultado com o grep

a questa eh, e se o slackpkg nao estiver atualizado, eu nao sei oq aparece, pois soh agr que estou usando o "slackpkg check-updates"

antigamente eu atualizava direto sem saber se precisava ou nao

======================================================

bom ja que ele esta funcionando, ta tudo ok

mas tem um porem, eu preciso de um loop aki

pq se ele nao estiver atualizado, ele vai atualizar e vai acabar, ai terei que rodar dnovo para atualizar

====================================================


4. Re: problemas com argumentos [RESOLVIDO]

Enviado em 25/10/2009 - 15:03h

sim, essa parte toda eu sei como é, quero saber o seguinte... por que vc atualiza o sistema todo se nao tem novidades e em parte se tiver???

o loop q vc quer deve ser iso:

while [ 0 ]; do

seu script aqui dentro
sleep 300 ;# em segundos... altere pra nao ficar rodando o tempo todo, para um numero beeeeem grande, tipo equivalente a 24, 48, 72 horas etc

done

fim.

5. Re: problemas com argumentos [RESOLVIDO]

Enviado em 25/10/2009 - 15:29h

agr deixei meu script assim

sei que esta tudo errado, mas da p ver oq eu quero fazer

===========================================

#!/bin/bash

u=`whoami` #verifica o usuario logado atriui o valor para "u"


while [ "$u" = "root" ] # verifica se o usuario é o root

do

su

done

while [ 0 ]; do

slackpkg check-updates > aa

i="No news is good news"
a=`grep "No news is good news" aa`

echo $a

if [ "$a" = "$i" ]; #verifica se o slackpkg esta atualizado

then

slackpkg upgrade-all #atualiza o sistema

else

slackpkg update #atualiza o slackpkg

fi

sleep 300

done

======================================

nao sei se eu coloquei o while no lugar certo

tbm queria que assim que acabasse de executar "slackpkg upgrade-all" o script parasse de rodar

6. Re: problemas com argumentos [RESOLVIDO]

Enviado em 25/10/2009 - 20:26h

bom agr consegui dar um jeito na permissão root, olhei como era feita a instalação do nessus e peguei parte do codigo

============================================

#!/bin/bash

case `id` in
uid=0*)
;;
*)
echo "Você precisa do prefilegio root para atualizar"
exit 1
;;
esac



slackpkg check-updates > aa

i="No news is good news"
a=`grep "No news is good news" aa`

echo $a

if [ "$a" = "$i" ]; #verifica se o slackpkg esta atualizado

then

slackpkg upgrade-all #atualiza o sistema

else

slackpkg update #atualiza o slackpkg

fi

sleep 300

done

7. Re: problemas com argumentos [RESOLVIDO]

Enviado em 25/10/2009 - 20:32h

cara, vc ta de parabens, mostrou que tem espirito...

vc podia fazer o teste com o if mesmo, bastava colocar o exit como condicao caso nao fosse root.

algo como

if [ ! `whoami` = "root" ]; then
echo "precisa ser root"
exit 1
fi

8. Re: problemas com argumentos [RESOLVIDO]

Enviado em 25/10/2009 - 21:13h

acho que vou fazer do meu jeito msm, mas agr coloquei mais coisa

==============================================

if [ ! `whoami` = "root" ]; then
echo "Você precisa do prefilegio root para atualizar"
echo "deseja fazer o login agora? (y/n)"; read p

if [ "$p" = y ] ; then

su

else

exit 1

fi

fi

====================================

olha oq acontece

douglas@Casa:~/scripts/atualização$ sh atualização
Você precisa do prefilegio root para atualizar
deseja fazer o login agora? (y/n)
y
Password:
bash-3.1# exit
exit
atualização: line 19: slackpkg: command not found

atualização: line 34: slackpkg: command not found

=============================

quero que ele soh de sequencia ao script como root

e tbm desse jeito, seu eu digitar a senha do root errado, ele da se quencia ao script

douglas@Casa:~/scripts/atualização$ sh atualização
Você precisa do prefilegio root para atualizar
deseja fazer o login agora? (y/n)
y
Password:
Sorry.
atualização: line 19: slackpkg: command not found

atualização: line 34: slackpkg: command not found


9. Re: problemas com argumentos [RESOLVIDO]

Enviado em 25/10/2009 - 21:44h

esquece isso... ou o cara roda como root ou nao roda, pq qdo ele autentica como vc diz ele abre novo shell em fork ai ele roda o proximo comando... em outra shell como root


tendeu?

poe o teste como eu falei... o if q eu te passei substitui o case/ esac ... era so isso... o outro script tava melhor, funcionava.. fica nele.. so troca o case pelo if.. so isso

depois daquilo insere o seu script

ok?

10. Re: problemas com argumentos [RESOLVIDO]

Enviado em 26/10/2009 - 01:05h

nao entendi muito bem oq vc quis dizer

ai decidi mudar umas coisas

======================================

#!/bin/bash

if [ ! `whoami` = "root" ]; then
echo "Você precisa do prefilegio root para atualizar"
exit 1
fi

slackpkg check-updates > aa

a=`grep "No news is good news" aa`
i="No news is good news"

while [ "$a" = "$i" ]; do

slackpkg update #atualiza o slackpkg

slackpkg check-updates > aa #verifica se o slackpkg esta atualizado e envia o resultado para o arquivo aa

a=`grep "No news is good news" aa`

done

echo "deseja instalar as atualizações agora?" ; read n

if [ "$n" = "y" ]

then

slackpkg upgrade-all #atualiza o slackpkg

else

exit 1

fi

====================================================

a questao eh que ele soh atualiza

11. Re: problemas com argumentos [RESOLVIDO]

Enviado em 26/10/2009 - 01:20h

finalmente consegui xD

===============================================

#!/bin/bash

if [ ! `whoami` = "root" ]; then #verifica se o usuario logado é o root, caso nao seja ele sai do script
echo "Você precisa do prefilegio root para atualizar"
exit 1
fi

slackpkg check-updates > aa

a=`grep "No news is good news" aa` #busca o o texto "No news is good news" no arquivo "aa" e define o resuldado como o valor da variavel "a"
i="No news is good news"

until [ "$a" = "$i" ] ; do

slackpkg update #atualiza o slackpkg

slackpkg check-updates > aa #verifica se o slackpkg esta atualizado e envia o resultado para o arquivo aa

a=`grep "No news is good news" aa`

done

echo "deseja instalar as atualizações agora?" ; read n #atribui valor para variavel "n"

if [ "$n" = "y" ]

then

slackpkg upgrade-all #atualiza o slackpkg

else

exit 1

fi

=================================================

12. Re: problemas com argumentos [RESOLVIDO]

Enviado em 26/10/2009 - 01:23h

parabens cara, voce foi meu melhor aluno ate agora.

continue firme ai no shell script, sempre paga (e muito!!! volta e meia eu saio de uma com um script) saber isso no Linux...
01 02

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder