Expect命令:设置主机的多行环境变量

Expect命令:设置主机的多行环境变量

所以我在环境变量中设置了 RSA 令牌。我想在远程机器的环境中设置它。我尝试了下面的脚本来设置,但它只设置第一行-----BEGIN OPENSSH PRIVATE KEY-----

#!/usr/bin/expect -f

spawn ssh -tt ec2-user@$::env(EC2_INSTANCE)

send "export RSA_KEY=$::env(MY_KEY)\r"
expect -re ".*\$"

如何设置全部内容?

答案1

将其值放在单引号中:

send "export RSA_KEY='$::env(MY_KEY)'\r"
expect -re {.*\$}

注意{.*\$}代替".*\$";你的".*\$"意志会变成.*$和匹配任何事物,包括空字符串。

如果MY_KEY环境变量可以包含's,您可能需要转义它们:

send "export RSA_KEY='[regsub -all {'} $::env(MY_KEY) {'\''}]'\r"
expect -re {.*\$}

相关内容