2016-07-26 178 views
0

使用heredoc在远程机器上执行多行命令。 试图让一个服务器的PID杀死该服务器位于远程机器运行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 

错误:杀:(15015) - 不允许操作

+1

将值赋给数组然后获取数组的第一个元素是完全无用的转移。只需“杀死”$ line“'。你[也许不应该使用'kill -9'](http://www.iki.fi/era/unix/award.html#kill)。 – tripleee

回答

1

有定界符工作正常,但须藤期待您键入在密码中,没有连接到执行服务器上的命令的ssh的终端。你有两个选择,也不是完全安全的:

  1. 允许服务器sudo的用户无需输入密码
  2. 将来自定界符行到一个脚本在服务器上,并使其setui(粘),所以它以root身份执行。

这些通常适用于以root身份运行脚本。您的另一个特定于此案例的选项是以运行服务器进程的用户身份登录,以便您不会从kill中获得不允许的操作。

+0

我登录为 ssh username @ HOST_IP,它工作正常 –