shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] netcat/telnet - conexão persistente


From: Carlos Eduardo G. Carvalho (Cartola)
Subject: Re: [shell-script] netcat/telnet - conexão persistente
Date: Fri, 13 Feb 2015 08:42:47 -0200

Uso o expect com certa frequência, se quiser te dou uma mão. Pra começar segue um exemplo que usa ssh. Basta trocar no "spawn" pelo comando que quer lançar, que lançará a sessão com a qual quer interagir. Depois é mais uma sequência de envio (send) e resposta (expect). Os '$' não escapados são variáveis do shell. Esse expect tá dentro de um script em shell que faz outras coisas. Você poderia fazer direto um script em expect se quisesse. Em geral faço num shell.

/usr/bin/expect << EOF
set timeout 15
spawn ssh $chave@$maquina
match_max 100000
expect {
        "word:" {send -- "$senha\r"}
        "enha:" {send -- "$senha\r"}
        "yes/no" {
                        send -- "yes\r"
                        expect {
                                "word:" {send -- "$senha\r"}
                                "enha:" {send -- "$senha\r"}
                        }
        }
}
expect "$ "
send -- "cd /tmp\r"
expect "$ "
send -- "mkdir spacewalk\r"
expect "$ "
send -- "mv -f migracao-16-22-para_expect.sh register_swalk-migra22.conf register_swalk-migra22.sh systemgroup-addSystems-migra22.py $tmpdir\r"
expect "$ "
send -- "cd $tmpdir\r"
expect "$ "
send -- "sudo ./migracao-16-22-para_expect.sh > ${prefixlog}-${maquina}.txt 2>&1\r"
expect {
        "assword" {send -- "$senha\r"}
        "enha" {send -- "$senha\r"}
}
expect "$ "
send -- "exit\r"
expect eof
EOF

Abs,

Em 13 de fevereiro de 2015 00:13, Ronaldo Ferreira de Lima address@hidden [shell-script] <address@hidden> escreveu:
 

On Fri, Feb 13, 2015 at 05:36:16AM +0400, Fernando Mercês address@hidden [shell-script] wrote:
> a não ser que eu abra mão de todo o meu escript em bash e tente fazer
> algo usando a linguagem do próprio expect
O expect usa a linguagem Tcl[1].

>, que não sei se é turing complete.
Tcl se enquadra na definição de Turing completeness[2]. E por
curiosidade, o sed[3] também é uma linguagem Turing complete.

> Eu posso alterar para a minha função send_command usar o expect, mas
> como manter a conexão persistente nele a patir do meu script?
Nunca usei, mas é possível trabalhar diretamente com sockets em Tcl.

[1] https://en.wikipedia.org/wiki/Tcl
[2] http://en.wikipedia.org/wiki/Turing_completeness
[3] https://en.wikipedia.org/wiki/Sed

[]'s
--
"Não manejo bem as palavras
Mas manipulo bem as strings."
------------------------------
http://tecnoveneno.blogspot.com



reply via email to

[Prev in Thread] Current Thread [Next in Thread]