Script BASH de Telnet - Alguns comandos estão ficando sem sessão de telnet

0

Estou executando um script bash para obter alguns dados de um cliente. Esse é o script:

host=2.218.71.67
port=23
login=xxx
passwd=xxx
DATE=date
cmd1=ps
cmd2=dumpmdm
cmd3=sh
cmd4='cat /proc/meminfo'
cmd5='cat /proc/slabinfo'
cmd6='cat /proc/modules'
cmd7=ifconfig
cmd8='brctl show'
cmd9='route -n'
cmd10='cat /proc/net/arp'
cmd11='cat /proc/net/nf_conntrack'
cmd12='wlanconfig ath0 list'
cmd13='wlanconfig ath0 list ap'
cmd14=top 

$DATE
(
 echo open ${host}
sleep 3
echo ${login}
sleep 1
echo ${passwd}
sleep 1
echo ${cmd1}
sleep 1
echo ${cmd2}
sleep 3
echo ${cmd3}
sleep 1
echo ${cmd4}
sleep 1
echo ${cmd5}
sleep 1
echo ${cmd6}
sleep 1
echo ${cmd7}
sleep 1
echo ${cmd8}
sleep 1
echo ${cmd9}
sleep 1
echo ${cmd10}
sleep 1
echo ${cmd11}
sleep 2
echo ${cmd12}
sleep 1
echo ${cmd13}
sleep 1
echo ${cmd14}
sleep 2
) | telnet
$DATE

Quando executo o script, parece que alguns comandos são executados fora da sessão de telnet

root@raspberrypi:/etc/my_scripts# ./telnet.sh
cat: /proc/net/nf_conntrack: No such file or directory
./telnet.sh: line 27: wlanconfig: command not found
./telnet.sh: line 28: wlanconfig: command not found
Wed Nov 25 12:57:20 GMT 2015
telnet> Trying 2.218.71.67...
Connected to 2.218.71.67.
Escape character is '^]'.
BCM96348 xDSL Router
Login: ^C

root@raspberrypi:/etc/my_scripts# bash -x telnet.sh
+ host=2.218.71.67
+ port=23
+ login=admin
+ passwd=Sky.2015
+ DATE=date
+ cmd1=ps
+ cmd2=dumpmdm
+ cmd3=sh
++ cat /proc/meminfo
+ cmd4='MemTotal:         445032 kB
MemFree:           25696 kB
MemAvailable:     328996 kB
Buffers:           16848 kB
Cached:           233056 kB
SwapCached:            4 kB
Active:           147000 kB
Inactive:         169248 kB
Active(anon):      21840 kB
Inactive(anon):    44848 kB
Active(file):     125160 kB
Inactive(file):   124400 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:        102396 kB
SwapFree:         102392 kB
Dirty:                32 kB
Writeback:             0 kB
AnonPages:         66356 kB
Mapped:             8048 kB
Shmem:               344 kB
Slab:              89504 kB
SReclaimable:      84460 kB
SUnreclaim:         5044 kB
KernelStack:         952 kB
PageTables:         1700 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:      324912 kB
Committed_AS:     517536 kB
VmallocTotal:     565248 kB
VmallocUsed:        1076 kB
VmallocChunk:     325400 kB
CmaTotal:           8192 kB
CmaFree:              24 kB'
++ cat /proc/slabinfo
+ cmd5='slabinfo - version: 2.1
# name            <active_objs> <num_objs> <objsize> <objperslab> <pagesperslab> : tunables <limit> <batchcount> <sharedfactor> : slabdata <active_slabs> <num_slabs> <sharedavail>
UDPLITEv6              0      0    768   10    2 : tunables    0    0    0 : slabdata      0      0      0
UDPv6                 10     10    7

Alguma sugestão?

    
por Federi 25.11.2015 / 13:58

2 respostas

0

Para responder à sua pergunta exata, os seguintes comandos usam backquotes:

cmd4='cat /proc/meminfo'
cmd5='cat /proc/slabinfo'
cmd6='cat /proc/modules'

Eles, portanto, definem cmd4 como o valor de qual cat /proc/meminfo imprime no momento em que a atribuição é feita, no host onde o script é correr, ao invés do que você telnet em. Você provavelmente quer isso em vez disso:

cmd4='cat /proc/meminfo'
cmd5='cat /proc/slabinfo'
cmd6='cat /proc/modules'
    
por 25.11.2015 / 14:56
1

Para trabalhos remotos, dê uma olhada no nc ou espere. nc para trabalhos mais simples, e espere por interações interativas mais complicadas. O nc é muito mais simples e você pode ter certeza de que não há comandos de controle enviados ao sistema remoto.

Do ponto de vista de segurança, também não é a melhor idéia de usar o telnet pela rede, muito menos pela Internet, pois o conteúdo viaja em texto puro e é facilmente capturado.

Eu recomendo strongmente que você use o expect para falar sobre o ssh.

Do artigo:

link

#!/usr/bin/expect -f
spawn ssh aspen
expect "password: "
send "PASSWORD\r"
expect "$ "
send "ps -ef |grep apache\r"
expect "$ "
send "exit\r"
    
por 25.11.2015 / 14:14

Tags