Script de shell para comandos telnet e executar
Questão
Eu fiz um script de shell que pode telnet automaticamente e executar comandos na outra máquina e terminar a sessão de telnet sem qualquer interação do usuário; o usuário apenas executa o script ou o chama de outro script.
Mas você precisa instalar os pacotes EXPECT e TCL no seu sistema Unix.
O script contém as seguintes instruções:
#! / usr / local / bin / expect -f #### / usr / local / bin / expect é o diretório onde o expect foi instalado
log_user 0 #### este comando é usado para esconder a conversa entre o script e a outra máquina
set address [lindex $ argv 0] ### atribui o primeiro parâmetro passado ao chamar o script para $ address
set username [lindex $ argv 1] ### atribui o segundo parâmetro passado enquanto chama o script para $ username
set password [lindex $ argv 2] ### atribui o 3º parâmetro passado enquanto chama o script para $ password
spawn telnet $ {address} ### inicia a sessão de telnet para maquina com IP = $ address
### iniciar conversa com a máquina:
esperar "login:"
send - "$ {username} \ r"
esperar "Senha:"
send - "$ {password} \ r"
esperar "$"
send - "#! / bin / ksh \ r" ### declara o shell a ser usado (opcional)
esperar "$"
send - "### digite qualquer comando que você queira executar"
esperar "$"
send - "exit \ r" ### encerra a sessão do telnet e sai do script
Para executar esse script, digitei:
$ expect_script "endereço" "nome de usuário" "senha" ### o nome do script é "expect_script"
Mas antes de chamar o script expect, você deve tornar o script expect executável, e isso pode ser feito digitando:
$ chmod + x expect_script
Solução
Tente isto:
#! / usr / local / bin / esperar gerar telnet esperar "login:" enviar "\ n" esperar "Senha:" enviar "\ n" enviar "bash \ n" enviar "cd / opt \ n" enviar "ls - ltr \ n "? (se você não está dando \ n, então ele irá aguardar sua resposta ou você terá que digitar manualmente). interagir
Como executar o comando "esperar" esperar -f
Ex: espere -f .expect
Nota
Obrigado ao ZooZoo por essa dica no fórum.