在 shell 脚本中使用 su

cmc*_*loh 12 su ssh bash sudo

我正在自动化部署过程,我希望能够在我的机器上调用一个 .sh 文件,让它完成我的构建并将 .zip 上传到服务器,然后在服务器上做一些事情。我需要做的一件事要求我是 root。所以,我想做的是:

ssh user@172.1.1.101 <<END_SCRIPT
su - 
#password... somehow...
#stop jboss
service server_instance stop
#a bunch of stuff here
#all done!
exit
END_SCRIPT
Run Code Online (Sandbox Code Playgroud)

这甚至可能吗?

med*_*ina 15

您是否考虑过使用无密码 sudo ?


Jer*_*y M 5

而不是 su,使用 sudo 和在 sudoers 中设置的 NOPASSWD 以获取适当的命令。您需要尽可能限制允许的命令集。如果您不熟悉 sudoer 文件语法,让它调用为 root 命令运行脚本可能是最干净的方法,也是迄今为止最容易确保安全的方法。对于需要加载完整环境的命令/脚本,sudo su - -c command虽然可能有点矫枉过正。