Чтобы запустить сценарий оболочки (с параметрами) в командной строке Windows через putty.exe

Мне нужно выполнить пакетный сценарий, который удаленно запускает сценарий оболочки внутри Linux.

Теперь все работает нормально, но сценарий не выполняется, если я пытаюсь указать параметр командной строки для сценария оболочки.

Рабочий -> бывший

C:\temp\Testing>putty.exe -pw "blabla" -m "test-script.sh" [email protected]

Но если я попытаюсь привести аргументы, это не сработает. Пример:

Не работает

C:\temp\Testing>putty.exe -pw "blabla" -m "test-script.sh ok-1" [email protected]

 where ok-1 = command line argument for local script test-script.sh

Как я могу решить эту проблему?


person samantha    schedule 12.06.2012    source источник
comment
Из документации: ожидается, что параметр `-m' будет задано имя локального файла, и он будет читать команду из этого файла.   -  person Denys Séguret    schedule 12.06.2012
comment
@dystroy, спасибо за предложение. Из вашего ответа я понял, что вы предлагаете мне использовать опцию -m. Я использовал параметр -m, и он работает как шарм, но если я хочу, чтобы мой скрипт bash (который находится локально) принимал аргумент командной строки (в данном случае ok-1), как бы я это реализовал?   -  person samantha    schedule 13.06.2012
comment
@samantha - я не думаю, что вы можете добиться того, чего пытаетесь, с помощью опции -m. -m — предоставить текстовый файл команды, и этот текстовый файл команды берется как есть и выполняется на целевом сервере. -m, насколько я знаю, не предназначен для того, чтобы рассматривать то, что следует за синтаксисом командной строки. Вместо этого -m говорит шпатлевке взять файл, упомянутый после -m, и выполнить его удаленно. Итак, когда вы предоставляете аргумент командной строки, скажем, ok-1, шпатлевка думает о ok-1 как о файле .HTH. Я могу предоставить альтернативный способ сделать то, что вы пытаетесь достичь.   -  person ring bearer    schedule 13.06.2012
comment
@ring Bearer, Большое спасибо за подробное объяснение. ваше решение развеяло некоторые мои сомнения.   -  person samantha    schedule 13.06.2012


Ответы (1)


Вместо putty.exe для этого можно использовать pscp и plink (утилиты, поставляемые с PuTTY). Используйте такую ​​команду:

pscp.exe -pw "blabla" test-script.sh [email protected]:/some/path/

чтобы скопировать скрипт на удаленный сервер, а затем используйте следующую команду:

plink.exe -ssh -pw "blabla" [email protected] /some/path/test-script.sh ok-1

выполнить его.

person bta    schedule 12.06.2012
comment
Спасибо за решение. Так как я опаздываю в Великобританию, я попробую это завтра в офисе и дам вам знать, если это сработает. Спасибо еще раз - person samantha; 13.06.2012
comment
Привет @bta, я попробовал твою команду из cmd.exe в окне, но она не удалась. Я получил ошибку типа bash: ok-1: команда не найдена - person samantha; 13.06.2012
comment
@samantha- Упс, я сделал опечатку в своей команде plink. Между адресом сервера и выполняемой командой не должно быть двоеточия. Смотрите мой отредактированный ответ для правильного синтаксиса. - person bta; 13.06.2012