在Bash脚本中的多个SSH命令

时间:2013-11-21 23:30:48

标签: linux bash shell ssh

在bash脚本的一个部分中,我需要ssh到远程框中,更改为root,然后部署rpm。我的代码在更改为root后卡住了,我不知道为什么。任何帮助将不胜感激。理想情况下,我希望它能够进入ssh,切换到root,部署rpm,然后退出ssh会话。

user="user"
host="hostname"
echo "Enter password: "
read -s pw
ssh -t "$user"@"$host" "sudo su; $pw; rpm -Uvh rpmtodeploy.rpm;"

这是我目前得到的:

  

user @ localhost:〜$ bash rpm.sh

     

输入密码:

     

[root @ hostname / home / user]#

1 个答案:

答案 0 :(得分:1)

除非你背景命令,否则bash会在执行下一个命令之前等待它退出。由于su正在生成一个交互式shell,它将继续运行直到您关闭它。你应该直接使用sudo:

sudo rpm -Uvh rpmtodeploy.rpm

如果您sudo su访问rpm但访问-c,请使用sudo su -c 'rpm -Uvh rpmtodeploy.rpm' 选项:

{{1}}