Acessar Lista Items - Shell Script [RESOLVIDO]

1. Acessar Lista Items - Shell Script [RESOLVIDO]

Monique
monique_silva7

(usa Red Hat)

Enviado em 01/11/2016 - 18:41h

Pessoal

Poderiam me ajudar na seguinte situação?

Imagine o seguinte;

VARIAVEL=$(ls /etc/passwd)

Acima ele vai listar;
nome1
nome2
nome3 assim por diante

Eu preciso que, a cada linha acessar e ter uma ação.Após tratar a primeira linha, seguir para a segunda linha, assim por diante. Utilizei o for, mas não obtive o objetivo desejado.

Obrigado desde já


  


2. MELHOR RESPOSTA

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 03/11/2016 - 19:58h

monique_silva7 escreveu:

Marcelo,

Testei o seu exemplo, mas ele pega toda a lista.
Obs: A minha lista, existe apenas um campo, então eu tentei assim;
Porém, no file.txt, não existe apenas um arquivo, eu criei uma variavel para procurar ttodos os .logs, joguei numa variável. exemplo.
Nesse caso eu não sei onde declarar a variável $var para acessar cada linha e processar os meus comandos.
Não sei se ficou claro para vc.
var=$(find / server.log)
while read line;do
echo -e "$linen"
done < file.txt


=============================
Monique, boa noite.
Qual o objetivo do comando, "find / server.log"?
É procurar o arquivo "server.log"?
E posteriormente, ler "linha a linha" do mesmo com o "while read line;do . . . "
Caso positivo, faça:
var=$(find / server.log)
while read line;do
echo -e "$linen"
done <"$var"

A "$var", substitui o "file.txt"

att.:
marcelo oliver


