私はいくつかのタスクの実行を自動化しようとしていますが、sudoとして実行する必要があります。sudoを使って別の端末でコマンドを実行するにはどうすればいいですか?
別々の端末で実行したいので、それぞれの出力を見ることができます。ここで
(私は何をしようとしていますが、より複雑であるため)私はセットアップを持って、最小限の例の一種である
セットアップ2つのファイルは - データが唯一のルートとして読めるであり、例えばテキストの3行が含まれていることに注意してください:
-rw------- 1 root root 33 Nov 15 09:29 data
-rwxrwxrwx 1 root root 11 Nov 15 09:30 test.sh*
test.shは、次のようになります。また、私はbashの起動時における設定である「SESSION_MANAGER」と呼ばれるユーザー・レベルの変数を持って
#!/bin/bash
cat data
read -p "Press enter to continue"
...と思われますいくつかの問題が発生します(後の例を参照)。
これで、このスクリプトを実行しているさまざまな端末を生成します。私は、次の試み:
試み1
xfce4-terminal -e './test.sh'
出力:
cat: data: Permission denied
Press enter to continue
試み2 - sudoを使用開始時
~/src/sandbox$ sudo xfce4-terminal -e './test.sh'
Failed to connect to session manager: Failed to connect to the session manager: SESSION_MANAGER environment variable not defined
(xfce4-terminal:6755): IBUS-WARNING **: The owner of /home/openbts/.config/ibus/bus is not root!
出力:
this is some data
more data
end
Press enter to continue
ここで、データファイルの出力が正常に印刷されていることがわかりますが、セッションマネージャー変数に問題があります。
試み3 - コマンドでsudoを使用して
~/src/sandbox$ xfce4-terminal -e 'sudo ./test.sh'
出力:openbtsため
[須藤]パスワード: これは、いくつかのデータ より多くのデータ エンド を押して
を続行しますここではすべてがうまくいっていることがわかります...しかし、パスワードをもう一度入力する必要がありました。私の自動化を殺す:(
試み4 - ルート
~/src/sandbox$ sudo su
[email protected]:/home/openbts/src/sandbox# xfce4-terminal -e './test.sh'
Failed to connect to session manager: Failed to connect to the session manager: SESSION_MANAGER environment variable not defined
出力として起動:
this is some data
more data
end
Press enter to continue
ここでは、再び出力がよさそうだが、私はこのSESSION_MANAGERの問題を持っています...また、新しいxfce4-terminalは、フォント/ルックアップがうまくいきません - これはrootユーザの設定だと思います。
質問
どのように私は新しいターミナルにtest.shそれぞれの複数のインスタンスを実行し、パスワードを入力します(またはすべてで対話)することはできません。プロセスの開始時に元の端末にパスワードを1回入力することはできますか?
sudo su
に入っているときにこの種の作業をしていますが、この問題はSESSION_MANAGER変数です - 問題であるかどうかはわかりませんが、非常に乱雑ですが、xcfe4-terminal (私は自分のユーザー設定と同じルート設定を変更することができると思う)悪い見えます。ですから、rootとして実行しているときにSESSION_MANAGERの問題を回避するにはどうすればいいですか?
Ljmありがとう、私は確かにこのアイデアのための+1を与えるだろう。私は "本当の"ケースで許可を変更することはできません。なぜなら、実行したいものは、アクセス権が制限されているさまざまなlibs /データベースを使用するすべてのアプリケーションです - しかし、私はログインで保護されているVM(publicではない)パスワードを知っている人なら誰でも、VMを使って自分が望むことをすでに行うことができます。私のユーザー名は "openbts"なので、openbts ALL =(ALL)NOPASSWDL ALLを追加するだけでいいのですか? –
最後に ':ALL'を意味する。type-o –
Ok - これを試したが、うまくいかなかった。私はログアウトして戻ってきました。確かに...喜びはありません。あなたが提案した行に入り、 'xfce4-terminal -e 'sudo。/ test.sh''を実行し、新しいウィンドウでパスワードを入力しなければなりません...:( –