smbpasswd에 비밀번호 파이핑
-
08-06-2019 - |
문제
설치 프로세스를 자동화할 수 있도록 새 비밀번호를 smbpasswd에 파이프하려면 어떻게 해야 합니까?
해결책
Mark 덕분에 답을 찾았습니다.
(echo newpassword; echo confirmNewPassword) | smbpasswd -s
지금:(에코 oldpasswd;echo newpasswd) | smbpasswd -s는 작동하지 않습니다.
다른 팁
내 스크립트 중 하나에서 다음을 사용합니다.
echo -ne "$PASS\n$PASS\n" | smbpasswd -a -s $LOGIN
에코 포함:
-e : 과 같은 이스케이프 시퀀스
-N :끝에 암시적 줄바꿈을 추가하지 마세요
smbpasswd 사용:
-ㅏ :새 사용자 추가
-s :조용한
다음과 같이 시도해 보십시오:
(echo oldpasswd; echo newpasswd) | smbpasswd -s
이것을 사용하십시오echo 'somepassword' | tee - | smbpasswd -s
이는 불행하게도 다음 두 가지 이유로 바람직하지 않습니다.1) 사용자가 암호에 ' n'의 조합을 사용하는 경우 입력에 불일치가 발생합니다. 2) 시스템에 UNIX 사용자가있는 경우 유틸리티 PS를 사용하는 사용자가 암호를 볼 수 있습니다.
더 좋은 방법은 아래와 같이 이름을 파일에 넣고 파일에서 읽고 Python pexpect를 사용하여 읽는 것입니다. 그러나 간단한 스크립트만으로도 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)
그런 다음 다음을 시도하십시오../smbpasswd.py userName1 'f#@(&*(_ 895'
Puppet 5.x Exec 리소스에서 새로운 Samba 사용자를 생성해야 했는데 여러 가지 이유로 위의 어느 것도 작동하지 않았습니다.다행히도 다소 어리석어 보이는 이 명령은 작동했습니다.
yes vagrant|head -n 2|smbpasswd -a -s vagrant
여기의 비밀번호는 물론 "vagrant"입니다.