2016-07-26 16 views
0

heredocを使用して、リモートマシン上で複数行のコマンドを実行します。 リモートマシンにsshを実行してコマンドを実行します。

#!/bin/bash 

HOST_IP="10.180.5.23" 
read -p "For HOST RESTART press 1" num 
if [ "$num" == "1" ] 
then 
ssh -t -t $HOST_IP << 'EOSSH' 
line=$(pgrep -f host_server1) 
echo $line 
arr=($line) 
sudo kill -9 "${arr[1]}" 
EOSSH 
fi 

エラーあり、そのサーバー殺すために、サーバのPIDを取得しよう:殺す:(15015)を - 操作は

+1

値を配列に代入し、配列の最初の要素をフェッチするのは全く役に立たないです。単に$ line "を" kill "します。あなたは[kill -9'(http://www.iki.fi/era/unix/award.html#kill)を使用していないはずです。 – tripleee

答えて

1

を許可されていないそこヒアドキュメントが正常に動作しますが、sudoは、あなたが入力することを期待していますパスワードを入力すると、サーバにコマンドを実行しているsshに端末が接続されていません。あなたは、2つのオプションがありません、どちらも完全に安全である:そう

  1. サーバー上でスクリプトにヒアドキュメントからのラインを入れて、それがsetui(粘着性)を作るパスワードなしでsudoをするには、サーバー上のユーザーを許可しますそれはrootとして実行されます。

これらは、一般にルートとしてのスクリプトの実行に適用されます。このケースに固有の別のオプションは、サーバープロセスを実行しているユーザーとしてログインして、killから許可されていない操作を取得しないようにすることです。

+0

私は ssh username @ HOST_IPとしてログインして正常に動作しました –

関連する問題