Я хочу запустить файл .sh, который принимает аргумент в машине Linux. Я использую plink.exe, чтобы выполнить этот файл .sh с Windows-машины. Но я не знаю, что написать в командном файле, чтобы запустить plink.exe, который, в свою очередь, выполняет файл .sh и этот аргумент файла.

Я написал следующую пакетную команду:

@echo off  
start C:\Users\Prateek\Desktop\PLINK.EXE -ssh -P 22 user@host -pw password sh -x  "/home/user/copy.sh"

Выполнив это, я получаю:

+ echo ''  

+ echo 'Enter partner id'  
Enter partner id  
+ read pid  
:  

На самом деле «Введите идентификатор партнера» - это аргумент, который мне нужно передать.

1 ответ1

1

Я до сих пор не совсем понимаю, что вы хотите, но я сделаю некоторые предположения, и тогда мы увидим, как это происходит ;-) К сожалению, у меня нет готовой оболочки Windows, поэтому мой пакетный foo может быть немного, особенно в отношении цитирования, вдвойне, если вещи содержат пробелы. Изменения приветствуются.

  1. Я понимаю, что вы хотите предоставить аргумент командной строки для вашего командного файла. Затем он будет доступен внутри командного файла как %1 .

  2. Я предполагаю, что строка, полученная в предыдущем абзаце, должна быть введена в сценарий оболочки UNIX в качестве входных данных. Это может (например) быть сделано в оболочке входа в систему в Linux, передав команду echo во вторую оболочку.


Попробуйте следующую модификацию:

start C:\Users\Prateek\Desktop\PLINK.EXE -ssh -P 22 user@host -pw password echo %1 ^| sh -x  "/home/user/copy.sh"

Если вызывается как mybatch.bat SomeText , он должен запустить следующее в оболочке на удаленном хосте:

echo SomeText | sh -x /home/user/copy.sh

который запускает copy.sh и заставляет его думать, что кто-то набрал SomeText на клавиатуре для него.

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