关于使用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。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值