
Quero executar um arquivo .sh que receba um argumento em uma máquina Linux. Estou usando o plink.exe para executar este arquivo .sh em uma máquina Windows. Mas não sei o que escrever no arquivo em lote para executar o plink.exe, que por sua vez executa o arquivo .sh e este argumento de arquivo.
Eu escrevi o seguinte comando em lote:
@echo off
start C:\Users\Prateek\Desktop\PLINK.EXE -ssh -P 22 user@host -pw password sh -x "/home/user/copy.sh"
Ao executá-lo, recebo:
+ echo ''
+ echo 'Enter partner id'
Enter partner id
+ read pid
:
Na verdade, 'Insira o ID do parceiro' é o argumento que preciso passar.
Responder1
Ainda não entendi o que você quer, mas farei algumas suposições, então poderemos ver como funciona ;-) Infelizmente, também não tenho um shell do Windows disponível, então meu Batch foo pode ser um pouco, especialmente no que diz respeito às citações, ainda mais se as coisas contiverem espaços. Edições são bem-vindas.
Entendo que você deseja fornecer um argumento de linha de comando ao seu arquivo em lote. Isso estará disponível dentro do arquivo em lote como
%1
.Presumo que a string obtida no parágrafo anterior deva ser fornecida ao script de shell do UNIX como entrada. Isso pode (por exemplo) ser feito no shell de login na caixa do Linux, canalizando um comando echo para o segundo shell.
Tente a seguinte modificação:
start C:\Users\Prateek\Desktop\PLINK.EXE -ssh -P 22 user@host -pw password echo %1 ^| sh -x "/home/user/copy.sh"
Se invocado como mybatch.bat SomeText
, ele deverá executar o seguinte em um shell no host remoto:
echo SomeText | sh -x /home/user/copy.sh
que é executado copy.sh
e faz pensar que alguém digitou SomeText
em um teclado.