質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

samba

Samba(サンバ)とは、UNIX系OSにおいてSMBを用いたサービスを提供するためのソフトウェアです。ネットワークを通じて、ファイル共有及びプリンタ共有などのサービスをWindowsマシンへと提供します。ライセンス体系GPLに基づきフリーソフトウェアとして公開されています。

Q&A

2回答

3003閲覧

sambaユーザをexpectコマンドを使って登録したい。

yajin

総合スコア75

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

samba

Samba(サンバ)とは、UNIX系OSにおいてSMBを用いたサービスを提供するためのソフトウェアです。ネットワークを通じて、ファイル共有及びプリンタ共有などのサービスをWindowsマシンへと提供します。ライセンス体系GPLに基づきフリーソフトウェアとして公開されています。

0グッド

0クリップ

投稿2018/07/19 06:42

編集2018/07/20 03:09

前提・実現したいこと

sambaユーザを登録してディレクトリへのアクセス制限をしたい。

pdbedit -a ユーザ名

で入力したあと、パスワードを2回聞かれるのでexpectで対話対応をするシェルスクリプトを書いています。

追記:
動くようにはなったのですが、ユーザ登録がうまくいかないようです。
理由はpdbedit -a ユーザ名
パスワード
パスワード
ユーザの登録結果表示

という具合になるので、
ユーザの登録結果表示が対話の邪魔になってしまいます。

どのようにしたらよいでしょうか。
ユーザの登録結果表示を無視するexpectコマンドで対話を無視したりpdbeditのユーザ登録結果表示を非表示するオプションがあれば伺いたく思っています。

発生している問題・エラーメッセージ

表面上はエラーがでてこず、困っています。
個別に
pdbedit -a ユーザ名
パスワード
パスワード

と入力するとパスワード変更はできます。

ソースコード

bash

1#!/bin/bash 2 3array=( 4"user01" 5"hogehoge" 6"user02" 7"fugafuga" 8) 9 10 11#expect -c " 12 13for((i = 0; i < ${#array[@]}; i++)) { 14expect -c " 15spawn pdbedit -a ${array[i]} 16expect " 17let i++ 18expect -c " 19expect \"new password:\" 20 21send \"${array[i]}\n\" 22expect \"retype new password:\" 23send \"${array[i]}\n\" 24expect " 25} 26 27#expect " 28

補足情報(FW/ツールのバージョンなど)

centos7でsambaのバージョンは4です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

expect の回答ではないのですが、pdbedit-t|--password-from-stdin オプションで標準入力からパスワードを入力することができます。

echo -en 'password\npassword\n' | pdbedit -a -t -u username

投稿2018/07/19 08:12

TaichiYanagiya

総合スコア12146

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yajin

2018/07/20 03:06

-tオプションをつけることで、確かにnew password:とretype new password:はでなくなり実行しなくなりましたが、登録できないようです。
TaichiYanagiya

2018/07/20 03:16

私の環境では登録できました。 CentOS 7.5, samba-4.7.1-6.el7.x86_64 です。
yajin

2018/07/20 06:04

pdbedit -Lで登録されていないユーザの状況で行ったのでしょうか。 pdbedit -a user1を手動でしたあと、 pdbedit -a user1をシェルスクリプトで走らせても登録できるのでしょうか。
guest

0

for((~はBashのコマンドであり、expectのコマンドではないです。
forの中でexpectしてください。

投稿2018/07/19 06:54

otn

総合スコア84533

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yajin

2018/07/19 07:01

for((i = 0; i < ${#array[@]}; i++)) { expect -c " spawn pdbedit -a ${array[i]} expect " let i++ expect -c " expect \"new password:\" send \"${array[i]}\n\" expect \"retype new password:\" send \"${array[i]}\n\" expect " } のようにしたら確かに動きましたが、登録されないようです。 pdbedit -a ユーザ名 パスワード パスワード とうったら、ユーザの登録結果も出力されるのでその部分も対話で対応しないといけないでしょうか。
otn

2018/07/19 07:05

pdbedit を使ったことはないので分かりません。
yajin

2018/07/19 07:33

ありがとうございました。
otn

2018/07/19 07:37

実行してみてのログを載せた方が良いと思います。
yajin

2018/07/20 03:06

どのようにログをとればいいのでしょうか。 vi sambalog.logというファイルを作り スクリプト内にlog_file sambalog.logというものを書き、 実行したところ、 log_fileコマンドが見つかりませんとでます。 yum searchで探してみてもlog_fileというコマンドは内容です。
otn

2018/07/20 03:25

ログを取るのは、端末ソフトの機能(範囲指定してコピーとか)をつかうか、 sh スクリプトファイル名 &> ログファイル名 ただ、TaichiYanagiyaさんの回答の-tオプションを使っても出来ないと言うことは、expect回りの問題ではないですね。 そもそも、手動では登録できるのでしょうか?
yajin

2018/07/20 06:02

はい手動では登録できます。 一応、試行内容は以下の通りです。 1、ユーザ登録 useradd user1 useradd user2 2、pdbeditパスワード登録 pdbedit -a user1 パスワード入力 パスワード入力 3、windowsで確認 認証できた。 4、次にシェルスクリプトを走らせる。 上記のスクリプト 5、windowsで認証できない。 6、手動で変更してみる pdbedit -a user1 パスワード パスワード これだとwindows端末から認証できる。 というような具合です。
otn

2018/07/20 06:33 編集

「登録されない」かと思っていました。(以下削除)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問