プロが教えるわが家の防犯対策術!

sudoコマンドについて質問があります。
Bシェルでtxtファイル内にあるユーザ名、実行コマンドをsudoを用いて実行する処理を作成していますが、sudoコマンド実行時にエラーが出てしまいます。
以下に実装したいことを記載します。

<実装したい内容>
txtファイル内にユーザ名と実行コマンドを準備します。
txtファイルからcutコマンドを使用し、ユーザ名と実行コマンドを抜き出し、変数に格納します。
ここでの区切り文字は「,」とします。
ユーザ名と実行コマンドがそれぞれ格納された変数を使用して、sudoコマンドを実行します。
以下ソースコード
----------------------------------------------------
#!/bin/bash
Line=" "
User=" "
Com=" "
cat test.txt | while read Line
do
User=`echo "${Line}" | cut -d , -f 1`
Com=`echo "${Line}" | cut -d , -f 2`
echo "${User}"
echo "${Com}"
sudo -u ${User} -i ${Com}
done
exit
----------------------------------------------------
test.txtの内容
root,ps -ef
root,ps -ef | grep user
----------------------------------------------------

変数に格納したコマンドを実行する際、一行目のコマンド「ps -ef」は正常に処理が行われるのですが、二行目の「ps -ef | grep user」はエラー(Garbage option)が発生し処理が行われません。
実行詳細を見たところ、コマンドを変数に格納する時は「ps -ef | grep user」で格納されているが、
sudoで実行すると「ps -ef '|' grep user」とパイプの部分に「'」が付与されてしまいます。
どうしたら正常に処理を行うことができるのでしょうか。

A 回答 (1件)

個人的には


sed -e 's/^/sudo -u /; s/,/ -i /' test.txt | bash
とかしたい.
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!