No seu caso spawn
é provavelmente um comando da espera linguagem de script que permite a automação de operações de programas interativos. Nesse caso, spawn
executa um comando externo a partir do script expect. Seu exemplo de script está faltando uma sequência shebang (primeira linha começando por #!
) indicando o interpretador expect
e, como tal, não será interpretado pela expectativa quando executado diretamente.
A autenticação de senha com sftp é limitada ao modo interativo. Para controlar o sftp no modo interativo, você pode usar, por exemplo, o seguinte script:
#!/usr/bin/env expect
set timeout 20 # max. 20 seconds waiting for the server response
set user username
set pass your-pass
set host the-host-address
set dir server-dir
spawn sftp $user@$host
expect assword:
send "$pass\r"
expect sftp>
send "cd $dir\r"
expect sftp>
send "mget *\r"
expect sftp>
send "exit\r"
expect eof
Outra possibilidade é usar a autenticação de chave pública que também é mais segura (consulte o procedimento ). Nesse caso, você pode simplesmente usar o sftp diretamente no modo batch:
#!/bin/sh
user=username
host=the-host-address
dir=server-dir
sftp -b - "$user@$host" <<+++EOF+++
cd "$dir"
mget *
exit
+++EOF+++