Я пытался автоматизировать передачу SFTP с клиента Windows через скрипт python на компьютер CentOS с сервером Apache.Я создал учетную запись пользователя на сервере CentOS, который может получить доступ только к SFTP, аналогично приведенным ниже инструкциям: https://www.digitalocean.com/community/tutorials/how-to-enable-sftp-without-shell-access-on-centos-7
Затем я использовал следующий код в попытке передать файл
transport.connect(username = username, password = password)
sftp = paramiko.SFTPClient.from_transport(transport)
sftp.put(base_dir + '\\report', '/var/www/html/reports/' + host_name, confirm = False)
Однако это приводит к следующей ошибке:
Traceback (most recent call last):
File "noschedule_make_report.py", line 74, in <module>
main()
File "noschedule_make_report.py", line 62, in main
sftp.chdir('/var/www/html/reports')
File "C:\Python27\lib\site-packages\paramiko\sftp_client.py", line 626, in chdir
if not stat.S_ISDIR(self.stat(path).st_mode):
File "C:\Python27\lib\site-packages\paramiko\sftp_client.py", line 460, in stat
t, msg = self._request(CMD_STAT, path)
File "C:\Python27\lib\site-packages\paramiko\sftp_client.py", line 780, in _request
return self._read_response(num)
File "C:\Python27\lib\site-packages\paramiko\sftp_client.py", line 832, in _read_response
self._convert_status(msg)
File "C:\Python27\lib\site-packages\paramiko\sftp_client.py", line 861, in _convert_status
raise IOError(errno.ENOENT, text)
IOError: [Errno 2] No such file
Этот код работал, когда я не установил ограничения на загрузку учетной записи пользователя, как описано в посте Digital Ocean, и вместо этого имел гораздо большелиберальные разрешения и логин оболочки.Могу ли я получить как заблокированный логин для загружаемого пользователя, так и использовать функцию Paramiko?
Обратите внимание, что использование команды sftp.chdir('/var/www/html/reports')
перед командой put
приводило к той же ошибке, возникающей в строке chdir
.
Также я понимаю, что были заданы похожие вопросы ( IOError: [Errno 2] Нет такого файла - Paramiko put () ), но я специально спрашиваю, могу ли я отложить эти два наборафункциональности.