【问题标题】:Multiple SSH Commands while in a Bash Script [duplicate]在 Bash 脚本中使用多个 SSH 命令 [重复]
【发布时间】:2013-11-21 23:30:48
【问题描述】:

在 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]#

【问题讨论】:

    标签: linux bash shell ssh


    【解决方案1】:

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

    sudo rpm -Uvh rpmtodeploy.rpm
    

    如果您有sudo 访问su 但没有rpm 的权限,请使用-c 选项:

    sudo su -c 'rpm -Uvh rpmtodeploy.rpm'
    

    【讨论】:

    • 如何通过第一个命令传递我的密码? sudo rpm -Uvh rpmtodeploy.rpm
    • @Konnor 你没有。配置sudo 以允许NOPASSWD 用于rpm 命令。如果您无法做到这一点,则必须使用 expect 脚本。
    • 啊,好吧,我之前正在调查。谢谢@jordanm
    猜你喜欢
    • 1970-01-01
    • 2016-03-08
    • 1970-01-01
    • 2011-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-22
    • 2019-05-18
    相关资源
    最近更新 更多