É possível ter um comando de uma linha em python para fazer um servidor ftp simples? Eu gostaria de poder fazer isso como uma maneira rápida e temporária de transferir arquivos para uma máquina Linux sem ter que instalar um servidor ftp. De preferência, uma maneira de usar bibliotecas Python integradas, então não há nada extra para instalar.
python
ftp
ftp-server
zio
fonte
fonte
-o Ciphers=arcfour
, ou sejasshfs $REMOTEHOST:$DIRECTORY $MOUNTPOINT -o Ciphers=arcfour
, copie, mova, renomeie e gerencie seus arquivos em seu sistema de arquivos. sshfs também está disponível para Mac OSX.Respostas:
Exemplo torcido obrigatório :
E provavelmente útil:
fonte
Verifique o pyftpdlib de Giampaolo Rodola. É um dos melhores servidores ftp existentes para python. É usado no chromium do Google (seu navegador) e no bazar (um sistema de controle de versão). É a implementação mais completa em Python para RFC-959 (também conhecida como: especificação de implementação de servidor FTP).
Na linha de comando:
Alternativamente, 'my_server.py':
Existem mais exemplos no site se você quiser algo mais complicado.
Para obter uma lista de opções de linha de comando:
Observe, se você deseja substituir ou usar uma porta ftp padrão, você precisará de privilégios de administrador (por exemplo, sudo).
fonte
>>> from pyftpdlib import ftpserver
:pyftpdlib\ftpserver.py:54: DeprecationWarning: pyftpdlib.ftpserver module is deprecated
Por que você não usa um servidor HTTP de uma linha ?
servirá o conteúdo do diretório de trabalho atual sobre HTTP na porta 8000.
Se você usa Python 3, deve escrever
Consulte os documentos do módulo SimpleHTTPServer para 2.x e os documentos do http.server para 3.x.
A propósito, em ambos os casos o parâmetro port é opcional.
fonte
Todas as respostas acima estavam assumindo que sua distribuição Python teria algumas bibliotecas de terceiros para atingir o objetivo "one liner python ftpd", mas esse não é o caso do que @zio estava perguntando. Além disso, SimpleHTTPServer envolve navegador da web para baixar arquivos, não é rápido o suficiente.
Python não pode fazer ftpd por si só, mas você pode usar netcat ,
nc
:nc
é basicamente uma ferramenta incorporada de qualquer sistema semelhante ao UNIX (mesmo sistemas incorporados), por isso é perfeito para " uma forma rápida e temporária de transferir arquivos ".Etapa 1, no lado do receptor, execute:
isso escutará na porta 12345, esperando pelos dados.
Etapa 2, no lado do remetente:
Você também pode colocar
pv
no meio para monitorar o andamento da transferência:Depois que a transferência for concluída, ambos os lados do
nc
serão encerrados automaticamente e o trabalho estará concluído.fonte
tar
enc
disponíveis. E se for o Windows?Para usuários pyftpdlib. Eu encontrei isso no site pyftpdlib. Isso cria um ftp anônimo com acesso de gravação ao seu sistema de arquivos, portanto, use com o devido cuidado. Mais recursos estão disponíveis sob o capô para melhor segurança, então vá ver:
Pode ser útil para aqueles que tentaram usar o método obsoleto acima.
sudo python -m pyftpdlib.ftpserver
fonte
sudo
a instalação em um venvpip3 install pyftpdlib
epython3 -m pyftpdlib -w
. Caiu como uma luva para mim.Instalar:
Então o código:
Aprofunde-se:
http://twistedmatrix.com/documents/current/core/examples/
fonte
A solução mais simples será usar a biblioteca pyftpd. Esta biblioteca permite que você gire o servidor FTP Python em uma linha. Ele não vem instalado por padrão, mas podemos instalá-lo usando o comando apt simples
agora, a partir do diretório que você deseja servir, basta executar o módulo pythod
fonte
Eu não sei sobre um servidor FTP de uma linha, mas se você fizer
Ele executará um servidor HTTP em 0.0.0.0:8000, servindo arquivos fora do diretório atual. Se você está procurando uma maneira de obter rapidamente os arquivos de uma máquina Linux com um navegador da web, não há como superar.
fonte
fonte