Solaris equivalente do comando Cygwin ou Windows “ftp -s: batch_cmd_file”

0

Estou usando um script FTP que é executado em Cygwin e Windows cmd e que usa a opção de linha de comando -s do ftp para ler e executar comandos de um arquivo em lotes:

ftp -i -s:/path/ftp.params 

O arquivo em lote ftp.param é gerado por outro trabalho e contém comandos FTP padrão, como:

OPEN my_address
my_login
my_password
GET file_a
GET file_b
BYE

Agora eu tenho que usar este script ftp no Solaris, mas de acordo com o seu página de manual do ftp , a versão do Solaris do ftp não aceita a opção de linha de comando -s para executar um arquivo de lote.

Eu pesquisei naquele documento e também na Web, mas não encontrei o caminho a seguir. Você tem alguma sugestão?

    
por Shlublu 01.09.2011 / 15:40

2 respostas

1

Ok, eu encontrei uma solução que funciona.

Basicamente, em vez de abrir o site ftp remoto a partir do arquivo em lote, eu tenho que abri-lo a partir do comando ftp e usar o shell para alimentar ftp com o arquivo em lotes. Como eu estou sempre usando o mesmo endereço de FTP, eu posso viver com isso.

A única desvantagem real é que isso requer modificar um pouco o arquivo de lote, portanto, o trabalho que o gera.

  • A parte do shell consiste em executar o comando ftp da seguinte maneira:

    ftp -i -n my_address < /path/ftp.params
    
  • E o arquivo em lote deve ser modificado dessa maneira:

    USER my_login my_password 
    GET file_a
    GET file_b
    BYE
    
por 01.09.2011 / 16:49
2

Essa opção parece estar disponível apenas para o cliente ftp do windows. Para um resultado semelhante, você pode instalar um cliente FTP que você pode criar scripts. O NcFTP é bem amigável com isso. O Wget também funcionaria.

Com o ncftp, você teria um arquivo com sua lista "get" e um com suas credenciais de login se não quiser inseri-las sempre. (Esteja ciente dos riscos de segurança envolvidos)

A partir da linha de comando usando o bash, você pode inserir o seguinte em um script ou apenas executar:

while read line
do
    ncftpget -f <FILEWITHCREDENTIALS> $line -bb
done < <FILEWITHLIST>
ncftpbatch -d

Seu arquivo de credenciais estará na forma de

host <my_address>
user <my_login>
pass <my_password>

-bb envia cada arquivo como um trabalho em lote aguardando para ser executado. Chamar ncftpbatch executará o trabalho. Isso deve limitá-lo a uma conexão.

Outras opções seriam -b (apenas inicie o trabalho em segundo plano imediatamente) e descartando a chamada ncftpbatch e usando as opções user / host / password no comando em vez de -f.

Você pode encontrar o ncftp aqui e aqui se ainda não estiver instalado.

Para wget, você pode usar um script de looping similar e substituir a chamada ncftpget por

wget ftp://user:[email protected]/path/$line

novamente, se ainda não estiver instalado, você pode obter wget aqui ou, com um dos programas, procurar o gerenciador de pacotes apropriado para sua versão do Solaris

Você pode encontrar mais informações sobre os programas com as man pages ou através de uma rápida pesquisa na web.

    
por 01.09.2011 / 17:22