문제

설치 프로세스를 자동화할 수 있도록 새 비밀번호를 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"입니다.

둘 중 하나를 사용하여 파이프라인 또는 리디렉션.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top