- 締切済み
別サーバの実行ユーザの変更
またシェルスクリプト初心者でっす 調べてみたものの今一つ見つけきれませんでした ボーンでの質問です サーバA上のシェルスクリプト(a.sh)からSSHでサーバBへログインし、 サーバB上のシェルスクリプト(b.sh)を実行させようと思い a.sh内に下記の記述を施しました ssh [ユーザ名]@[サーバ名] "su - ; sh [フルパス]b.sh" この記述を施したa.shをサーバA上で実行したところ standard in must be a tty と端末がないと表示され、実行ユーザが変更されませんでした いろいろ調べてsudoでやるといいという話があったので a.sh内のsuをsudo(-s)に変更して試したところ、 今度はパスワードを聞かれたのですが、パスワード入力がマスクされず、 パスワードを入力すると応答が返ってこなくなりました 質問としてはサーバBの実行ユーザを変更するにはどうすればよいか となります よろしくお願いいたします ※b.sh自体はshコマンドで実行はされます ただ、内部でプロセスをkillしようとするのですが、 そのプロセスのユーザかあるいはrootにならなければ killの権限がないのでkillできない状態となってしまい、 やりたいことが実現できない状態です
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- notnot
- ベストアンサー率47% (4900/10358)
No2です。 まず、編集ミス。違うことを書こうとして消す行を間違えました。 >あるいは、b.sh の実行ビッドをオンにして、 >su -c 'sh [フルパス]b.sh' は、 あるいは、b.sh の実行ビッドをオンにして、 su - -c [フルパス]b.sh また、su - の - は必要が無い限りは書かないのが普通か。 に修正。 あと、ssh に何かオプションがあったはずと調べると、ssh -t だと su でも出来そうです。
- notnot
- ベストアンサー率47% (4900/10358)
まず余談から入りますが、 >su - ; sh [フルパス]b.sh su で、特定コマンドを実行するやり方が間違っています。 su - -c 'sh [フルパス]b.sh' あるいは、b.sh の実行ビッドをオンにして、 su -c 'sh [フルパス]b.sh' です。 回答としては、お調べの通り sudo を使います。 ssh [ユーザ名]@[サーバ名] sudo [フルパス]b.sh [sudo] password for ユーザ名: に対して、rootでなくssh先ユーザのパスワードを入れます。 >今度はパスワードを聞かれたのですが、 具体的なメッセージは? /etc/sudoers の 下記のあたりの記述は、どうなってますか?有効?コメント? !visiblepw? Defaults requiretty Defaults visiblepw
- kmee
- ベストアンサー率55% (1857/3366)
rootで実行 ssh root@さーばー コマンド ユーザーでターミナルにログイン。シェルでsu実行 ssh ユーザー@サーバー → シェルのプロンプトになるのでsu - あたりではないかと