Issues with SFTP with python
-
drone m500
If I try to use scp command line (which use ssh) in ubuntu terminal to copy a file into the drone it is possible and does not give any error but while trying to use SFTP in python with paramiko or pysftp throws an error and does not allow me to send it through the own drones's wifi.Port 22 for SSH is open in drone. Turned off and back on tried. Hostname, password and usarname double-checked.
Any other idea of how can I copy/transfer a file from the PC to the drone? I want to automate this process
# create SSH client client = paramiko.SSHClient() client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # connect to the drone client.connect(hostname=hostname, username=username, password=password) print("SSH connection established") sftp = client.open_sftp() sftp.put(file_path,drone_path) sftp.close() time.sleep(2) print("File in drone") # close the SSH connection client.close() print("SSH connection closed")
-
I believe you first need to enable SFTP functionality in ssh server on the drone, for example https://www.pcwdld.com/setup-sftp-server-on-ubuntu seems to provide instructions (i did not verify the correctness of the instructions).
A better solution, in my opinion, would be to use
scp
from your python client. You can copy the ssh key directly to the drone, so you don't have to enter the password in the script. Then you could call thescp
command directly from Python using asystem
call or using Paramiko like in this example : https://stackoverflow.com/questions/250283/how-to-scp-in-python . Installing the ssh key on the drone will avoid storing plain text password on your PC.Is there a reason why you are trying SFTP instead of SCP?