首页 > 解决方案 > Unix: 'su user' 不工作并且在 SSH 中保持 root 如果条件

问题描述

我一直在研究 bash 脚本并且遇到了奇怪的问题。基本上,我从本地服务器以 root 身份通过 SSH 连接到远程服务器并尝试运行一些命令。其中一个命令是将用户从 root 更改为服务帐户。为此,我使用命令“su”并将其更改为服务帐户。但奇怪的是,当我在“if condition”中运行相同的命令时,它只保留为 root 帐户。这是代码片段:

  echo "Enter host name you want to start: "
  read remote

  echo "Enter password for $customDNS : "
  read -s remote_pass

  sshpass -p$remote_pass ssh -T -o StrictHostKeyChecking=no $remote <<EOF
      ps -ef | grep -i tomcat | grep -i bootstrap | awk '{print \$2}'
      su serviceAccount --------------------> This command works fine

      if [ -z "\$(ps -ef | grep -i tomcat | awk '{print \$2}')" ]
        then
          echo "$remote: Need to start server"
          su serviceAccount -----------> This doesn't work
          startup.sh
        else
          echo "$remote: Already up and running"
      fi
      echo "#######################################################"
      echo
EOF

请帮忙!

谢谢, 席德

标签: linuxunixsshcommand-linesu

解决方案


推荐阅读