Como interpretar 'caractere em uma string passada pelo SSH

3

Novo no BASH e Linux e precisa de ajuda rápida. Eu escrevi um script bash rápido que pede ao usuário por um nome de usuário e senha a partir da linha de comando e passa essa informação para um servidor remoto mais tarde via SSH. O problema é que um usuário tem um caractere 'na senha e o valor está causando erros de EOF ao usar o SSH. O seguinte é o meu código para capturar o nome de usuário e senha

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

e o seguinte é onde eu envio as informações para o servidor remoto. Note, há uma matriz de servidores para os quais devo enviar isso.

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

Existe alguma maneira simples de desreferenciar o '(se esse é o termo correto) ou qualquer outro caractere especial que possa causar uma fuga?

    
por antMachines 04.01.2016 / 19:22

2 respostas

3

Basta fazer isso:

echo "Adding username and password..."  
ssh "root@${dssAssocArray[$key]}" 'cat > /etc/smbcredentials' << EOF
username=$username
password=$password
EOF
    
por 04.01.2016 / 19:38
-1

Você deve conseguir contornar isso simplesmente citando suas strings internas no comando ssh . Por exemplo

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