予測を使用して ssh 後に構成ファイルをロードする

予測を使用して ssh 後に構成ファイルをロードする

リモートホストでsshを試み、.zshrcホスト上のファイルに環境変数をロードしてから、その環境変数を使用してコマンドを実行しようとします。

これはこれまで私のスクリプトです。

#!/usr/bin/expect -f
spawn ssh hostname
send "echo $my_variable\n"
interact

私のリモートホストのファイルには、.zshrc次の内容が含まれています。

export my_variable=banana_tree

上記のスクリプトを実行すると、次のような結果が出力されます。

spawn ssh hostname
can't read "my_variable": no such variable
    while executing
"send "echo $my_variable\n""
    (file "/Users/me/myscript.sh" line 6)

予想される変数がスクリプトを実行している環境で定義されていないため、見つからないというエラーメッセージがわかります。回避策は、スクリプトを実行する変数を定義することですが、保持することをお勧めします。可能であれば、リモートでホストに定義された変数。

ベストアンサー1

台本からドル記号を抜かなければならなかったので、次のようになりました。

#!/usr/bin/expect -f
spawn ssh hostname
send "echo \$my_variable\n"
interact

ロードしているように見えます.zshrcが、ホストに環境変数をロードするにはドル記号をエスケープする必要がありますが、スクリプトで環境変数を定義するにはドル記号をエスケープしません。

おすすめ記事