ローカルコンピュータのスクリプトを使用して、リモートコンピュータ上のコマンドとスクリプトを実行したいと思います。私は を使ってそのようなコマンドを実行できることを知り、ssh
次のようにしました。
#!/bin/bash
ssh username@target 'cd locationOf/theScript/; ./myScript.sh'
完璧に動作します。私はこのスクリプトがより一般的で変数を使用したいと思います。今です:
#!/bin/bash
LOCATION=locationOf/theScript/
EXEC=myScript.sh
ssh username@target 'cd ${LOCATION}; ./${EXEC}'
次のエラーが発生します。bash: ./: is a directory
リモートコンピュータがこれらの変数について知らないようです。それでは方法はありませんか出口彼らは目標を達成しましたか?
答え1
環境変数をターゲットにエクスポートする簡単な方法がわかりませんが。をsに置き換えると文字列はそのまま渡されますが、次のようにします'
。"
'
'cd ${LOCATION}; ./${EXEC}'
ssh username@target "cd ${LOCATION}; ./${EXEC}"
変数の置換はローカルで行われます。
LOCATION
値はEXEC
リモートシェルに渡されるため、シェル特殊文字が含まれていない場合にのみ有効です。