• ベストアンサー
  • すぐに回答を!

シェルの実行中にユーザ切り替えてコマンド実行

はじめまして。 シェル初心者です。 shell.shをrootユーザでクーロン実行していますが、 shell.shの処理の中で、違うユーザでコマンド実行したいのですが、 可能かどうかも、方法が分かりません。 教えていただけないでしょうか。 環境はLinuxです。 下記のコマンドを実行したいです。 リモートでログインしてコマンド実行結果を取得する ssh -l tomcat server_tomcat grep test /tmp/test.log ※他のユーザでsshを実行してコマンド結果を取得したいです。 以上。宜しくお願い致します。

共感・応援の気持ちを伝えよう!

  • 回答数1
  • 閲覧数25909
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.1
  • root139
  • ベストアンサー率60% (488/809)

同じマシンの違うユーザでコマンド実行するのは下記の様に su の -c オプションで出来ます。 su -l 実行したいユーザ -c '実行するコマンド' ですので、件のsshコマンドを実行したい場合は↓の様になります。 su -l 実行したいユーザ -c 'ssh -l tomcat server_tomcat grep test /tmp/test.log'

参考URL:
http://itpro.nikkeibp.co.jp/article/COLUMN/20060227/230892/?ST=oss

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございます。

関連するQ&A

  • PHPからシェルコマンドの実行

    PHPからシェルコマンドを実行したいのですが SSHやSCPコマンドが使えません。 phpからlsなどは問題なく実行できます。 具体的には以下のように書いています。 `scp test.log user@host:/home/hoge`; shell_exec()を使っても実行されませんでした。 環境は以下のとおりです。 PHP 5.4.17 CentOS 5.8 sshやscpコマンドをphpから実行するには何か特別な方法が必要なのでしょうか。 ご存知の方、教えてください。

    • ベストアンサー
    • PHP
  • Solaris rmコマンドをシェルで実行するとうまくいかない

    オラクルのアーカイブログを定期的に削除するシェルを作ったのですが、rmコマンドがうまくいきません。使っている環境はkshで、業務の都合上rootユーザでシェルを実行しています。 コマンド:/bin/rm -fr /mnt01/arch01/*.log ちなみに、rootユーザでプロンプトからコマンドを手で実行すると削除ができます。 何が原因なのか見当がつかない状況に陥っています。宜しくお願いします。

  • perl リモートでコマンド実行結果取得

    perl 初心者です。 Perlでリモートログイン後grep結果を取得する方法で分からないことがあり質問しました。 rootユーザで実行するPPP.plスクリプト内で、他のサーバにsshでログイン後grepの結果を取得しようと考えていますが、rootユーザでPPP.plを実行しスクリプト内でsshを実行するとパスワードを聞かれてしまいます。 そこで、他のユーザAAAでPPP.plを実行し、sshを実行するとパスワードは聞かれない設定になっているそうです。(詳細は分かりませんが) そこで、実現方法について下記のように考えていますが、他の方法、sshのオプション等他の考えが、あれば教えてください。確認する環境がなくて実行していませんのであっているかも分かりません。 PPP.pl実行サーバ:server1 ssh先のサーバ:server2 PPP.plの実行ユーザ:ROOT パスワードが聞かれないserver1のユーザ:AAA server2のログインユーザ:AAA ※PPP.plの実行ユーザはrootから変更はできません --------------------------------------- #ユーザAAAに変更 system("su - AAA"); #server2のgrep結果取得 my @rtn_grep = `ssh -l AAA server2 grep test /var/log/msg.log`; if($? != 0){ exit; } ## grep結果を参照 XXXX #rootユーザに戻る system("exit"); -------------------------------- 以上です。宜しくお願い致します。

    • ベストアンサー
    • Perl
  • solarisのシェルについて(sedコマンド)

    こんにちわ solarisのBシェルを現在使用しているのですが、 sedコマンドを使用して"を消したいのです。 具体的には # cat /tmp/test.log |sed | sed -e "s/"//g" というようなコマンドを打ちたいのですが、 この場合はどのようにすればよいのでしょうか? よろしくお願いします。

  • クーロンでシェル実行、JAVAコマンドが動かない・・

    クーロンにて、シェルを自動起動し、JAVAコマンドを動かそうとしています。 cron → abc.sh実行 └def.sh実行 └JAVAコマンド実行 という位置付けです。 まず、 0 3 * * * sh /usr/src/sh/abc.sh という設定にてクーロンを自動実行しようとしました。abc.shの内容はこうです。 #!bin/sh /bin/sh /usr/src/sh/def.sh> /log/def.txt def.txtというテキストは生成されるのですが、def.shが実行されていません。。 def.shの中身はjavaコマンドで、 java aaa.bbb.ccc.ddd/conf/repair.properties というものです。 また、念のため、クーロンに直接 0 3 * * * /bin/sh /usr/src/sh/def.sh ともやってみましたが、結果は同じでした。 どうすればdef.shがちゃんと実行されるでしょうか? そもそもjavaコマンドをクーロンですることはできないのでしょうか?

  • Bシェル内でのユーザー変更

    お世話になっております。 あるBシェルをJP1に登録しジョブ実行しようとしています。 Bシェル内には複数の処理があり、必要に応じてユーザー変更を行う必要があるのですが上手く行きません。 なお、禁止事項にrootユーザーでJP1実行、suid、guidの未指定があり上手く対応が出来ません。 どなたか上手く行く方法をご存知ありませんか? 行いたい処理は以下の通りです。 (1)実行ユーザーで実行 (2)posgreユーザーでログイン (3)ダンプファイルを取得 (4)posgreユーザーをログアウト (5)sshユーザでログイン (6)ダンプファイルを移動 (7)sshユーザをログアウト (8)終了 環境は シェルはBシェル OSはRHEL5.3 です。

  • 他ユーザーのシェル実行

    OSはredhat linuxです。 aaausrとbbbusrの2つのユーザーを作成しています。 このうちaaausrからbbbusrのシェルをbbbusrとして実行したいと 考えています。 また、rshやsshは使用しないで実現したいと考えています。 このような事は実現可能なのでしょうか?。 分かる方がいらっしゃればお教え頂ければと思います。 以上です。

  • 【Linux】シェルの実行方法を教えて下さい。

    【Linux】シェルの実行方法を教えて下さい。 ファイルの中身が#!/bin/bashで始まる拡張子shのシェルがあります。 これを実行するには、どのようなコマンドを打てばよいのでしょうか? 1.rootでログイン。 2.test.shがあるフォルダに、cdで移動する。 3.test.shと入力し、Enterキーを押す。 ↑みたいな感じで良いのでしょうか。 テスト用サーバなので、最悪壊しても良いと上司に言われましたが、 なにぶん時間がないため質問させていただきました。 Redhatでバージョンが3か4だったと思います。 よろしくお願いします。

  • シェルの実行履歴

    はじめまして。 会社にてBTSの管理をすることになったのですが、 システムが落ちた際に自動で起動するシェルが動いていない様で困っています。 仕組みとしては checkシェルが1分ごとに動き監視→落ちていると判断すると、restartシェルが動く という感じです。 ですが朝来ると落ちていることがたまにあり、 たぶんどこかのシェルが正しく動いてないんじゃないか?と思っています。 そこでまず、 checkシェルが正しく動いているのか? を調べようと思いシェルの実行履歴とか見れないのかな? と思い探していたのですが、うまく見つからず困っています。 一応checkシェルも記載いたします。 個人的に怪しいなと思っている箇所は、[怪しい] と記載されている辺りです。 これを作成した人が何も情報を残さずにやめてしまって、どういう根拠で条件を設定しているのか不明なんです。 ---------------------------------------------- #!/bin/sh tomcat_home=/usr/local/scarab-1.0-b20/tomcat chk_log=$tomcat_home/logs/catalina.out while true do btspid=`ps ax | grep "\[java\]" | awk '{print $1}'` [怪しい] isAlive=`tail -n 261 $chk_log | grep OutOfMemoryError | wc -l` if [ $isAlive -lt 3 ]; then echo "scarab is still alive, error count = $isAlive : pid = $btspid" else echo "scarab is dead... errot count = $isAlive ; pid = $btspid" ~/restart.sh # break fi sleep 60 done ------------------------------------

  • シェルのコマンドの仕組み

    シェルのコマンドの仕組みについて教えてください。 1、シェルのコマンドはシェルのフォルダにコンパイルされて保存されてるのでしょうか? 2、ユーザが打ったコマンドをシェルが解釈するときそのフォルダを検索して目当てのコマンドのプログラム実行してるのでしょうか? 間違えていたら、補足お願いします。