Odo interacts with remote data over ssh using the paramiko library.
SSH uris consist of the ssh:// protocol, a hostname, and a filename.
Simple and complex examples follow:
ssh://hostname:myfile.csv ssh://username@hostname:/path/to/myfile.csv
Additionally you may want to pass authentication information through keyword
arguments to the odo function as in the following example
>>> from odo import odo
>>> odo('localfile.csv', 'ssh://hostname:myfile.csv',
... username='user', key_filename='.ssh/id_rsa', port=22)We pass through authentication keyword arguments to the
paramiko.SSHClient.connect method. That method takes the following
options:
port=22 username=None password=None pkey=None key_filename=None timeout=None allow_agent=True look_for_keys=True compress=False sock=None
Most users usually interact with odo using URI strings.
Alternatively you can construct objects programmatically. SSH uses the
SSH type modifier
>>> from odo import SSH, CSV, JSON
>>> auth = {'user': 'ubuntu',
... 'host': 'hostname',
... 'key_filename': '.ssh/id_rsa'}
>>> data = SSH(CSV)('data/accounts.csv', **auth)
>>> data = SSH(JSONLines)('accounts.json', **auth)We're able to convert any text type (CSV, JSON, JSONLines, TextFile) to its
equivalent on the remote server (SSH(CSV), SSH(JSON), ...).:
SSH(*) <-> *
The network also allows conversions from other types, like a pandas
DataFrame to a remote CSV file, by routing through a temporary local csv
file.:
Foo <-> Temp(*) <-> SSH(*)