运行ssh并执行命令

时间:2016-07-26 06:18:18

标签: bash

使用heredoc在远程计算机上执行多行命令。 试图获取服务器的pid来杀死位于远程机器中的服务器

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

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

1 个答案:

答案 0 :(得分:1)

heredoc工作正常,但是sudo希望你输入密码,并且没有终端连接到服务器上执行命令的ssh。您有两种选择,既不完全安全:

  1. 允许服务器上的用户使用sudo而无需密码
  2. 将heredoc中的行放入服务器上的脚本中,并使其成为setui(粘性),以便以root身份执行。
  3. 这些通常适用于以root身份运行脚本。您的另一个特定于此情况的选项是以运行服务器进程的用户身份登录,这样您就不会从kill中获得操作。