Запустить файл .sh на Linux-машине через Putty

Запустить файл .sh на Linux-машине через Putty

Я хочу запустить файл .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

Я все еще не совсем понимаю, чего вы хотите, но я сделаю несколько предположений, а потом посмотрим, что из этого получится ;-) К ​​сожалению, у меня нет под рукой оболочки Windows, поэтому мой Batch 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на клавиатуре что-то за него.

Связанный контент