Thực hiện các lệnh với ssh và shell script bằng các biến trên một máy từ xa


8

Tôi muốn thực thi một lệnh và tập lệnh nằm trên một máy từ xa có tập lệnh trên máy cục bộ. Tôi biết có thể thực hiện các loại lệnh này với ssh, vì vậy tôi đã thực hiện:

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

Nó hoạt động hoàn hảo. Tôi muốn tập lệnh này chung chung hơn, sử dụng các biến. Bây giờ thì đúng là vậy:

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

Và tôi nhận được lỗi này: bash: ./: is a directory

Tôi đoán máy từ xa không biết các biến này. Vậy có cách nào để xuất chúng vào mục tiêu không?


Câu trả lời:


7

Tôi không biết một cách dễ dàng để xuất các biến môi trường để nhắm mục tiêu, nhưng tập lệnh của bạn có thể hoạt động nếu bạn thay thế 'bằng ". Với 's, chuỗi 'cd ${LOCATION}; ./${EXEC}'được truyền nguyên văn, nhưng với

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

thay thế được thực hiện tại địa phương.

Lưu ý rằng các giá trị của LOCATIONEXECđược chuyển đến shell từ xa, do đó, giá trị này chỉ hoạt động nếu chúng không chứa bất kỳ ký tự đặc biệt nào của shell.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.