Comment échapper un signe @ dans le champ de mot de passe d'un smb: // URL
Question
Je suis en train d'écrire un script bash dans lequel je me connecte à un serveur Samba, en obtenant le nom d'utilisateur et mot de passe, puis dire $ username: mot de passe $ @ SERVERNAME
.Cependant, cela échouera si le mot de passe a un @ en elle. Est-il un moyen d'échapper à la @ hors du mot de passe dans bash?
Merci d'avance
Mise à jour: J'installe cette imprimante réseau
lpadmin -p PRINTER -v smb://$username:$password@SERVER -E
et cela fonctionne, sauf dans le cas où $ le mot de passe a un signe @ il; le nom d'utilisateur de $ et les variables de mots de passe $ sont obtenus à la lecture stdin
La solution
Ah, non, ce n'est pas vraiment une question de citer Bash, mais citant pour Samba. Vous avez ceci:
lpadmin -p PRINTER -v smb://$username:$password@SERVER -E
bash qui se dilate consciencieusement à
lpadmin -p PRINTER -v smb://alice:passw@rd@SERVER -E
et bibliothèque client Samba pense que le mot de passe se termine au premier signe @ et il est censé se connecter à un serveur nommé rd@server
, jamais l'esprit que vous ne pouvez pas vraiment mettre ce nom dans le DNS .
lpadmin
vient de CUPS, pas de Samba (ici est sa manpage) et la lecture à travers ces documents un peu, je pense que vous pourriez être en mesure d'utiliser cette autre syntaxe:
lpadmin -p PRINTER -U "${username}%${password}" -v smb://SERVER -E
Je suis surpris que @
échapper %40
ne fonctionne pas, cependant. On dirait un bug dans la bibliothèque cliente de samba pour moi.
Autres conseils
J'utilise le tasses Admin à l'adresse http: // localhost: 631 / pour ajouter des imprimantes. L'encodage @ en% 40 a fonctionné pour moi.