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

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top