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

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

新規登録して質問してみよう
ただいま回答率
85.35%
シェル

シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。

Q&A

1回答

1905閲覧

exceptにてユーザ切り替え後の処理について

tune-

総合スコア10

シェル

シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。

0グッド

0クリップ

投稿2020/11/17 10:42

編集2020/11/18 15:37

シェル内で、一般ユーザから別の一般ユーザにexceptコマンドにて「su - ユーザ」を使って
ユーザの切り替えを行っています。
その後、切り替えたユーザで後続の処理を進めたいのですが、手段はあるのでしょうか。
expect抜けると元のユーザに戻ってしまいます。

コマンド

expect -c "
swapn su - user
expect 'Passwd:'
send 'pw'
"

別処理 ← こちらをuserで実行したいです。


背景と状況

製品PGM(シェル)をエラー判定させたいため、ラッパーシェルを作成しました。
ラッパーシェルの実行ユーザはuserAであり変更が困難です。
製品PGMはuserBで実行させる必要があります。
sudoでuserBを実行させる手法もあると思いますが、OSの設定変更も難しい状況です。

検証

expect内にて、whoamiを記載しましたが動作しませんでした。
PW="root"

expect -c "
set timeout 3
spawn su -
expect "password:"
send "${PW}\n"
expect "#"
send "whoami\n"
"

処理結果
spawn su -
パスワード:
[root@testsv ~]# [user@testsv tmp]$

expect "#"の個所を
" #"
"# "
などにしても変わりませんでした。
記載方法が間違っていると思うのですが、どのように記載をしたらいいでしょうか。

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

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

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

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

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

guest

回答1

0

expect抜けると元のユーザに戻ってしまいます。

そりゃそうです。

切り替えたユーザで後続の処理を進めたいのですが、手段はあるのでしょうか。

expectの中で処理を進めます。interactサブコマンドとか。

「そもそものやりたいこと」を書くともっと良い解決方法がありそうです。

投稿2020/11/17 10:47

編集2020/11/17 10:59
otn

総合スコア85901

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

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

tune-

2020/11/17 12:01

ご回答ありがとうございます。 背景と状況を追加しました。 expect内でエラー判定ができればそちらでも実現できると考えています。 エラー時にはsyslogに出力させる処理を行います。
otn

2020/11/17 12:05

expectの中でuserBやれば良いという事ですね。 どこに困難を感じているのか伝わってきません。
tune-

2020/11/17 12:22

expectの中で、UserBで製品PGMを実行し、その戻り値からエラー判定を行えば実現できるということでよろしいでしょうか。 試してみます。ありがとうございます。
otn

2020/11/17 12:36

そうですね。suに対してsendすれば実行できますので。
tune-

2020/11/17 12:51

ありがとうございます。大変助かりました。
tune-

2020/11/18 15:12

すみません、検証してみましたが動作しませんでした。 検証結果を追記しました。
otn

2020/11/18 15:18

どういう現象でしょうか?
tune-

2020/11/18 15:30 編集

rootログインは処理され以下のような応答後、元のユーザ(user)に戻ってしまいます。 [root@testsv~]# 数秒後 [root@testsv ~]# [user@testsv tmp]$
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問