2014-12-13 25 views
6

ho bisogno di eseguire uno script di shell da remoto all'interno della scatola di Linux da WindowsRun script di shell (con parametri) sulla riga di comando di Windows tramite Plink

#!/bin/bash 
if [ "$#" -ne 1 ]; then 

    echo "Illegal number of parameters" 
    exit 
fi 
    echo "$1" 

Ecco il comando mi sono imbattuto da Windows prompt dei comandi

cmd> plink.exe -ssh [email protected] -pw gbG32s4D/ -m C:\myscript.sh 5 

sto ottenendo uscita come

"numero illegale di parametri"

Esiste un modo per passare il parametro della riga di comando allo script della shell che verrà eseguito sul server remoto?

risposta

0

Hai provato mettendo il comando e l'argomento tra virgolette:

cioè -m "C: \ myscript.sh 5"

+0

Ya ho messo ho avuto errore in grado di aprire il file di comando "C: \ myscript.sh 5" –

+0

mmm, ho scaricato e giocato in giro. Sembra che riproduca il tuo batchfile così com'è. Se vuoi usare gli argomenti dovresti avere la shell shell già dall'altra parte e quindi chiamare senza l'opzione -m –

7

Si comprende male come le opere -m switch.

È solo un modo per eseguire plink caricare i comandi da inviare al server da un file locale.

Il file NON viene caricato ed eseguito sul server remoto (con argomenti).

Il contenuto viene letto localmente e inviato al server ed eseguito lì come se fosse stato digitato su una riga di comando (remota). Non puoi dargli argomenti.


Una soluzione è quella di generare il file al volo localmente prima di eseguire plink da un file batch (ad esempio run.bat):

echo echo %1 > script.tmp 
plink.exe -ssh [email protected] -pw gbG32s4D/ -m script.tmp 

quindi eseguire il file batch con l'argomento:

run.bat 5 

Quanto sopra farà eseguire lo script echo 5 sul server.


Se lo script è complesso, invece di assemblare localmente, averlo pronto sul server (come suggerito @MarcelKuiper) ed eseguire solo lo script tramite Plink.

plink.exe -ssh [email protected] -pw gbG32s4D/ "./myscript.sh %1" 

In questo caso, come eseguiamo un solo comando, si può passare sulla riga di comando Plink, compresi gli argomenti. Non è necessario utilizzare lo switch -m con un file (temporaneo).