Script BASH Telnet - saída não salva

3

Estou executando um script bash de telnet muito simples e funciona.

#!/bin/sh
host=90.205.177.129
port=23
login=admin
passwd=Sky.2015
#cmd1=sh
cmd2=meminfo > /tmp/top.txt

echo open ${host} ${port}
sleep 5
echo ${login}
sleep 5
echo ${passwd}
sleep 10
#echo ${cmd1}
#sleep 5
echo ${cmd2}
sleep 20
echo exit

No entanto, a saída de meminfo não é copiada no arquivo "top.txt". O arquivo é criado

root@raspberrypi:/etc/my_scripts# ls -l /tmp/
total 12
-rw-r--r-- 1 root root 784 Oct 13 14:32 1wall_test1_S.txt
-rw-r--r-- 1 root root 216 Oct 14 11:28 test_l.txt
-rw-r--r-- 1 root root 216 Oct 14 11:37 test_s.txt
-rwxrwxrwx 1 root root   0 Oct 15 09:35 top.txt
root@raspberrypi:/etc/my_scripts#

Alguma sugestão?

    
por Federi 15.10.2015 / 11:47

3 respostas

4

o problema está em

cmd2=meminfo > /tmp/top.txt

isto realmente configura a variável cmd2 para meminfo e avalia o redirecionamento. você deve citar isso.

cmd2='meminfo > /tmp/top.txt'

edit: isso cria o arquivo no destino. De acordo com sua própria resposta, você queria criá-lo no sistema que executa o script (não indicado na sua pergunta original). a causa ainda é válida, mas a solução não é.

    
por 15.10.2015 / 12:24
2

Use alias cmd2="meminfo > /tmp/top.txt" para criar um comando de alias, em vez de usar uma variável de ambiente chamada cmd2 .

    
por 15.10.2015 / 11:57
2

Encontrei a solução sozinho:)

./telnet.sh | telnet > /tmp/top.txt 

Desta forma eu redireciono o comando para um arquivo de saída. No entanto, tenho que executar o mesmo script várias vezes e não quero substituir o mesmo arquivo, mas criaria um arquivo incremental (a boa ideia seria renomeada com o comando DATE).

para usar uma opção de data

./telnet.sh | telnet > /tmp/top-$(date +%Y%m%d-%T).txt
    
por 15.10.2015 / 12:20

Tags