Contraseña de canalización a smbpasswd
-
08-06-2019 - |
Pregunta
¿Cómo puedo canalizar la nueva contraseña a smbpasswd para poder automatizar mi proceso de instalación?
Solución
Gracias a Mark encontré la respuesta:
(echo newpassword; echo confirmNewPassword) | smbpasswd -s
POR CIERTO:(echo de contraseña anterior;echo newpasswd) | SMBPassWD -S no funciona.
Otros consejos
Utilizo lo siguiente en uno de mis scripts:
echo -ne "$PASS\n$PASS\n" | smbpasswd -a -s $LOGIN
Con eco:
-e:secuencias de escape, como
-norte :no agregue una nueva línea implícita al final
Con smbcontraseña:
-a :añadir nuevo usuario
-s :silencioso
Pruebe algo como esto:
(echo oldpasswd; echo newpasswd) | smbpasswd -s
Utilizar estaecho 'somepassword' | tee - | smbpasswd -s
Desafortunadamente esto no es deseable por dos razones:1) Si el usuario usa una combinación de ' n' en la contraseña, habrá un desajuste en la entrada 2) Si hay usuarios de Unix en el sistema, entonces un usuario que usa la utilidad PS puede ver la contraseña
Una mejor manera sería poner los nombres en un archivo y leerlos y usar Python pexpect para leerlos, no como a continuación, pero el script simple es suficiente para ver cómo usar pexpect.
#!/usr/bin/python
#converted from: http://pexpect.sourceforge.net/pexpect.html
#child = pexpect.spawn('scp foo myname@host.example.com:.')
#child.expect ('Password:')
#child.sendline (mypassword)
import pexpect
import sys
user=sys.argv[1]
passwd=sys.argv[2]
child = pexpect.spawn('/usr/bin/smbpasswd -a '+str(user))
child.expect('New SMB password:')
child.sendline (passwd)
child.expect ('Retype new SMB password:')
child.sendline (passwd)
entonces intenta:./smbpasswd.py nombre de usuario1 'f#@(&*(_ 895'
Tuve que crear un nuevo usuario de Samba en un recurso Puppet 5.x Exec y por varias razones nada de lo anterior funcionó.Afortunadamente, este comando que parece bastante tonto funcionó:
yes vagrant|head -n 2|smbpasswd -a -s vagrant
La contraseña aquí es, por supuesto, "vagrant".
usando cualquiera de los dos tuberías o redirección.