33

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

4

7 に答える 7

50

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

(echo newpassword; echo confirmNewPassword) | smbpasswd -s

ところで:(古いパスワードをエコーし​​ ます;新しいパスワードをエコーし​​ます)| smbpasswd -s は機能しません。

于 2008-08-15T06:38:59.287 に答える
27

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

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

エコーあり:

-e : \n などのエスケープ シーケンス

-n : 最後に暗黙の改行を追加しない

smbpasswd を使用:

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

-s : サイレント

于 2008-09-15T13:20:38.980 に答える
13

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

(echo oldpasswd; echo newpasswd) | smbpasswd -s
于 2008-08-15T06:31:29.427 に答える
4

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

于 2013-11-04T14:47:40.153 に答える
1

残念ながら、これは次の 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#@(&*(_\n895'

于 2013-04-05T18:37:29.983 に答える
-4

パイプラインまたはリダイレクトのいずれかを使用します。

于 2008-08-15T06:16:12.187 に答える