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"