BASH脚本以SSH方式连接到另一台服务器,并以用户身份运行命令
我在论坛和谷歌上读了很多书,但是我找不到解决这个问题的方法 基本上,我的脚本是在本地机器上运行的,然后用不同的用户名SSH连接到一个服务器上(在这里之前它一直工作),在这台机器上,我需要运行一些命令(它们不运行) 以下是代码中不起作用的部分:BASH脚本以SSH方式连接到另一台服务器,并以用户身份运行命令,bash,ssh,cpanel,Bash,Ssh,Cpanel,我在论坛和谷歌上读了很多书,但是我找不到解决这个问题的方法 基本上,我的脚本是在本地机器上运行的,然后用不同的用户名SSH连接到一个服务器上(在这里之前它一直工作),在这台机器上,我需要运行一些命令(它们不运行) 以下是代码中不起作用的部分: if [[ "${TYPE}" == "cPanel" ]]; then #Connect to the server with credentials defined earlier in the script - works prop
if [[ "${TYPE}" == "cPanel" ]]; then
#Connect to the server with credentials defined earlier in the script - works properly.
ssh $USER@$HOST -p $PORT
#Get the domain by the username - works properly
user=$(sudo grep ${DOM} /etc/userdomains)
#Extract only the username from the above string - works properly
userNew=$(echo ${user} | awk 'END {print $NF}')
#Log in as the new username - works properly
sudo su -s /bin/bash ${userNew}
fi
这是一个cPanel服务器,我需要作为cPanel用户之一登录
请帮忙
另外,当在cPanel服务器上运行时,上述脚本可以正常运行。只有在本地机器上调用SSH脚本时,它才起作用。如果要在远程服务器上运行该命令,则需要将它们放在SSH命令的末尾。您的脚本目前正在使用SSH连接到远程服务器,但只是在那里为您提供一个交互式shell 你需要这样的东西:
ssh $USER@$HOST -p $PORT <command to execute>
ssh$USER@$HOST-p$PORT
使用:
if[[“${TYPE}”==“cPanel”];然后
ssh$USER@$HOST-p$PORT我不确定这是否是一个自动回复,但我仍然意识到我的问题的答案绝对正确。问题是,在测试中,我并没有提到我需要保持登录到那个服务器,因为我并没有说明,所以回复并没有回答。我仍然投票给所有参与的人,并标出了正确的答案,因为根据我提出的问题给了我一个正确的答案。
if [[ "${TYPE}" == "cPanel" ]]; then
ssh $USER@$HOST -p $PORT << \EOF
#Get the domain by the username - works properly
user=$(sudo grep ${DOM} /etc/userdomains)
#Extract only the username from the above string - works properly
userNew=$(echo ${user} | awk 'END {print $NF}')
#Log in as the new username - works properly
sudo su -s /bin/bash ${userNew}
EOF
fi