Я пытаюсь запустить удаленный скрипт в Windows через SSH, и я не могу понять, как обрабатывать кавычки. (И хост, и клиент - машины Windows.) Это утверждение, которое отлично работает на хост-машине:

C:\> python "C:\folder path\file.py"

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

C:\> ssh user@ipaddress "python ""C:\folder path\file.py"""
python: can't open file 'C:\folder': [Errno 2] No such file or directory

Я пытался использовать двойные кавычки, я пробовал одинарные кавычки, я пробовал '\' как escape-символ, я пробовал '^', и кажется, что ничего не проходит правильно. Любая помощь?!

РЕДАКТИРОВАТЬ: пользователь предложил, чтобы я использовал '-v' с ssh для отслеживания пути. Делая это, похоже, что двойные кавычки на самом деле делают то, что я ожидаю, но каким-то образом хост-машина неправильно интерпретирует команду и возражает против пространства. Не уверен, почему ...

Чтобы быть понятным, используя это:

C:\> ssh -v user@ipaddress "python ""C:\folder path\file.py"""

Я вижу это в результатах:

debug1: Sending command: python "C:\folder path\file.py"
python: can't open file 'C:\folder': [Errno 2] No such file or directory

ОПЯТЬ, чтобы быть более понятным, эта команда работает ОТЛИЧНО, когда я физически на хост-машине:

C:\> python "C:\folder path\file.py"

Итак, мне неясно, почему / где это облажается. Спасибо за любую помощь, вы до сих пор очень помогли.

2 ответа2

1

OpenSSH ssh - приложение * nix, поэтому правила * nix применяются при анализе его командной строки.

ssh user@ipaddress "python \"C:\folder path\file.py\""
1

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

ssh username@ipaddress 'net start \"TightVNC Server\"'

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .