SSH를 통해 전달된 문자열의 ' 문자를 해석하는 방법

SSH를 통해 전달된 문자열의 ' 문자를 해석하는 방법

BASH 및 Linux를 처음 사용하며 빠른 도움이 필요합니다. 나는 명령줄에서 사용자에게 사용자 이름과 비밀번호를 요청하고 나중에 해당 정보를 SSH를 통해 원격 서버에 전달하는 빠른 bash 스크립트를 작성했습니다. 문제는 한 사용자의 비밀번호에 ' 문자가 포함되어 있고, 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"

관련 정보