Bash
如何解釋通過 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"
是否有一些簡單的方法可以取消引用 ’ (如果這是正確的術語)或任何其他可能導致轉義的特殊字元?
做吧:
echo "Adding username and password..." ssh "root@${dssAssocArray[$key]}" 'cat > /etc/smbcredentials' << EOF username=$username password=$password EOF
您應該能夠通過簡單地在
ssh
命令中引用您的內部字元串來解決這個問題。例如echo "Adding username and password..." ssh root@${dssAssocArray[$key]} "echo \"username=$username\" > /etc/smbcredentials" ssh root@${dssAssocArray[$key]} "echo \"password=$password\" >> /etc/smbcredentials"