3. Re: Acessar Lista Items - Shell Script [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 01/11/2016 - 19:34h

Num sistema normal o comando

ls /etc/passwd

retorna a única linha

/etc/passwd

que será o conteúdo da variável.

Não entendi bem o que deseja.

----------------------------------------------------------------------------------------------------------------
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



4. Re: Acessar Lista Items - Shell Script [RESOLVIDO]

Ruan
ru4n

(usa Debian)

Enviado em 01/11/2016 - 19:34h

monique_silva7 escreveu:

Pessoal

Poderiam me ajudar na seguinte situação?

Imagine o seguinte;

VARIAVEL=$(ls /etc/passwd)

Acima ele vai listar;
nome1
nome2
nome3 assim por diante

Eu preciso que, a cada linha acessar e ter uma ação.Após tratar a primeira linha, seguir para a segunda linha, assim por diante. Utilizei o for, mas não obtive o objetivo desejado.

Obrigado desde já


Você precisa de uma ação para cada item listado?
*E esses itens seria o conteúdo do arquivo /etc/passwd?

* /etc/passwd é um arquivo, se a intenção é armazenar o conteúdo do arquivo em uma variável, use o cat ao invés do ls.

--
Linux Counter: #596371


5. Re: Acessar Lista Items - Shell Script [RESOLVIDO]

Monique
monique_silva7

(usa Red Hat)

Enviado em 01/11/2016 - 19:42h

Desculpe

Reformulando

VARIAVEL=$(cat /etc/passwd)


echo $VARIAVEL

Vai trazer a lista de usuários. Então para cada usuário eu tenho uma ação. Conforme mencionado anteriormente, eu utilizei o for, mas não cheguei ao meu objetivo.


Exemplo:
cam=$(find / -maxdepth 4 -name passwd)

for i in $(grep -i bash ${cam}) ; do

aqui para cada login com bash, eu envio para meu email

echo $i


done

Mas acontece que ele não acessa cada login para verificação, ele acessa a lista completa

Desde já agradeço



6. Re: Acessar Lista Items - Shell Script [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 01/11/2016 - 19:46h

monique_silva7 escreveu:

Pessoal

Poderiam me ajudar na seguinte situação?

Imagine o seguinte;

VARIAVEL=$(ls /etc/passwd)

Acima ele vai listar;
nome1
nome2
nome3 assim por diante

Eu preciso que, a cada linha acessar e ter uma ação.Após tratar a primeira linha, seguir para a segunda linha, assim por diante. Utilizei o for, mas não obtive o objetivo desejado.
Obrigado desde já

============================
Monique, boa noite!
VARIAVEL=$(ls /etc/passwd)
NÃO listara os nomes...., lista SOMENTE "/etc/passwd"
cat /etc/passwd, lista os usuários.
Faça:
while read line;do
COMANDOS . . .
done </etc/passwd


lynx --dump goo.gl/a9KeFc|sed -n '/^Educação/,/ajudou/p' 

att.:
marcelo oliver



7. Re: Acessar Lista Items - Shell Script [RESOLVIDO]

Ruan
ru4n

(usa Debian)

Enviado em 01/11/2016 - 19:47h

monique_silva7 escreveu:

Desculpe

Reformulando

VARIAVEL=$(cat /etc/passwd)


echo $VARIAVEL

Vai trazer a lista de usuários. Então para cada usuário eu tenho uma ação. Conforme mencionado anteriormente, eu utilizei o for, mas não cheguei ao meu objetivo.


Exemplo:
cam=$(find / -maxdepth 4 -name passwd)

for i in $(grep -i bash ${cam}) ; do

aqui para cada login com bash, eu envio para meu email

echo $i


done

Mas acontece que ele não acessa cada login para verificação, ele acessa a lista completa

Desde já agradeço


Nesse caso seria mais adequado ler linha por linha do arquivo passwd para pegar cada login (se é esse o objetivo). Você pode fazer isso com o while.

--
Linux Counter: #596371


8. Re: Acessar Lista Items - Shell Script

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 01/11/2016 - 20:03h

monique_silva7 escreveu:

Desculpe
Reformulando
VARIAVEL=$(cat /etc/passwd)
echo $VARIAVEL
Vai trazer a lista de usuários. Então para cada usuário eu tenho uma ação. Conforme mencionado anteriormente, eu utilizei o for, mas não cheguei ao meu objetivo.
Exemplo:
cam=$(find / -maxdepth 4 -name passwd)
for i in $(grep -i bash ${cam}) ; do

aqui para cada login com bash, eu envio para meu email
echo $i


done

Mas acontece que ele não acessa cada login para verificação, ele acessa a lista completa

Desde já agradeço


===========================================================
Faça:
while IFS=":" read -r C1 C2 C3 C4 C5 C6 C7;do
COMANDOS
.
.
.
done</etc/passwd
#Onde "C[1-7]", refere-se a "CADA CAMPO" de "CADA linha" de /etc/passwd

echo $VARIAVEL #MOstra Tudo em UMA LINHA
Faça:
echo "$VARIAVEL"

att
marcelo oliver



9. Re: Acessar Lista Items - Shell Script [RESOLVIDO]

Monique
monique_silva7

(usa Red Hat)

Enviado em 02/11/2016 - 17:20h

Marcelo, demais obrigado

Vou testar com while e retorno o resultado.

Muito obrigado


10. Re: Acessar Lista Items - Shell Script [RESOLVIDO]

Monique
monique_silva7

(usa Red Hat)

Enviado em 03/11/2016 - 18:06h

Marcelo,

Testei o seu exemplo, mas ele pega toda a lista. Obs: A minha lista, existe apenas um campo, então eu tentei assim;

Porém, no file.txt, não existe apenas um arquivo, eu criei uma variavel para procurar ttodos os .logs, joguei numa variável. exemplo.

Nesse caso eu não sei onde declarar a variável $var para acessar cada linha e processar os meus comandos.

Não sei se ficou claro para vc.


var=$(find / server.log)

while read line
do
echo -e "$linen"

done < file.txt


11. Re: Acessar Lista Items - Shell Script [RESOLVIDO]

Monique
monique_silva7

(usa Red Hat)

Enviado em 04/11/2016 - 09:35h

Marcelo

É isso que preciso, porém, o $var le apenas um arquivo "server.log", sabendo-se que abaixo do / existe "N" arquivos server.log, Nesse exemplo penso que ele só iria ler UM arquivo server.log.

Mas eu consegui realizando da seguinte forma;
OBS: Esse grep -m1 -o ao qual você me passou em outro post por exemplo, me foi de GRANDE valia. Muito obrigado

funcao_ver() {
arquivo=$(grep -m1 -o "ERROR" $(find /opt -maxdepth 4 -name server.log | awk '{print $1}'))
if [ -z $arquivo ] ; then

echo " "
else
echo "$arquivo"
fi
}


case "$1" in
funcao_ver)
funcao_ver
;;
*)

esac



12. Re: Acessar Lista Items - Shell Script [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 04/11/2016 - 12:12h

monique_silva7 escreveu:

Marcelo

É isso que preciso, porém, o $var le apenas um arquivo "server.log", sabendo-se que abaixo do / existe "N" arquivos server.log, Nesse exemplo penso que ele só iria ler UM arquivo server.log.

Mas eu consegui realizando da seguinte forma;
OBS: Esse grep -m1 -o ao qual você me passou em outro post por exemplo, me foi de GRANDE valia. Muito obrigado

funcao_ver() {
arquivo=$(grep -m1 -o "ERROR" $(find /opt -maxdepth 4 -name server.log | awk '{print $1}'))
if [ -z $arquivo ] ; then

echo " "
else
echo "$arquivo"
fi
}


case "$1" in
funcao_ver)
funcao_ver
;;
*)

esac

=============================================================
Monique, bom dia.
Para "pegar" todos arquivos "server.log" e colocar o conteúdo em um arquivo, faça:
find /opt -maxdepth 4 -name server.log -exec cat {} \; >> SERVER_LOG_GERAL.txt 

Para "pegar" somente um arquivo, faça:
find /opt -maxdepth 4 -name server.log | head -n1 

att.:
Marcelo Oliver






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts