1

I am working on bash and internally calling python Script for SFTP using PYSFTP. Previously when I used FTP there was a ftp_setdebug(1) option so that I can check the Transfer and goodbye messages. But for SFTP I am not able to find any such option. I found sftp -vv but how exactly does one need to use it? Is there any other method like FTP? I don't want to include any print statements in the script.

2 Answers 2

2

The API of pysftp mentions that you can add a log=True to the Connection to log to a temporary file. You could even log to a file of your choosing.

It doesn't mention though that if you specify a number, i.e. log=1, it will dump to stdout!

Example:

>>> import pysftp
>>> conn = pysftp.Connection('localhost', 'username', password='password123', log=1)
DEB [20150320-03:25:19.575] thr=1   paramiko.transport: starting thread (client mode): 0xe071400
INF [20150320-03:25:19.579] thr=1   paramiko.transport: Connected (version 2.0, client OpenSSH_6.4p1)
DEB [20150320-03:25:19.580] thr=1   paramiko.transport: kex algos:['ecdh-sha2-nistp256', 'ecdh-sha2-nistp384', 'ecdh-sha2-nistp521', 'diffie-hellman-group-exchange-sha256', 'diffie-hellman-group-exchange-sha1', 'diffie-hellman-group14-sha1', 'diffie-hellman-group1-sha1'] server key:['ssh-rsa', 'ssh-dss', 'ecdsa-sha2-nistp256'] client encrypt:['aes128-ctr', 'aes192-ctr', 'aes256-ctr', 'arcfour256', 'arcfour128', '[email protected]', '[email protected]', 'aes128-cbc', '3des-cbc', 'blowfish-cbc', 'cast128-cbc', 'aes192-cbc', 'aes256-cbc', 'arcfour', '[email protected]'] server encrypt:['aes128-ctr', 'aes192-ctr', 'aes256-ctr', 'arcfour256', 'arcfour128', '[email protected]', '[email protected]', 'aes128-cbc', '3des-cbc', 'blowfish-cbc', 'cast128-cbc', 'aes192-cbc', 'aes256-cbc', 'arcfour', '[email protected]'] client mac:['[email protected]', '[email protected]', '[email protected]', '[email protected]', '[email protected]', '[email protected]', '[email protected]', '[email protected]', '[email protected]', 'hmac-md5', 'hmac-sha1', '[email protected]', '[email protected]', 'hmac-sha2-256', 'hmac-sha2-512', 'hmac-ripemd160', '[email protected]', 'hmac-sha1-96', 'hmac-md5-96'] server mac:['[email protected]', '[email protected]', '[email protected]', '[email protected]', '[email protected]', '[email protected]', '[email protected]', '[email protected]', '[email protected]', 'hmac-md5', 'hmac-sha1', '[email protected]', '[email protected]', 'hmac-sha2-256', 'hmac-sha2-512', 'hmac-ripemd160', '[email protected]', 'hmac-sha1-96', 'hmac-md5-96'] client compress:['none', '[email protected]'] server compress:['none', '[email protected]'] client lang:[''] server lang:[''] kex follows?False
DEB [20150320-03:25:19.580] thr=1   paramiko.transport: Ciphers agreed: local=aes128-ctr, remote=aes128-ctr
DEB [20150320-03:25:19.580] thr=1   paramiko.transport: using kex diffie-hellman-group14-sha1; server key type ssh-rsa; cipher: local aes128-ctr, remote aes128-ctr; mac: local hmac-sha1, remote hmac-sha1; compression: local none, remote none
DEB [20150320-03:25:19.623] thr=1   paramiko.transport: Switch to new keys ...
DEB [20150320-03:25:19.624] thr=2   paramiko.transport: Attempting password auth...
DEB [20150320-03:25:19.663] thr=1   paramiko.transport: userauth is OK
INF [20150320-03:25:19.676] thr=1   paramiko.transport: Authentication (password) successful!
>>> conn.chdir('/tmp')
DEB [20150320-03:25:25.672] thr=2   paramiko.transport: [chan 0] Max packet in: 32768 bytes
DEB [20150320-03:25:25.672] thr=1   paramiko.transport: [chan 0] Max packet out: 32768 bytes
DEB [20150320-03:25:25.672] thr=1   paramiko.transport: Secsh channel 0 opened.
DEB [20150320-03:25:25.673] thr=1   paramiko.transport: [chan 0] Sesch channel 0 request ok
INF [20150320-03:25:25.676] thr=2   paramiko.transport.sftp: [chan 0] Opened sftp connection (server version 3)
DEB [20150320-03:25:25.676] thr=2   paramiko.transport.sftp: [chan 0] stat(b'/tmp')
DEB [20150320-03:25:25.677] thr=2   paramiko.transport.sftp: [chan 0] normalize(b'/tmp')
>>> conn.close()
INF [20150320-03:25:28.723] thr=2   paramiko.transport.sftp: [chan 0] sftp session closed.
DEB [20150320-03:25:28.723] thr=2   paramiko.transport: [chan 0] EOF sent (0)
DEB [20150320-03:25:28.724] thr=1   paramiko.transport: EOF in transport thread
>>>

Works the same if you run it non-interactively of course.

Sign up to request clarification or add additional context in comments.

Comments

0

I was confused by log=1 so to clarify:

Use the log attribute and declare a path:

import pysftp
conn = pysftp.Connection('localhost', 'usrname', password='pass', log="C:/Users/Fabian/Desktop/logfile.log")

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.