Script para pegar resultado de um comando [RESOLVIDO]

1. Script para pegar resultado de um comando [RESOLVIDO]

Bruno Augusto Lobo Soares
brunols

(usa Slackware)

Enviado em 30/03/2017 - 11:58h

Pessoal bom dia,

Estou com uma dificuldade e não to conseguindo avançar.
Vou colocar minha dúvida:

Eu tenho que pegar o resultado desse comando:

grep PasswordAuthentication /etc/ssh/sshd_config

Resultado no servidor:
# PasswordAuthentication no
PasswordAuthentication yes
# PasswordAuthentication, PermitEmptyPasswords, and

Eu preciso saber em uma lista de 100 servidores os que possuem esse parâmetro abaixo:

PasswordAuthentication yes

Então eu fiz desta forma:

#!/bin/bash
nome=`/bin/hostname`
data=`/bin/date +%d-%m-%Y_%H%M`
parametro=`grep PasswordAuthentication /etc/ssh/sshd_config $valor`
valor=`awk 'END{print $2}'`
if [-e $valor="yes"]
echo -e "Implementar restrição de autenticação SSH via token" >>evidencia.${nome}.${data}.txt
grep RSAAuthentication /etc/ssh/sshd_config >>evidencia.${nome}.${data}.txt
grep PubkeyAuthentication /etc/ssh/sshd_config >>evidencia.${nome}.${data}.txt
grep PasswordAuthentication /etc/ssh/sshd_config >>evidencia.${nome}.${data}.txt

else
echo 'Configuração não encontrada'
fi

Porém está dando erro e ele para na parte do awk (segue o debug)

# bash -x ../token.sh
++ /bin/hostname
+ nome=proprd01
++ /bin/date +%d-%m-%Y_%H%M
+ data=30-03-2017_1311
++ grep PasswordAuthentication /etc/ssh/sshd_config
+ parametro='# PasswordAuthentication no
PasswordAuthentication yes
# PasswordAuthentication, PermitEmptyPasswords, and '
++ awk 'END{print $2}'


Alguem poderia me ajudar ?



  


2. Re: Script para pegar resultado de um comando [RESOLVIDO]

Takahashi
signout

(usa Slackware)

Enviado em 30/03/2017 - 16:49h

Boas
Algumas considerações
1 - Voce esta colocando o resultado na variavel parametro e depois fazendo um awk nessa variavel, o que pode ser simplificado

parametro=`grep PasswordAuthentication /etc/ssh/sshd_config | grep -v "^#"| awk '{print $2}'

2 - O seu if esta fazendo comparação e ao mesmo tempo vendo se o arquivo existe (-e), e a sintaxe esta incorreta

if [-e $valor="yes"]

O correto seria
if [ $valor = "yes" ];then (é necessário que tenha espaço entre os parametros e faltou o then)

3 - Uma outra coisa é, se voce usar somente grep PasswordAuthentication /etc/ssh/sshd_config, ele retornara as linhas abaixo, a menos que tenha removido todos os comentarios do arquivo.

# To disable tunneled clear text passwords, change PasswordAuthentication to no.
PasswordAuthentication yes
# passwords even when PasswordAuthentication is set to no. This is dependent

4 - Fiz algumas alterações no seu script e ficou assim

#!/bin/bash
nome=`/bin/hostname`
data=`/bin/date +%d-%m-%Y_%H%M`
parametro=`grep PasswordAuthentication /etc/ssh/sshd_config | grep -v "^#"| awk '{print $2}'`
if [ $parametro = "yes" ];then
echo -e "Implementar restrição de autenticação SSH via token" >>evidencia.${nome}.${data}.txt
grep RSAAuthentication /etc/ssh/sshd_config >>evidencia.${nome}.${data}.txt
grep PubkeyAuthentication /etc/ssh/sshd_config >>evidencia.${nome}.${data}.txt
grep PasswordAuthentication /etc/ssh/sshd_config >>evidencia.${nome}.${data}.txt
else
echo 'Configuração não encontrada'
fi

Algumas explicações

parametro=`grep PasswordAuthentication /etc/ssh/sshd_config | grep -v "^#"| awk '{print $2}'`

grep PasswordAuthentication /etc/ssh/sshd_config --> procura o texto
grep -v "^#" --> suprime a saida de linhas que comecem com # (comentario)
awk '{print $2}' --> pega somente o segundo campo (yes/no)




Espero que ajude.
[]s


3. Re: Script para pegar resultado de um comando [RESOLVIDO]

Bruno Augusto Lobo Soares
brunols

(usa Slackware)

Enviado em 30/03/2017 - 17:00h

Muito obrigado... Ajudou e muito...valeu !!!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts