Existe uma maneira de escrever um script para fazer login no ftp para que eu não precise digitar as coisas repetidas vezes?

7

Recentemente, trabalhei bastante com um sistema remoto via conexão ftp, já que o tempo da sessão é tão curto que preciso fazer login novamente com bastante frequência quando termino meu trabalho em minha máquina local, então preciso de uma maneira de criar um comando / shell script personalizado para acessar o servidor ftp com apenas uma palavra, mas a questão é como fazê-lo.

por exemplo,

~$ ftp domainname.com
 ...
 Name (domainname.com): MyName
 ...
 Password: xxxx
 ...
 ftp>
    
por Rn2dy 12.09.2011 / 19:16

3 respostas

9

Geralmente, os clientes da linha de comando ftp aceitam o arquivo de configuração ~/.netrc , no qual você pode configurar credenciais para sistemas remotos, por exemplo:

machine legacy.system.example.org
login juser
password keins

Quando você usa ftp legacy.system.example.org , não precisa mais redigitar essas informações.

Se você precisar fazer mais automação, poderá criar scripts do ftp usando comandos de piping, por exemplo:

$ cat pushit.sh
# complex logic to set
# EXAMPLE_FILE=
ftp <<EOF
prompt
mput $EXAMPLE_FILE
quit
EOF

Claro, se o sistema não suporta ssh , ele provavelmente não suporta ftps - mas você pode testá-lo (por exemplo, via ftp-ssl ) se você precisar proteger sua conexão.

LFTP

Uma alternativa a um dos comandos simples ftp é usar lftp , pois ele oferece vários recursos para login automatizado e execução de comandos.

Exemplo:

$ lftp -e 'source ~/login.lftp'
$ cat login.lftp
open sftp://juser:[email protected]
cd /path/to/favorite/dir

Observe que este exemplo mostra a autenticação automática de senha para um servidor SFTP que não é suportado pelo padrão OpenSSH sftp client .

A opção -e instrui o lftp a executar os comandos na inicialização e permanecer interativo.

É claro que esse tipo de script também gera outros scripts e também se desconecta automaticamente do servidor.

Por outro lado, com -c ou -f lftp sai diretamente após a execução dos comandos especificados como argumento ou lidos a partir do arquivo especificado.

    
por 12.09.2011 / 22:13
3

Se você quiser fazer o roteiro da coisa toda:

#!/bin/sh
HOST='ftp.example.com'
USER='yourid'
PASSWD='yourpw'
FILE='file.txt'

ftp -n $HOST <<END_SCRIPT
quote USER $USER
quote PASS $PASSWD
put $FILE
quit
END_SCRIPT
exit 0

Veja também esta página da web .

    
por 12.09.2011 / 21:58
2

Se você deseja fazer login automaticamente, use um arquivo .netrc . Eu não recomendo isso como você teria que armazenar seu nome de usuário e senha em texto simples que é inseguro. Se você pode usar o ssh, então eu recomendo usar isso com chaves de autenticação para logar você automaticamente.

Se você não pode usar um método seguro como o ssh com chaves, você pode configurar suas informações de ftp seguindo este guia .

    
por 12.09.2011 / 19:45

Tags