Meu MIni Shell Script. [RESOLVIDO]

1. Meu MIni Shell Script. [RESOLVIDO]

Alberto Federman Neto.
albfneto

(usa openSUSE)

Enviado em 28/07/2016 - 19:26h

Não sou profissional de TI, embora use Linux. Não escrevo código. Os poucos scripts que publiquei aqui, são traduções das strings, naturalmente com a autoria original citada. Nenhuma prática com Shell Scripting.

tenho uma simples tarefa. para ativar uma zwap, no meu Sabayon, eu tenho que executar este comando:


$ sudo /usr/bin/zswap.sh start zramX


onde X = 0-7... assim para o primeiro núcleo é 0, repito para o 1, depois para o 2 etc.... repete o comando um por um, uma vez para cada núcleo. Portanto, para ativar para todos, eu tenho que executar um por um. tá funcionando...

pensei em "automatizar" para os oito núcleos.... Após uma olhada na net, "improvisei" um pequeno Shell Script:


#!/bin/bash
sudo su
for i in $(seq 0 7)
do
/usr/bin/zswap.sh start zram$i
done


o script executa e minha shell vai para Root, mas ele não ativa nada. Parece bem simples automatizar, mas não tenho nenhuma prática com Shell Script.
outra coisa, daria para usar tipo um caracter coringa, que "colocasse" direto 0, depois 1, depois 2 e rodasse o comando.

Resumindo, o comando :


$ sudo /usr/bin/zswap.sh start zramX


precisa ser executado 8 vêzes seguidas, com X = 0 até 7, para ativar os 8 núcleos.

outro jeito que tentei foi assim:


#!/bin/bash
sudo su
for (( c=0; c<=7; c++ ))
do
/usr/bin/zswap.sh start zram$c
done




  


2. Re: Meu MIni Shell Script.

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 28/07/2016 - 20:19h

albfneto escreveu:

Não sou profissional de TI, embora use Linux. Não escrevo código. Os poucos scripts que publiquei aqui, são traduções das strings, naturalmente com a autoria original citada. Nenhuma prática com Shell Scripting.

tenho uma simples tarefa. para ativar uma zwap, no meu Sabayon, eu tenho que executar este comando:


$ sudo /usr/bin/zswap.sh start zramX


onde X = 0-7... assim para o primeiro núcleo é 0, repito para o 1, depois para o 2 etc.... repete o comando um por um, uma vez para cada núcleo. Portanto, para ativar para todos, eu tenho que executar um por um. tá funcionando...

pensei em "automatizar" para os oito núcleos.... Após uma olhada na net, "improvisei" um pequeno Shell Script:


#!/bin/bash
sudo su
for i in $(seq 0 7)
do
/usr/bin/zswap.sh start zram$i
done


o script executa e minha shell vai para Root, mas ele não ativa nada. Parece bem simples automatizar, mas não tenho nenhuma prática com Shell Script.
outra coisa, daria para usar tipo um caracter coringa, que "colocasse" direto 0, depois 1, depois 2 e rodasse o comando.

Resumindo, o comando :


$ sudo /usr/bin/zswap.sh start zramX


precisa ser executado 8 vêzes seguidas, com X = 0 até 7, para ativar os 8 núcleos.

outro jeito que tentei foi assim:


#!/bin/bash
sudo su
for (( c=0; c<=7; c++ ))
do
/usr/bin/zswap.sh start zram$c
done



__________________________________________________________
Boa noite albfneto.
Faça um teste, com essa pequena alteração,
A VAR "$c" entre aspas...
#!/bin/bash
sudo su
for ((c=0;c<=7;c++));do
/usr/bin/zswap.sh start zram"$c"
done


att.:
Marcelo Oliver


3. Re: Meu MIni Shell Script.

Alberto Federman Neto.
albfneto

(usa openSUSE)

Enviado em 28/07/2016 - 20:25h

Marcelo... tá começando a funcionar.... ativou sim, mas os núcleos de 0-4 e não os 8!

resumo, iniciou os núcleos de 0 a 3... o, 1 2 e 3


funcionando, eu te dou uma co-autoria do script, em um artigo, no Blog do EDPS, depois te passo o link.

¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
Albfneto,
Ribeirão Preto, S.P., Brasil.
Usuário Linux, Linux Counter: #479903.
Distros Favoritas: Sabayon, Gentoo, openSUSE, Mageia e OpenMandriva.


4. Re: Meu MIni Shell Script. [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 28/07/2016 - 20:31h

No caso de sintaxe

for i in {0..7}
do
script $i
done


mas eu não entendi a parte do erro.

----------------------------------------------------------------------------------------------------------------
Nem direita, nem esquerda. Quando se trata de corrupção o Brasil é ambidestro.
(anônimo)

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden



5. Re: Meu MIni Shell Script. [RESOLVIDO]

Arthur J. Hoch
Arthur_Hoch

(usa FreeBSD)

Enviado em 28/07/2016 - 20:51h

albfneto escreveu:

Marcelo... tá começando a funcionar.... ativou sim, mas os núcleos de 0-4 e não os 8!

resumo, iniciou os núcleos de 0 a 3... o, 1 2 e 3


funcionando, eu te dou uma co-autoria do script, em um artigo, no Blog do EDPS, depois te passo o link.

¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨


Nesse último problema, pode ser que seja que o script que você está executando, no script que vocês está fazendo, precise de um delay, para que ele não concorra com uma mesma instância dele.

Eu tentaria colocar um "sleep 1" dentro do for.


6. Re: Meu MIni Shell Script.

Alberto Federman Neto.
albfneto

(usa openSUSE)

Enviado em 28/07/2016 - 21:23h

estado da arte....
as duas sintaxes funcionam, Marcelo e Listeiro, mas as duas ativam só alguns núcleos e as vêzes, não ativam nada.
No momento, agradeço, obrigado.
depois irei mexer mais.
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
Albfneto,
Ribeirão Preto, S.P., Brasil.
Usuário Linux, Linux Counter: #479903.
Distros Favoritas: Sabayon, Gentoo, openSUSE, Mageia e OpenMandriva.


7. Re: Meu MIni Shell Script. [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 29/07/2016 - 00:21h

albfneto escreveu:

estado da arte....
as duas sintaxes funcionam, Marcelo e Listeiro, mas as duas ativam só alguns núcleos e as vêzes, não ativam nada.
No momento, agradeço, obrigado.
depois irei mexer mais.
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨

albfneto, mais uma opção, um "contador" sem "for", sem laço . . .
Tive situações, que ele resolveu . . .

#!/bin/bash
CONTA() {
local N="$1"
/usr/bin/zswap.sh start zram"$N"
let N++
(($N<=7)) && { sleep 0.25;CONTA "$N"; } || exit
}
CONTA 0



Surgiu uma dúvida:
Quanto tempo é gasto para executar o script zswap.sh para cada núcleo?

att.:
Marcelo Oliver



8. Funcionou!

Alberto Federman Neto.
albfneto

(usa openSUSE)

Enviado em 29/07/2016 - 15:23h

Vou fazer uma co-autoria a vocês, no script e no artigo.

tinha duas coisas.... uma eu descobri, não podia ser com "sudo su" interno, no script
funcionou com sudo "normal", tipo "sudo sh script.sh"

a outra,,,, quem disse que era o tempo de execução do loop, acertou...
é pq os núcleos levam uns 2 ou 3 segundos para ativar.

o que fiz? coloquei a linha para ativar o módulo do kernel (ele não vem por default no sabayon)

coloquei umas linhas de "sleep" para dar um tempo e uns "echo" para separar as linhas e agora executa, funciona e ficou legal...
a gente vê toda a execução dele no terminal.

gostei de fazer meu primeiro shell script, nunca tinha feito, é legal. Vc pode ter contrôle de tudo!

Este é o Script que funciona, fiz vários testes, e umas vêzes sem sudo para ver...

ele ficou assim


#!/bin/bash

# Script Ativador de ZSwap em todos os 8 núcleos de um Computador.
# Autor: Albfneto, Brasil, 2016. <albfneto@fcfrp.usp.br>
# Co-Autores: MsOliver. Listeiro_O37 e Arthur_Hoch.
# Site: Viva o Linux.
#
#
# Esta porção do código, modificada do publicado por: Braiam, 2015.
# Site: askubuntu.com/questions/711580/how-to-enter-password-only-once-in-a-bash-script-needing-sudo
if [[ $EUID -ne 0 ]]; then
echo "Este Script precisa ser executado como Root, porisso use sudo sh "$0""
1>&2
exit 1
fi

#
#
echo
echo
echo "Script Ativador de ZSwap em Todos os Núcleos."
echo
echo
sleep 3
echo "Carregando Módulo de Kernel..."
sleep 3
modprobe zram num_devices=8
echo
echo
echo "Módulo Carregado..."
echo
echo
sleep 3
echo "Ativando ZSwap em todos os núcleos:"
echo
echo
for i in {0..7};
do
sleep 1
/usr/sbin/zswap.sh start zram"$i"
sleep 1
done
sleep 3
echo
echo
echo "Todos os Núcleos Foram Ativados:"
echo
echo
swapon --show
echo
echo
echo "Saindo... Tchau!"
sleep 3
exit


Vcs concordam de como coloquei as co-autorias? Você autorizam divulgar os perfis VOL de vocês num artigo no Blog do EDPS?

https://edpsblog.wordpress.com/

Caso autorizem divulgar os nicknames e perfís, autorizam divulgar os nomes completos? Para ver como eu faço, com meu nome completo, eis um dos meus artigos lá no Blog:

https://edpsblog.wordpress.com/2016/07/22/reformando-os-sistemas-operacionais-de-um-microcomputador-da-usp/




¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
Albfneto,
Ribeirão Preto, S.P., Brasil.
Usuário Linux, Linux Counter: #479903.
Distros Favoritas: Sabayon, Gentoo, openSUSE, Mageia e OpenMandriva.


9. Script Desligador

Alberto Federman Neto.
albfneto

(usa openSUSE)

Enviado em 29/07/2016 - 16:05h

Agora fiz o "Desligador" da ZSwap e funcionou.


#!/bin/bash

# Script Desligador de ZSwap em todos os 8 núcleos de um Computador.
# Autor: Albfneto, Brasil, 2016. <albfneto@fcfrp.usp.br>
# Co-Autores: MsOliver. Listeiro_O37 e Arthur_Hoch.
# Site: Viva o Linux.
#
#
# Esta porção do código, modificada do publicado por: Braiam, 2015.
# Site: askubuntu.com/questions/711580/how-to-enter-password-only-once-in-a-bash-script-needing-sudo
if [[ $EUID -ne 0 ]]; then
echo "Este Script precisa ser executado como Root, porisso use: sudo sh "$0""
1>&2
exit 1
fi
#
#
echo
echo
echo "Script Desligador de ZSwap, em Todos os Núcleos."
echo
echo
sleep 3
echo "Desligando ZSwap de todos os núcleos:"
echo
echo
for i in {0..7};
do
sleep 1
/usr/sbin/zswap.sh stop zram"$i"
sleep 1
done
sleep 3
echo
echo
echo "Todos os Núcleos Foram Desligados:"
echo
echo
swapon --show
echo
echo
sleep 2
echo "Reativando a Swap Clássica..."
echo
echo
swapoff -a
sleep 2
swapon -a
echo
echo
echo "Swap Normal:"
echo
echo
swapon --show
echo
echo
echo "Saindo... Tchau!"
sleep 3
exit

¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
Albfneto,
Ribeirão Preto, S.P., Brasil.
Usuário Linux, Linux Counter: #479903.
Distros Favoritas: Sabayon, Gentoo, openSUSE, Mageia e OpenMandriva.


10. Re: Meu MIni Shell Script.

Arthur J. Hoch
Arthur_Hoch

(usa FreeBSD)

Enviado em 29/07/2016 - 18:08h


1 #!/bin/bash
2
3 print(){
4 echo
5 echo
6 echo $1
7 echo
8 echo
9 }
10
11 print "Alguma mensagem"


Em vez de colocar tantos "echo's", faria algo assim.


11. Re: Meu MIni Shell Script. [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 29/07/2016 - 18:30h

albfneto escreveu:

Vou fazer uma co-autoria a vocês, no script e no artigo.

tinha duas coisas.... uma eu descobri, não podia ser com "sudo su" interno, no script
funcionou com sudo "normal", tipo "sudo sh script.sh"

a outra,,,, quem disse que era o tempo de execução do loop, acertou...
é pq os núcleos levam uns 2 ou 3 segundos para ativar.

o que fiz? coloquei a linha para ativar o módulo do kernel (ele não vem por default no sabayon)

coloquei umas linhas de "sleep" para dar um tempo e uns "echo" para separar as linhas e agora executa, funciona e ficou legal...
a gente vê toda a execução dele no terminal.

gostei de fazer meu primeiro shell script, nunca tinha feito, é legal. Vc pode ter contrôle de tudo!

Este é o Script que funciona, fiz vários testes, e umas vêzes sem sudo para ver...

ele ficou assim


#!/bin/bash

# Script Ativador de ZSwap em todos os 8 núcleos de um Computador.
# Autor: Albfneto, Brasil, 2016. <albfneto@fcfrp.usp.br>
# Co-Autores: MsOliver. Listeiro_O37 e Arthur_Hoch.
# Site: Viva o Linux.
#
#
# Esta porção do código, modificada do publicado por: Braiam, 2015.
# Site: askubuntu.com/questions/711580/how-to-enter-password-only-once-in-a-bash-script-needing-sudo
if [[ $EUID -ne 0 ]]; then
echo "Este Script precisa ser executado como Root, porisso use sudo sh "$0""
1>&2
exit 1
fi

#
#
echo
echo
echo "Script Ativador de ZSwap em Todos os Núcleos."
echo
echo
sleep 3
echo "Carregando Módulo de Kernel..."
sleep 3
modprobe zram num_devices=8
echo
echo
echo "Módulo Carregado..."
echo
echo
sleep 3
echo "Ativando ZSwap em todos os núcleos:"
echo
echo
for i in {0..7};do sleep 1
/usr/sbin/zswap.sh start zram"$i"
sleep 1
done
sleep 3
echo
echo
echo "Todos os Núcleos Foram Ativados:"
echo
echo
swapon --show
echo
echo
echo "Saindo... Tchau!"
sleep 3
exit


Vcs concordam de como coloquei as co-autorias? Você autorizam divulgar os perfis VOL de vocês num artigo no Blog do EDPS?

https://edpsblog.wordpress.com/

Caso autorizem divulgar os nicknames e perfís, autorizam divulgar os nomes completos? Para ver como eu faço, com meu nome completo, eis um dos meus artigos lá no Blog:

https://edpsblog.wordpress.com/2016/07/22/reformando-os-sistemas-operacionais-de-um-microcomputador-da-usp/
¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
Albfneto,
Ribeirão Preto, S.P., Brasil.
Usuário Linux, Linux Counter: #479903.
Distros Favoritas: Sabayon, Gentoo, openSUSE, Mageia e OpenMandriva.

________________________________________________________________________
Boa noite albfneto.
Estava "intrigado" com o tempo de execução do script....
Tanto que perguntei na postagem anterior....
Bom que funcionou!!!!
Um detalhe:
Essa "fila" de echo . . . rsrsrsrs
No lugar de:
echo
echo
echo "Todos os Núcleos Foram Ativados:"
echo
echo

Sugiro:
echo -e "\n\nTodos os Núcleos Foram Ativados:\n\n"

Qto a autorização, sem problema.

abç.:
Marcelo Sérgio Oliver
PS.: Esse "s" do meu login é de Sérgio . . .



12. Re: Meu MIni Shell Script.

Arthur J. Hoch
Arthur_Hoch

(usa FreeBSD)

Enviado em 29/07/2016 - 18:31h



Você só precisa declarar uma vez a função "print".

Fiz uns ajustes, agora você pode "printar" uma mensagem e esperar um determinado tempo ou não.

De uma olhada nesse codigo:


1 #!/bin/bash
2
3 print(){
4 echo
5 echo
6 echo $1
7 echo
8 echo
9 if [ ! -z $2 ]; then sleep $2; fi
10 }
11
12 ## Print com delay de dois segundo
13
14 print "Qualquer coisa, delay de dois segundos" 2
15
16 ## Print sem delay
17
18 print "Qualquer coisa, sem delay"
19
20 ## Print com delay de 10 segundos
21
22 print "Dez segundos de espera" 10






01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts