Inviare la password a smbpasswd
-
08-06-2019 - |
Domanda
Come posso reindirizzare la nuova password a smbpasswd in modo da poter automatizzare il processo di installazione.
Soluzione
Grazie a Mark ho trovato la risposta:
(echo newpassword; echo confirmNewPassword) | smbpasswd -s
A proposito:(echo vecchiapasswd;echo newpasswd) | sMBPasswd -s non funziona.
Altri suggerimenti
Utilizzo quanto segue in uno dei miei script:
echo -ne "$PASS\n$PASS\n" | smbpasswd -a -s $LOGIN
Con eco:
-e:sequenze di escape, come
-N :non aggiungere una nuova riga implicita alla fine
Con smbpasswd:
-UN :aggiungi nuovo utente
-S :silenzioso
Prova qualcosa del genere:
(echo oldpasswd; echo newpasswd) | smbpasswd -s
Usa questoecho 'somepassword' | tee - | smbpasswd -s
Ciò purtroppo non è auspicabile per due motivi:1) Se l'utente utilizza una combinazione di ' n' nella password, ci sarà una mancata corrispondenza nell'input 2) Se ci sono utenti UNIX sul sistema, un utente che utilizza l'utilità PS può vedere la password
Un modo migliore sarebbe quello di inserire i nomi in un file e leggere dal file e usare python pexpect per leggerli, non come sotto, ma il semplice script è sufficiente per vedere come usare 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)
allora prova:./smbpasswd.py nomeutente1 'f#@(&*(_ 895'
Ho dovuto creare un nuovo utente Samba in una risorsa Puppet 5.x Exec e per vari motivi nessuno dei precedenti ha funzionato.Fortunatamente questo comando dall'aspetto piuttosto sciocco ha funzionato:
yes vagrant|head -n 2|smbpasswd -a -s vagrant
La password qui è ovviamente "vagabondo".
utilizzando uno dei due condutture O reindirizzamento.