Piping parola pentru a smbpasswd

Cum pot conduce noua parola la smbpasswd pentru a putea automatiza procesul de instalare.

0
fr hi bn

6 răspunsuri

Mulțumită lui Mark am găsit răspunsul:

(echo newpassword; echo confirmNewPassword) | smbpasswd -s

BTW: (echo oldpasswd; echo newpasswd) smbpasswd -s nu funcționează.

0
adăugat
-1 Acesta este exact răspunsul lui Mark, schimbând numele variabilelor.
adăugat autor JorgeeFG, sursa
+1 pentru a compensa JorgeeFG; Cred că noile nume de variabile conțin o distincție, dacă citiți cu atenție. Răspunsul lui Mark presupune că smbpasswd așteaptă o parolă veche și o nouă, dar acest răspuns implică faptul că smbpasswd așteaptă o parolă și o confirmare a parolei. A doua interpretare este cea corectă, deci cred că răspunsul lui Mark este mai puțin util decât acesta.
adăugat autor Matt, sursa

Încercați ceva de genul:

(echo oldpasswd; echo newpasswd) | smbpasswd -s
0
adăugat

utilizând fie conducte , fie redirecționare .

0
adăugat
Pur și simplu nu răspunde la întrebare.
adăugat autor markrian, sursa

Folosesc următoarele în unul din scenariile mele:

   echo -ne "$PASS\n$PASS\n" | smbpasswd -a -s $LOGIN

Cu ecou:

-e: secvențe de evacuare, ca \ n

-n: nu adăugați linia implicită la sfârșit

Cu smbpasswd:

-a: adăugați un utilizator nou

-s: tăcut

0
adăugat
@Michael în conformitate cu samba.org/samba/docs/man/ manpages/smbpasswd.8.html înseamnă atât "silent" (fără instrucțiuni) și "read from stdin" (în loc de/dev/ptty)
adăugat autor Bruno De Fraine, sursa
smbpasswd? s -s ​​înseamnă "utilizați stdin pentru parola prompte?", nu? tăcut?
adăugat autor Michael, sursa

Din păcate, acest lucru nu este de dorit din două motive: 1) dacă utilizatorul folosește o combinație de '\ n' în parolă, va exista o nepotrivire în intrare 2) dacă există utilizatori unix în sistem, atunci un utilizator care utilizează utilitarul ps poate vedea parola

O modalitate mai bună ar fi să punem numele într-un fișier și să citim din fișier și să folosim Python Pexpect pentru a le citi, nu ca mai jos, dar scriptul simplu este suficient pentru a vedea cum să folosești pexpect

#!/usr/bin/python
#converted from: http://pexpect.sourceforge.net/pexpect.html
#child = pexpect.spawn('scp foo [email protected]:.')
#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)

then try: ./smbpasswd.py userName1 'f#@(&*(_\n895'

0
adăugat

Use this echo 'somepassword' | tee - | smbpasswd -s

0
adăugat
mulțumesc, fwiw, aceasta este singura sintaxă pe care am putut să o lucrez într-un Docker File: RUN PASS = myrootpassword; echo $ {PASS} | tee - | smbpasswd -a -s
adăugat autor jamshid, sursa
De asemenea, am găsit acest răspuns util ca singura sintaxă pe care am putut să o obțin într-o resursă de execuție a Puppetului; abordarea începând cu o parenșă nu a reușit deoarece Puppet nu a putut găsi comanda "(echo".
adăugat autor dbrewer, sursa