关于使用su切换用户之后,命令无法…
在第一部分中,我们讲了使用expect和spawn结合的方法,来实现切用户执行命令的例子。
第一部分的地址是:https://blog.csdn.net/wx740851326/article/details/72302935
这一部分,我们来看下如何切换命令后调用脚本
看以下例子:
export cmd1="sh test.sh\r"
echo $cmd1
expect -c "
spawn su -user1
expect \"Password:\"
send \"mypassword!123\"
expect \"\$ \"
send \"$cmd1\"
#前面都是一致的,只是send中输入的是执行脚本的命令,建议使用sh来调用脚本,不要忘了最后的\r
expect \"\$ \"
send \"echo end\r\"
#上一部分中就有提过,如果只是单纯的执行了命令之后,很有可能得不到输出
#或者前一个命令压根就没有执行,因此,我采取了多增一条命令的形式,来保证输出
"
以上就是调用脚本的举例,调用脚本是在命令繁多的情况下使用的,对于一些简单的情景下我们可以使用一些简单的形式来su用户,举例如下:
su - impala -c "
/usr/bin/impala-shell -i 192.168.1.129:21000 << EOF
invalidate metadata;
EOF
"
此处我使用了su - impala来切换到impala用户,并加了-c参数,使得后面的内容能够以命令行的形式输入.
-c命令就能够解决这种简单的情景,复杂的命令我们还是要使用expect结合spawn。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端