Gravar retorno em arquivo

1. Gravar retorno em arquivo

Rafael
Scarpetah

(usa Ubuntu)

Enviado em 30/07/2017 - 12:16h

Preciso de ajuda para terminar um script:

Tenho vários servidores terminais que são autenticados por ssh e preciso realizar uma coleta de informações em todos eles;
Ja tenho um arquivo Bash e um expect de conexao;

minha duvida é como pegar este retorno que ira sair na tela e jogar em documentos separados com o nome do Host

CMTS="./acessar.txt" ( Este Doc tem os seguintes dados em lista sequencial
ip.ip.ip.ip,NOME DO HOST #,LOGIN,SENHA,MODELO,VERSAO SSH

# VARIAVEIS para funcionamento do script
CMTS="./acessar.txt"
CONECTA="./loga_cmts.exp"

# Testa se o arquivo acessar.txt existe
if [ ! -e ${CMTS} ]
then
echo "Arquivo 'acessar.txt' não encontrado."
echo "Arquivo 'acessar.txt' não encontrado."
exit 1
fi

# Ler o arquivo ${CMTS} e processar cada linha que contém informações

# acerca da conexão

cat ${CMTS} | while read LINHA

do
# Joga os campos em variáveis
HOST=$(echo ${LINHA} | cut -d',' -f1)
NAMEHOST=$(echo ${LINHA} | cut -d',' -f2)
USERNORMAL=$(echo ${LINHA} | cut -d',' -f3)
USERPASSWD=$(echo ${LINHA} | cut -d',' -f4)
MODELOCMTS=$(echo ${LINHA} | cut -d',' -f5)
VERSSH=$(echo ${LINHA} | cut -d',' -f6)

# Teste sobre repasse das variáveis
#echo ${HOST}
#echo ${NAMEHOST}
#echo ${USERNORMAL}
#echo ${USERPASSWD}
#echo ${USERPASSWD}
#echo ${VERSSH}

# Chama o arquivo expect com os parâmetros coletados
# Testa se o expect existe

if [ ! -e ${CONECTA} ]
then
echo "Arquivo com script expect ${CONECTA} não encontrado"
exit 1
else

# Garantir que o arquivo tenha permissão de execução
# chmod 755 ${CONECTA}

# imprimir na tela o comando que esta sendo executado

#echo "${CONECTA} ${HOST} ${NAMEHOST} ${USERNORMAL} ${USERPASSWD} ${MODELOCMTS} ${VERSSH}"

# executar o script expect com os parametros

${CONECTA} ${HOST} ${NAMEHOST} ${USERNORMAL} ${USERPASSWD} ${MODELOCMTS} ${VERSSH}

fi


done


###############################################################################
## DECLARACAO DE VARIAVEIS
#
set ip [lindex $argv 0]
set nome [lindex $argv 1]
set login [lindex $argv 2]
set senha [lindex $argv 3]
set modelo [lindex $argv 4]
set vssh [lindex $argv 5]
set timeout 5


###
# INICIO DO SISTEMA
###

# NIVEL DE RETORNO DE SAIDA

log_user 3


###############################################################################
## Entrada de Usuario ##
###############################################################################


if { $vssh == "1" } {
spawn /usr/bin/ssh -1 -c des -oStrictHostKeyChecking=no ${ip} -l ${login}
} else {
spawn /usr/bin/ssh -oStrictHostKeyChecking=no ${ip} -l ${login}
}


###############################################################################



# COMANDOS DE ACESSO
expect "sword:"
send "$senha\r"

if { $modelo == "C4" } {

# COMANDOS DE AJUSTE E COLETA
expect "$nome#"
send "show cable modem | include Operational 2.0\r"

} elseif { $modelo == "E6000" } {

# COMANDOS DE AJUSTE E COLETA
expect "$nome#"
send "terminal length 0\r"

expect "$nome#"
send "show cable modem | include Operational 2.0 | exclude 770 | exclude 11M | exclude 16M | exclude 566 | exclude 1100 | exclude 2200\r"

}

# FECHAR CONEXAO
expect "$nome#"
send "logout\r"

# FINALIZA
expect eof



  


2. Re: Gravar retorno em arquivo

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 30/07/2017 - 12:59h

Boa tarde.
Qual saída quer gravar em um arquivo?

att.:
marcelo oliver


3. Re: Gravar retorno em arquivo

Rafael
Scarpetah

(usa Ubuntu)

Enviado em 30/07/2017 - 16:26h

a saida de tela.

o equipamento que eu acesso retorna algumas informaçoes de cables... isso faz com que abra e feche cada equipamento via ssh dispare o comando e deixando em tela, consegui deixar o 1 deles com a linha arquivo > $variavel.. esta variavel tem o nome do host,
if [ ! -e ${NAMEHOST} ]
then
echo "ARQUIVO ${NAMEHOST} CRIADO"
${EXECUTOR} >> ${NAMEHOST}

else

echo "Arquivo ${NAMEHOST} JA EXISTE "
exit 1
fi
isso esta fora do FOR, se eu colocar dentro ele cai em um loop
o script esta gravando o texto, mais apenas do primeiro



4. Re: Gravar retorno em arquivo

José da Silva
zenull

(usa Outra)

Enviado em 30/07/2017 - 17:44h

Sem entrar no mérito do seu código, poderia fazer uma gambiarra, redirecionando e gravando a saída no arquivo com >> e posteriormente exibir o arquivo na tela. Por exemplo:

seq 1 10 | while read i ; do echo $i >> teste ; sleep 1 ; done | watch -n 1 tail teste






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts