Esecuzione di comandi con script ssh e shell utilizzando le variabili su una macchina remota


8

Vorrei eseguire un comando e uno script situati su una macchina remota con uno script su una macchina locale. So che è possibile eseguire questo tipo di comandi con ssh, quindi ho fatto:

#!/bin/bash
ssh username@target 'cd locationOf/theScript/; ./myScript.sh'

Funziona perfettamente. Vorrei che questo script fosse più generico, usando le variabili. Ora è:

#!/bin/bash
LOCATION=locationOf/theScript/
EXEC=myScript.sh
ssh username@target 'cd ${LOCATION}; ./${EXEC}'

E ottengo questo errore: bash: ./: is a directory

Immagino che la macchina remota non conosca queste variabili. Quindi c'è un modo per esportarli verso l'obiettivo?


Risposte:


7

Non conosco un modo semplice per esportare le variabili ambientali come target, ma il tuo script potrebbe funzionare se lo sostituisci 'con ". Con 's la stringa 'cd ${LOCATION}; ./${EXEC}'viene passata alla lettera, ma con

ssh username@target "cd ${LOCATION}; ./${EXEC}"

la sostituzione variabile avviene localmente.

Si noti che i valori di LOCATIONe EXECvengono passati alla shell remota, quindi funziona solo se non contengono caratteri speciali della shell.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.