2017-08-29 11 views
0

スクリプトを途中で実行するスクリプトがあります(たとえば、bob)に切り替えてそのユーザーの環境を使用して別のスクリプトを実行したい。スクリプトの終わりに私はrootに戻り、より多くのコマンドを実行したい。私はbobのパスワードを入力せずにこのスクリプトを実行したいと思います。スクリプトでユーザーを切り替えて別のスクリプトを実行する方法

このスクリプトは、初回起動時にユーザーデータ機能を介してAWS EC2インスタンスに提供されます。

これを行う方法は、sudoまたはsuを使用することだと思いました。しかし、私はこれらの方法のいずれかでボブの環境にアクセスすることはできません。下記の標準出力エコーで

は、このスクリプトは、sudoで実行されたときには、その値が設定されていない....

[email protected]:~/workspaces/sandbox$ su --login bob 
Password: 
[email protected]:~$ cat bin/echo.sh 
#!/bin/bash 

echo "In echo.sh.. myvar is {$myvar}" 

echo "Now executing the ruby script" 
. ~/.bashrc 
~/bin/echo.rb 
[email protected]:~$ cat bin/echo.rb 
#!/usr/bin/env ruby 
puts "$myvar is: #{ENV['myvar']}" 

[email protected]:~$ bin/echo.sh 
In echo.sh.. myvar is {Inara} 
Now executing the ruby script 
$myvar is: Inara 
[email protected]:~$ exit 
logout 

[email protected]:~/workspaces/sandbox$ cat test.sh 
#!/bin/bash 
stty echo 
sudo --login -u bob bin/echo.sh 

[email protected]:~/workspaces/sandbox$ ./test.sh 
In echo.sh.. myvar is {} 
Now executing the ruby script 
$myvar is: 
+0

一つの方法は、実行することです:suを使用して-ボブとしてログインシェルを起動する(裸-ずにいることをやっていない)と-cコマンドを実行するように依頼する必要な特権を得るためにローカルのSSHサーバー。コマンドをbob: 'ssh bob @ localhost - command'として呼び出すことができます。 bobの公開鍵を '$ HOME/.ssh/authorized_keys'に入れると、パスワードプロンプトはスキップされます。それはLinux環境ですか? –

答えて

0

あなたはおそらくある環境変数MYVARはのInaraに初期化されていることがわかりますこれらのいずれかを探して:

sudo -i -u bob [command] 

か、を使用します。

-uユーザbobの-i初期環境をシミュレート

sudo su - bob -c [command] 
+0

提案マイケルありがとう。私は試しました - ログインしますが、ドキュメンテーションの宣伝にもかかわらず私に環境を与えられませんでした。私はあなたのレビューのために上記の私のオリジナルの投稿を編集しました。 – Mercutio

関連する問題