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"