Tentando escrever um script simples para o sshum servidor e, em seguida, executar uma cauda para logs de erro, mas estou recebendo um erro dizendo "spawn comando não encontrado" .Eu estou usando esperar em vez de bash e ter verificado / usr / bin e está lá. Script é:
#!/usr/bin/expect -f
echo "starting tail"
echo "password for the box?"
read -s theBoxPassword
spawn ssh root@10.0.0.10
expect "root@10.0.0.10"s password: "
send $theBoxPasswordr
Não sei exatamente qual é o problema. Eu olhei para um monte de exemplos online e parece que eu tenho a coisa certa e a sintaxe correta. Alguma idéia?
Respostas:
0 para resposta № 1Você parece estar faltando shell (/bin/sh
) sintaxe com expect
sintaxe. Ambos echo
e read
são comandos shell. Espera executa entrada e saída usando comandos como expect_user
e send_user
, como demonstrado em esta resposta.
Se você quer misturar a sintaxe do shell e esperar, você pode fazer algo assim:
#!/bin/sh
echo "starting tail"
echo "password for the box?"
read -s theBoxPassword
expect <<EOF
spawn ssh root@10.0.0.10
expect "root@10.0.0.10"s password: "
send "$theBoxPasswordr"
EOF
Isso usa o shell para produzir seu prompt eleia a senha e passe um script para esperar no stdin. O shell executará a substituição de variáveis no script antes de ser passado para esperar.