{"action":"created","issue":{"url":"https://api.github.com/repos/robotframework/SSHLibrary/issues/134","labels_url":"https://api.github.com/repos/robotframework/SSHLibrary/issues/134/labels{/name}","comments_url":"https://api.github.com/repos/robotframework/SSHLibrary/issues/134/comments","events_url":"https://api.github.com/repos/robotframework/SSHLibrary/issues/134/events","html_url":"https://github.com/robotframework/SSHLibrary/issues/134","id":62762023,"number":134,"title":"put file fails with cygwin hosts","user":{"login":"yahman72","id":8724383,"avatar_url":"https://avatars.githubusercontent.com/u/8724383?v=3","gravatar_id":"","url":"https://api.github.com/users/yahman72","html_url":"https://github.com/yahman72","followers_url":"https://api.github.com/users/yahman72/followers","following_url":"https://api.github.com/users/yahman72/following{/other_user}","gists_url":"https://api.github.com/users/yahman72/gists{/gist_id}","starred_url":"https://api.github.com/users/yahman72/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yahman72/subscriptions","organizations_url":"https://api.github.com/users/yahman72/orgs","repos_url":"https://api.github.com/users/yahman72/repos","events_url":"https://api.github.com/users/yahman72/events{/privacy}","received_events_url":"https://api.github.com/users/yahman72/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"milestone":null,"comments":8,"created_at":"2015-03-18T18:05:36Z","updated_at":"2015-07-09T12:00:13Z","closed_at":"2015-07-09T12:00:13Z","body":"I can't get the `put file` working at all with SSHLibrary 2.1.1. \r\nThe ssh debug log shows that it fails when statting for the destination directory i.e. for '/tmp/' `stat //tmp` and `mkdir //tmp` are executed and fail.\r\n\r\n`stat //tmp` doesn't work because the target host is running cygwin sshd, on \"pure\" linux/unix box `stat //tmp` works fine. \r\n \r\nTest Cases\r\n<pre>\r\nPutFile001\r\n    Put File       c:\\\\foo\\\\bar.txt   ${/}tmp${/}\r\nPutFile002\r\n    Put File       c:\\\\foo\\\\bar.txt   ${/}tmp\r\nPutFile003\r\n    Put File       c:\\\\foo\\\\bar.txt   ${/}tmp${/}bar.txt\r\nPutFile001a\r\n    Put File       \\\\foo\\\\bar.txt   ${/}tmp${/}\r\nPutFile002a\r\n    Put File       \\\\foo\\\\bar.txt   ${/}tmp\r\nPutFile003a\r\n    Put File       \\\\foo\\\\bar.txt   ${/}tmp${/}bar.txt\r\nPutFile004\r\n    Put File       c:${/}foo${/}bar.txt   ${/}tmp${/}\r\nPutFile005\r\n    Put File       c:${/}foo${/}bar.txt   ${/}tmp\r\nPutFile006\r\n    Put File       c:${/}foo${/}bar.txt   ${/}tmp${/}bar.txt\r\nPutFile004a\r\n    Put File       ${/}foo${/}bar.txt   ${/}tmp${/}\r\nPutFile005a\r\n    Put File       ${/}foo${/}bar.txt   ${/}tmp\r\nPutFile006a\r\n    Put File       ${/}foo${/}bar.txt   ${/}tmp${/}bar.txt\r\nPutFile006c\r\n    Put File       *\r\n</pre>\r\n\r\nResults:\r\n<pre>\r\nPutFile001                                                            | FAIL |\r\nIOError: Failure\r\n------------------------------------------------------------------------------\r\nPutFile002                                                            | FAIL |\r\nIOError: Failure\r\n------------------------------------------------------------------------------\r\nPutFile003                                                            | FAIL |\r\nIOError: Failure\r\n------------------------------------------------------------------------------\r\nPutFile001a                                                           | FAIL |\r\nIOError: Failure\r\n------------------------------------------------------------------------------\r\nPutFile002a                                                           | FAIL |\r\nIOError: Failure\r\n------------------------------------------------------------------------------\r\nPutFile003a                                                           | FAIL |\r\nIOError: Failure\r\n------------------------------------------------------------------------------\r\nPutFile004                                                            | FAIL |\r\nIOError: Failure\r\n------------------------------------------------------------------------------\r\nPutFile005                                                            | FAIL |\r\nIOError: Failure\r\n------------------------------------------------------------------------------\r\nPutFile006                                                            | FAIL |\r\nIOError: Failure\r\n------------------------------------------------------------------------------\r\nPutFile004a                                                           | FAIL |\r\nIOError: Failure\r\n------------------------------------------------------------------------------\r\nPutFile005a                                                           | FAIL |\r\nIOError: Failure\r\n------------------------------------------------------------------------------\r\nPutFile006a                                                           | FAIL |\r\nIOError: Failure\r\n------------------------------------------------------------------------------\r\nPutFile006c                                                           | FAIL |\r\nIOError: Failure\r\n------------------------------------------------------------------------------\r\n</pre>\r\n\r\nssh log\r\n<pre>\r\nDEB [20150318-18:38:23.446] thr=2   paramiko.transport: [chan 1] Max packet in: 32768 bytes\r\nDEB [20150318-18:38:23.460] thr=1   paramiko.transport: [chan 1] Max packet out: 32768 bytes\r\nDEB [20150318-18:38:23.460] thr=1   paramiko.transport: Secsh channel 1 opened.\r\nDEB [20150318-18:38:23.539] thr=1   paramiko.transport: [chan 1] Sesch channel 1 request ok\r\nINF [20150318-18:38:23.648] thr=2   paramiko.transport.sftp: [chan 1] Opened sftp connection (server version 3)\r\nDEB [20150318-18:38:23.648] thr=2   paramiko.transport.sftp: [chan 1] normalize('.')\r\nDEB [20150318-18:38:23.696] thr=2   paramiko.transport.sftp: [chan 1] stat('/tmp/')\r\nDEB [20150318-18:38:23.743] thr=2   paramiko.transport.sftp: [chan 1] stat('/')\r\nDEB [20150318-18:38:23.789] thr=2   paramiko.transport.sftp: [chan 1] stat('//tmp')\r\nDEB [20150318-18:38:26.101] thr=2   paramiko.transport.sftp: [chan 1] mkdir('//tmp', 484)\r\nDEB [20150318-18:38:26.180] thr=2   paramiko.transport.sftp: [chan 1] stat('/tmp')\r\nDEB [20150318-18:38:26.226] thr=2   paramiko.transport.sftp: [chan 1] stat('/')\r\nDEB [20150318-18:38:26.273] thr=2   paramiko.transport.sftp: [chan 1] stat('//tmp')\r\nDEB [20150318-18:38:26.321] thr=2   paramiko.transport.sftp: [chan 1] mkdir('//tmp', 484)\r\nDEB [20150318-18:38:26.382] thr=2   paramiko.transport.sftp: [chan 1] stat('/tmp/bar.txt')\r\nDEB [20150318-18:38:26.430] thr=2   paramiko.transport.sftp: [chan 1] stat('/')\r\nDEB [20150318-18:38:26.476] thr=2   paramiko.transport.sftp: [chan 1] stat('//tmp')\r\nDEB [20150318-18:38:26.523] thr=2   paramiko.transport.sftp: [chan 1] mkdir('//tmp', 484)\r\nDEB [20150318-18:38:26.585] thr=2   paramiko.transport.sftp: [chan 1] stat('/tmp/')\r\nDEB [20150318-18:38:26.632] thr=2   paramiko.transport.sftp: [chan 1] stat('/')\r\nDEB [20150318-18:38:26.680] thr=2   paramiko.transport.sftp: [chan 1] stat('//tmp')\r\nDEB [20150318-18:38:26.726] thr=2   paramiko.transport.sftp: [chan 1] mkdir('//tmp', 484)\r\nDEB [20150318-18:38:26.789] thr=2   paramiko.transport.sftp: [chan 1] stat('/tmp')\r\nDEB [20150318-18:38:26.835] thr=2   paramiko.transport.sftp: [chan 1] stat('/')\r\nDEB [20150318-18:38:26.882] thr=2   paramiko.transport.sftp: [chan 1] stat('//tmp')\r\nDEB [20150318-18:38:26.930] thr=2   paramiko.transport.sftp: [chan 1] mkdir('//tmp', 484)\r\nDEB [20150318-18:38:26.993] thr=2   paramiko.transport.sftp: [chan 1] stat('/tmp/bar.txt')\r\nDEB [20150318-18:38:27.039] thr=2   paramiko.transport.sftp: [chan 1] stat('/')\r\nDEB [20150318-18:38:27.085] thr=2   paramiko.transport.sftp: [chan 1] stat('//tmp')\r\nDEB [20150318-18:38:27.132] thr=2   paramiko.transport.sftp: [chan 1] mkdir('//tmp', 484)\r\nDEB [20150318-18:38:27.196] thr=2   paramiko.transport.sftp: [chan 1] stat('/tmp/')\r\nDEB [20150318-18:38:27.257] thr=2   paramiko.transport.sftp: [chan 1] stat('/')\r\nDEB [20150318-18:38:27.305] thr=2   paramiko.transport.sftp: [chan 1] stat('//tmp')\r\nDEB [20150318-18:38:27.351] thr=2   paramiko.transport.sftp: [chan 1] mkdir('//tmp', 484)\r\nDEB [20150318-18:38:27.414] thr=2   paramiko.transport.sftp: [chan 1] stat('/tmp')\r\nDEB [20150318-18:38:27.460] thr=2   paramiko.transport.sftp: [chan 1] stat('/')\r\nDEB [20150318-18:38:27.507] thr=2   paramiko.transport.sftp: [chan 1] stat('//tmp')\r\nDEB [20150318-18:38:27.555] thr=2   paramiko.transport.sftp: [chan 1] mkdir('//tmp', 484)\r\nDEB [20150318-18:38:27.618] thr=2   paramiko.transport.sftp: [chan 1] stat('/tmp/bar.txt')\r\nDEB [20150318-18:38:27.664] thr=2   paramiko.transport.sftp: [chan 1] stat('/')\r\nDEB [20150318-18:38:27.710] thr=2   paramiko.transport.sftp: [chan 1] stat('//tmp')\r\nDEB [20150318-18:38:27.757] thr=2   paramiko.transport.sftp: [chan 1] mkdir('//tmp', 484)\r\nDEB [20150318-18:38:27.821] thr=2   paramiko.transport.sftp: [chan 1] stat('/tmp/')\r\nDEB [20150318-18:38:27.868] thr=2   paramiko.transport.sftp: [chan 1] stat('/')\r\nDEB [20150318-18:38:27.914] thr=2   paramiko.transport.sftp: [chan 1] stat('//tmp')\r\nDEB [20150318-18:38:27.960] thr=2   paramiko.transport.sftp: [chan 1] mkdir('//tmp', 484)\r\nDEB [20150318-18:38:28.023] thr=2   paramiko.transport.sftp: [chan 1] stat('/tmp')\r\nDEB [20150318-18:38:28.071] thr=2   paramiko.transport.sftp: [chan 1] stat('/')\r\nDEB [20150318-18:38:28.118] thr=2   paramiko.transport.sftp: [chan 1] stat('//tmp')\r\nDEB [20150318-18:38:28.164] thr=2   paramiko.transport.sftp: [chan 1] mkdir('//tmp', 484)\r\nDEB [20150318-18:38:28.226] thr=2   paramiko.transport.sftp: [chan 1] stat('/tmp/bar.txt')\r\nDEB [20150318-18:38:28.273] thr=2   paramiko.transport.sftp: [chan 1] stat('/')\r\nDEB [20150318-18:38:28.321] thr=2   paramiko.transport.sftp: [chan 1] stat('//tmp')\r\nDEB [20150318-18:38:28.368] thr=2   paramiko.transport.sftp: [chan 1] mkdir('//tmp', 484)\r\nDEB [20150318-18:38:28.446] thr=2   paramiko.transport.sftp: [chan 1] stat('/home/jarin_000/')\r\nDEB [20150318-18:38:28.493] thr=2   paramiko.transport.sftp: [chan 1] stat('/')\r\nDEB [20150318-18:38:28.539] thr=2   paramiko.transport.sftp: [chan 1] stat('//home')\r\nDEB [20150318-18:38:30.845] thr=2   paramiko.transport.sftp: [chan 1] mkdir('//home', 484)\r\nDEB [20150318-18:38:31.111] thr=1   paramiko.transport: EOF in transport thread\r\n</pre>\r\n"},"comment":{"url":"https://api.github.com/repos/robotframework/SSHLibrary/issues/comments/119928830","html_url":"https://github.com/robotframework/SSHLibrary/issues/134#issuecomment-119928830","issue_url":"https://api.github.com/repos/robotframework/SSHLibrary/issues/134","id":119928830,"user":{"login":"jussimalinen","id":763358,"avatar_url":"https://avatars.githubusercontent.com/u/763358?v=3","gravatar_id":"","url":"https://api.github.com/users/jussimalinen","html_url":"https://github.com/jussimalinen","followers_url":"https://api.github.com/users/jussimalinen/followers","following_url":"https://api.github.com/users/jussimalinen/following{/other_user}","gists_url":"https://api.github.com/users/jussimalinen/gists{/gist_id}","starred_url":"https://api.github.com/users/jussimalinen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jussimalinen/subscriptions","organizations_url":"https://api.github.com/users/jussimalinen/orgs","repos_url":"https://api.github.com/users/jussimalinen/repos","events_url":"https://api.github.com/users/jussimalinen/events{/privacy}","received_events_url":"https://api.github.com/users/jussimalinen/received_events","type":"User","site_admin":false},"created_at":"2015-07-09T12:00:13Z","updated_at":"2015-07-09T12:00:13Z","body":"Thanks!"}}