问题描述:想用shell脚本自动部署系统,但是由于需要中途切换到其他用户,所以需要使用su命令进行切换,这时就需要手动输入密码。
问题具体症状:通常网上有很多解决方法,绝大多数会出现如下类似的问题
- su: must be run from a terminal
- 需要安装expect组件,或需要在expect情况下运行脚本。
解决办法:直接使用命令重启一个终端,用sshpass直接传参登陆即可。
gnome-terminal -- bash -c "sshpass -p '用户密码' ssh -t 用户名@IP '需要执行的命令';exec bash"
或
gnome-terminal -- bash -c "sshpass -p '用户密码' ssh -t 用户名@IP '需要执行的命令;exec bash';exec bash"
其中gnome-terminal是打开新的终端命令, sshpass和ssh是远程登陆命令。
感悟:其实很多难题之所以会难到我们,可能是因为我们掉入了自己的惯性思维。这个时候就要多问问自己是否还有其他的方法。