2016-09-05 9 views
0

私はサーバ上にあり、次のコードを持つスクリプトファイルを実行しています。sudoが完了したらスクリプトに戻る方法

ssh [email protected] 
sudo su - root 
cd /abc/xyz 
mkdir asdfg 

私はsshを実行できますが、次のコマンドが動作していません。スクリプトはsudo-ingではありません。何か案が?

編集:mech idを作成してから、できること..まだ上記の質問に対する答えを探しています。

+0

あなたのシェルにはどんなエラーがありますか? –

+0

@StevenSchobert - エラーはありません。私はservernameボックスにいます。私が始めたところから戻らないようにしてください。 – mb47

+0

'exit'を試してみませんか?がんばろう。 – shellter

答えて

2

まず、コマンドは対話モードになるため、最初の行に「スタック」します。 sshコマンドを使用するには、ユーザーがパスワードを入力する必要があります(sshkeyが使用されている場合を除く)。また、sshがリモートサーバにログインしている場合、sshは標準入力からのユーザコマンドを待ちます。

第2に、sshコマンドに続く行は、最初のプロセスが終了したときにのみ実行されます。これがあなたのスクリプトが "sudoing"していない理由です.SSHが終了するのを待っています。

したがって、リモートサーバでコマンドを実行する場合は、ssh接続と同じ行にパラメータとしてコマンドを入力します。あなたの場合:

これはあなたにとって満足できません。リモートサーバーで実行したいスクリプトを作成してスクリプトを実行することをお勧めします。

ssh [email protected] scriptName 

もう一度スクリプトはとても挿入するパスワードを待って対話モードで動けなくなる可能性があるため、ここでのsudo事は非常にトリッキーである私は、スクリプトに基づいてもう一度考え示唆しています。

+0

こんにちは、入力していただきありがとうございます。私はsshのパスワードを提供しています。パスワードを入力したら、sudoコマンドは実行されません。私はソースサーバではなく、ターゲットサーバにいます。 – mb47

+0

sshのパスワードを入力する場合は、スクリプトを手動で実行します。もしそうなら、リモートサーバ上でsudo/suパスワードを提供することもできます。私はあなたがリモートサーバー上でスクリプトを作成し、sshパラメータとして接続後にリモートでスクリプトを実行することをお勧めします。リモートサーバで 'runme.sh'というスクリプトファイルを作成し、実行したいlinexをそのスクリプトに入れてください – Maciej

0

mb47!
リモートコンピュータでスクリプトを実行したいですか?
リモートマシンで、実行するコマンドを含むファイルを作成します。
次に、他のマシンで実行してくださいssh [email protected] /path/to/script/you/created/earlier
私はこれが助けてくれることを願っています!

ALinuxLover

関連する問題