script bash - spawn, send, interact - comandos não encontrados erro

2

Eu tenho o shell script, estou tentando remover o prompt de senha do comando scp (conforme fornecido em link ) e é isso que eu tenho até agora: -

#!/usr/bin/expect
spawn scp $DESTINATION_PATH/exam.tar $SSH_CREDENTIALS':/'$PROJECT_INSTALLATION_PATH
expect "password:"
send $sshPassword"\n";
interact

Ao executar o script, estou recebendo erros

spawn: command not found
send: command not found
interact: command not found

Eu também estava recebendo o erro expect: command not found , depois percebi que o caminho para expect não estava correto e expect não estava instalado. Então, eu fiz yum install expect , corrigi o caminho e o erro desapareceu. Mas não é capaz de remover os outros 3 erros ainda.

    
por Sandeepan Nath 05.01.2011 / 11:38

2 respostas

10

Você está invocando o script mal.

Se você disser:

bash scriptname

então o #! A linha é ignorada e o bash pega o arquivo como se fosse uma instrução bash. Mas isso não é um script bash, é um script esperado.

O #! a linha só é interpretada pelo kernel, quando recebe o script como um comando para executar por si próprio.

Forneça a permissão de execução do script, para que você possa invocar apenas ./scriptname ou use o comando expect para iniciar o script.

    
por 05.01.2011 / 12:39
4
  1. verifique se você tem a ferramenta "espera" antes, se não, faça

    # apt-get install expect

  2. crie o arquivo de script com o conteúdo a seguir. (# vi / root / scriptfile)

    spawn scp /path_from/file_name user_name_here@to_host_name:/path_to

    expect "password:"

    send put_password_here\n;

    interact

  3. execute o arquivo de script com a ferramenta "esperar"

    # expect /root/scriptfile

por 21.03.2014 / 07:28