SSHセッションには次のスクリプトがあります。
ssh -i /path/to/private_key somebody@ip_address_2 <<'EOF'
...
# Get the join command
JOIN_COMMAND=$(kubeadm token create --print-join-command)
EOF
ssh -i /path/to/second_private_key someother@ip_address_2 <<'EOF'
...
# run the JOIN_COMMAND
$JOIN_COMMAND
EOF
JOIN_COMMAND
2番目のセッションでは、最初のセッションで生成された変数を使用する必要があります。最初のアイテムで試してみましたが、エクスポートされず、export
エラーが発生しました。 Bashでどのようにこれを達成できますか?
注:SSHセッションは異なるリモートノード、つまり2つの異なるIPアドレスで発生します。
ベストアンサー1
環境変数は、別のコマンドを実行したときにあるコマンドから別のコマンドに渡される変数であり、プロセスが照会できる仮想の場所ではなく、渡される変数です。
ここでは、ファイルシステムなどの一種の永続ストレージを使用したいようです。
ssh -i /path/to/private_key somebody@ip_address sh << 'EOF' || exit
kubeadm token create --print-join-command > join-command
EOF
これは出力をkubeadm
ホームディレクトリjoin-command
のファイルに保存します。somebody
それから:
ssh -i /path/to/private_key somebody@ip_address 'sh ./join-command'
または、ssh
同じローカルシェルから両方のコマンドを呼び出す場合は、シェルにその変数の1つにコマンドを保存させます。
join_command=$(
ssh -i /path/to/private_key somebody@ip_address sh <<'EOF'
# Get the join command
kubeadm token create --print-join-command
EOF
) || exit
printf '%s\n' "$join_command" |
ssh -i /path/to/private_key somebody@ip_address sh
ここでは仮定する注文する出力はkubeadm
実際にsh
文法のコードです。