Qual é o significado de “spawn” comandos shell do Linux? (Centos6)

6

Eu preciso saber como configurar um cron job que se conecte automaticamente ao servidor remoto e mude o diretório e obtenha todos os arquivos desse diretório para o local

eu acho que tenho que usar o sftp, mas eu vi alguns comandos chamados "spawn" em alguns scripts de shell e estou confuso o que isso vai fazer e para que serve?

spawn  sftp user@ipaddress
cd xxx/inbox
mget *

isso funcionará no contexto do diretório remoto de download?

    
por user1179459 17.10.2012 / 01:09

1 resposta

5

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+++
    
por 25.06.2013 / 20:31