如何解释通过 SSH 传递的字符串中的 ' 字符

如何解释通过 SSH 传递的字符串中的 ' 字符

BASH 和 Linux 新手,需要一些快速帮助。我编写了一个快速的 bash 脚本,它从命令行要求用户输入用户名和密码,并稍后通过 SSH 将该信息传递到远程服务器。问题是,一个用户的密码中包含 ' 字符,并且该值在使用 SSH 时导致 EOF 错误。以下是我的捕获用户名和密码的代码

echo "Please type in username:"
read username
read -s -p "Enter Password: " password

以下是我将信息发送到远程服务器的地方。请注意,我必须将其发送到一系列服务器。

echo "Adding username and password..."  
ssh root@${dssAssocArray[$key]} "echo username=$username > /etc/smbcredentials"
ssh root@${dssAssocArray[$key]} "echo password=$password >> /etc/smbcredentials"

是否有一些简单的方法来取消引用 ' (如果这是正确的术语)或任何其他可能导致转义的特殊字符?

答案1

只要做到:

echo "Adding username and password..."  
ssh "root@${dssAssocArray[$key]}" 'cat > /etc/smbcredentials' << EOF
username=$username
password=$password
EOF

答案2

您应该能够通过简单地在ssh命令中引用内部字符串来解决这个问题。例如

echo "Adding username and password..."  
ssh root@${dssAssocArray[$key]} "echo \"username=$username\" > /etc/smbcredentials"
ssh root@${dssAssocArray[$key]} "echo \"password=$password\" >> /etc/smbcredentials"

相关内容