2016-07-26 33 views
0

Verwenden Sie heredoc, um mehrzeilige Befehle auf einem Remote-Computer auszuführen. Der Versuch, pid von einem Server zu erhalten, die Server zu töten in der entfernten Maschine befindetFühren Sie ssh aus und führen Sie den Befehl aus

#!/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 

Fehler: töten: (15015) - Betrieb nicht

erlaubt
+1

Den Wert einem Array zuweisen und dann das erste Element des Arrays holen ist eine völlig nutzlose Ablenkung. Töte einfach $ line "'. Sie [sollte wahrscheinlich nicht 'kill -9'] (http://www.iki.fi/era/unix/award.html#kill) verwenden. – tripleee

Antwort

1

Es heredoc funktioniert gut, aber sudo erwartet Sie eingeben in einem Passwort und es ist kein Terminal mit dem ssh verbunden, der die Befehle auf dem Server ausführt. Sie haben zwei Möglichkeiten, noch sind ganz sicher:

  1. auf dem Server sudo den Benutzer erlauben, ohne ein Passwort
  2. die Linien Legen Sie aus dem heredoc in ein Skript auf dem Server und macht es setUI (klebrig) so dass es als root ausgeführt wird.

Diese gelten im Allgemeinen für die Ausführung von Skripts als root. Ihre andere Option, die für diesen Fall spezifisch ist, besteht darin, sich als der Benutzer anzumelden, der den Serverprozess ausführt, so dass Sie keine Operation erhalten, die vom Kill nicht erlaubt ist.

+0

Ich habe mich als ssh Benutzername @ HOST_IP angemeldet und es hat gut funktioniert –

Verwandte Themen