Qual é a maneira mais pitônica de scp um arquivo em Python? A única rota que eu conheço é
os.system('scp "%s" "%s:%s"' % (localfile, remotehost, remotefile) )
que é um hack e que não funciona fora de sistemas semelhantes ao Linux, e que precisa de ajuda do módulo Pexpect para evitar solicitações de senha, a menos que você já tenha o SSH sem senha configurado para o host remoto.
Estou ciente do Twisted conch
, mas prefiro evitar a implementação do scp por meio de módulos ssh de baixo nível.
Estou ciente de paramiko
um módulo Python que suporta SSH e SFTP; mas não suporta SCP.
Antecedentes: estou me conectando a um roteador que não suporta SFTP, mas suporta SSH / SCP, portanto, o SFTP não é uma opção.
Edição : Esta é uma duplicata de como copiar um arquivo para um servidor remoto em Python usando SCP ou SSH? . No entanto , essa pergunta não fornece uma resposta específica do scp que lida com as chaves do Python. Estou esperando uma maneira de executar o código como
import scp
client = scp.Client(host=host, user=user, keyfile=keyfile)
# or
client = scp.Client(host=host, user=user)
client.use_system_keys()
# or
client = scp.Client(host=host, user=user, password=password)
# and then
client.transfer('/etc/local/filename', '/etc/remote/filename')
scp
acaba chamando ascp
linha de comando que funciona apenas no * nix.