電子書籍の厳選無料作品が豊富!

またシェルスクリプト初心者でっす
調べてみたものの今一つ見つけきれませんでした
ボーンでの質問です

サーバ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できない状態となってしまい、
やりたいことが実現できない状態です

A 回答 (3件)

No2です。


まず、編集ミス。違うことを書こうとして消す行を間違えました。

>あるいは、b.sh の実行ビッドをオンにして、
>su -c 'sh [フルパス]b.sh'
は、

あるいは、b.sh の実行ビッドをオンにして、
su - -c [フルパス]b.sh
また、su - の - は必要が無い限りは書かないのが普通か。

に修正。

あと、ssh に何かオプションがあったはずと調べると、ssh -t だと su でも出来そうです。
    • good
    • 0

まず余談から入りますが、


>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
    • good
    • 0

rootで実行


ssh root@さーばー コマンド

ユーザーでターミナルにログイン。シェルでsu実行
ssh ユーザー@サーバー
→ シェルのプロンプトになるのでsu -

あたりではないかと
    • good
    • 0

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