2010-09-01 8 views
10

Estoy intentando escribir un script bash en el que me conecto a un servidor samba, obteniendo el nombre de usuario y la contraseña, y luego diciendo $ username: $ password @ SERVERNAME.Cómo escapar de un signo @ en el campo de contraseña de un smb: // URL

Sin embargo, esto fallará si la contraseña tiene un @ en ella. ¿Hay alguna forma de escapar del @ de la contraseña en bash?

Gracias de antemano

Actualización: Soy la creación de esta impresora de red

lpadmin -p PRINTER -v smb://$username:[email protected] -E 

y funciona, excepto en el caso de que $ password tiene un signo @ en él; las variables $ username y $ passwords se obtienen al leer stdin

+0

Simplemente cite las variables – ghostdog74

+1

Creo que el problema no está en bash sino en hacer que Samba reconozca qué '@' está en la contraseña y qué '@' marca el final de la contraseña. Y dudo que haya una manera de hacerlo, pero si lo hay, tendrá que mirar los manuales de Samba para obtener información. 'Doctor, doctor, duele cuando me golpeo así'? O, en otras palabras, no use '@' en la contraseña porque causa dolor. –

+1

Tal vez intente reemplazar todo '@' con '% 40' ... No creo que funcione, pero tal vez ese sea el camino. Use '$ contraseña = $ {contraseña // @ /% 40}' para reemplazarlos. – dreamlax

Respuesta

5

Ah, no, esto no es realmente una cuestión de citas para Bash, sino de citas para Samba. Tiene esto:

lpadmin -p PRINTER -v smb://$username:[email protected] -E 

cuales Bash expande diligentemente a

lpadmin -p PRINTER -v smb://alice:[email protected]@SERVER -E 

y luego la biblioteca cliente Samba piensa que la contraseña termina en el primer signo @ y se supone que debe conectarse a un servidor llamado [email protected] , no importa que no puedas poner ese nombre en el DNS.

lpadmin proviene de CUPS, no de Samba (here is its manpage) y, a través de la lectura de esos documentos un poco, creo que es posible que pueda usar esta sintaxis alternativa:

lpadmin -p PRINTER -U "${username}%${password}" -v smb://SERVER -E 

Me sorprende escapar @ como %40 no funciona, sin embargo. Parece un error en la biblioteca del cliente de samba para mí.

+0

tienes razón, es samba; He actualizado la pregunta para reflejar lo que estás pidiendo. – codersarepeople

+0

Gracias! Actualicé mi respuesta, en realidad podría tener una solución para usted. – zwol

+0

¿Funcionó la -U cosa? – zwol

3

Uso las tazas admin en http://localhost:631/ para agregar impresoras. La codificación @ como% 40 funcionó para mí.

+0

funcionó para mí, también. – Ingo

Cuestiones relacionadas