Почему сценарий PSFTP дает сбой при запуске от имени системы?

У меня есть пакетный файл Windows cmd, который должен получить список файлов, находящихся на FTP-сервере, через sFTP с помощью PuTTY PSFTP exe и использовать его для дальнейшей обработки. Командная строка :

echo ls | psftp -l myusername -pw mycomplexpwd FTPServerHostname > C:/Users/myuser/Desktop/ls.txt

. Предполагается, что она выводит листинг в файл ls.txt, который я использую в других сценариях. Когда я работаю как обычный пользователь, я получаю список в порядке. Однако при использовании планировщика заданий и планировании сценария от имени пользователя SYSTEMя получаю только это в выходном файле:

Удаленный рабочий каталог /
psftp> quit

Я предположил, что есть проблема с использованием канала |или что-то в этом роде, поэтому я также попытался использовать этот синтаксис, но с тем же результатом:

psftp -l myusername -pw mycomplexpwd FTPServerHostname < C:/Users/myuser/Desktop/lscmd.txt > C:/Users/myuser/Desktop/ls.txt

Что может быть причиной проблемы при планировании задания как SYSTEM вместо мой пользователь? А как получить листинг как СИСТЕМНЫЙ? Обратите внимание, что при запуске сценария от имени администратора (щелкните правой кнопкой мыши -Запуск от имени администратора)Я получаю список в порядке, проблема возникает только при использовании планировщика задач и планировании задачи как СИСТЕМА.

ОС — Windows Server 2012 R2.

0
задан 19 November 2021 в 08:51
1 ответ

Итак, немного покопавшись, оказывается, что PSFTP не распознает ключи к ftp-серверу. Я открыл cmd как SYSTEM(, что может быть немного сложно!)и подключился через PSFTP, принял доверительные отношения с хостом (sFTP-сервером ), после чего скрипт заработал как положено! У других пользователей это не вызвало проблем, так как они использовались в тестировании и подсказка была раньше!

К вашему сведению, ключ также хранится в реестре в разделе HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys, поэтому его можно добавить туда для других пользователей, если вы не хотите входить в систему вручную. (Я добавил эту проверку в свой скрипт, чтобы добавить ее, если она отсутствует для любой пользователь, запускающий скрипт )..

РЕДАКТИРОВАТЬ :Я считаю, что моей самой большой проблемой было получить cmd как SYSTEM, чтобы я мог отлаживать происходящее, как только я смог (увидеть ссылку выше, как я это сделал ), мне стало ясно. Для справки и большей ясности ниже приведен вывод команды перед добавлением ключа, только что замаскированные чувствительные части:

C:\Users\myuser>echo ls | psftp -l myftpuser -pw mycomplexpswd sftp_server
The server's host key is not cached. You have no guarantee
that the server is the computer you think it is.
The server's rsa2 key fingerprint is:
ssh-rsa 2048 SHA256: thecomplexfancyhostkey
If you trust this host, enter "y" to add the key to
PuTTY's cache and carry on connecting.
If you want to carry on connecting just once, without
adding the key to the cache, enter "n".
If you do not trust this host, press Return to abandon the
connection.
Store key in cache? (y/n, Return cancels connection, i for more info) 
Using username "myftpuser".
Pre-authentication banner message from server:
| Company FTP Login - Please enter valid credentials to continue
End of banner message from server
Keyboard-interactive authentication prompts from server:
End of keyboard-interactive prompts from server
Remote working directory is /
psftp> quit
1
ответ дан 20 November 2021 в 18:04

Теги

Похожие вопросы