Menjalankan perintah dengan skrip ssh dan shell menggunakan variabel pada mesin jarak jauh


8

Saya ingin menjalankan perintah dan skrip yang terletak di mesin jarak jauh dengan skrip di mesin lokal. Saya tahu itu mungkin untuk mengeksekusi perintah semacam ini ssh, jadi saya membuat:

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

Ini bekerja dengan sempurna. Saya ingin skrip ini menjadi lebih umum, menggunakan variabel. Sekarang adalah:

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

Dan saya mendapatkan kesalahan ini: bash: ./: is a directory

Saya kira mesin jarak jauh tidak tahu variabel-variabel ini. Jadi apakah ada cara untuk mengekspornya ke target?


Jawaban:


7

Saya tidak tahu cara mudah ekspor variabel lingkungan target, tetapi naskah Anda mungkin bekerja jika Anda mengganti 'dengan ". Dengan 's string 'cd ${LOCATION}; ./${EXEC}'dilewatkan kata demi kata, tetapi dengan

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

substitusi variabel dilakukan secara lokal.

Perhatikan bahwa nilai-nilai LOCATIONdan EXECditeruskan ke shell jauh, jadi ini hanya berfungsi jika mereka tidak mengandung karakter khusus shell.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.