質問

インストールプロセスを自動化するには、新しいパスワードを smbpasswd にパイプする方法を教えてください。

役に立ちましたか?

解決

マークのおかげで答えが見つかりました。

(echo newpassword; echo confirmNewPassword) | smbpasswd -s

ところで:(古いパスワードをエコー;Echo NewPassWd)| SMBPASSWD -Sは機能しません。

他のヒント

スクリプトの 1 つで次のものを使用します。

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

エコーあり:

-e : のようなエスケープ シーケンス

-n :最後に暗黙的な改行を追加しないでください

smbpasswd の場合:

-a :新しいユーザーを追加する

-s :静けさ

次のようなことを試してください。

(echo oldpasswd; echo newpasswd) | smbpasswd -s

これを使ってecho 'somepassword' | tee - | smbpasswd -s

残念ながら、これは次の 2 つの理由から望ましくありません。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