web-dev-qa-db-ja.com

別のユーザーの画面端末にコマンドを送信する

私には2人のユーザーがいます。 user1とuser2。 user1によって実行されるbashスクリプトがあり、user2によって開始された画面端末でコマンドを実行する必要があります。提案?ありがとうマックス

3
Ben

user2がコマンドを入力したように見せたいですか?

screenの場合、次を使用できます

screen -S user2/sessionname -p windowname -X stuff "~user1/somescript.sh
"

これにより、テキスト~user1/somescript.sh(user1のホームディレクトリ内のファイルを参照)が特定の画面セッションの特定のウィンドウに入力され、改行文字が送信されます。

(はい、2番目の"は改行する必要があります。そうでない場合は、テキストを送信し、画面セッションでReturnキーを押す必要があります。または$'stuff blah\n'を使用します)

これを行うには、user2/sessionnameへの書き込みアクセス権が必要です。 multiuserおよびacladdの説明については、画面のマニュアルページをお読みください。


一般的な「別のttyで実行する」場合は、writevt /dev/pts/X sometextを使用できます。 writevtツールはconsole-toolsパッケージの一部です。ディストリビューションが代わりにkbdを使用する場合は、 writevt.c を取得します。これはLinuxに固有です。

または、user2にoutputを表示させたいだけですか?

./somescript.sh >& /dev/pts/X

ここで、/dev/pts/Xは、user2の画面に属するttyデバイスです。

書き込みアクセスが必要になります。これは、user2がchmod/setfaclを使用して指定するか、Sudoを使用できます。

>& file> file 2>&1と同等であり、stdoutとstderrの両方を指定されたファイルにリダイレクトします。)

4
user1686