su -s oracle,关于shell:如何ssh / sudo su – oracle /运行一些命令

我已经查看了以下链接,但没有成功使其工作:

ssh到server,sudo su-然后在bash中运行命令

我可以在某个地方ssh,运行一些命令,然后给自己留下一个提示吗?

运行ssh并立即执行命令

我正在尝试自动执行以下顺序以登录到数据库

$ ssh

me@myserver$ sudo su - oracle

oracle@myserver$ bash

oracle@myserver$ export ORAENV_ASK=NO

oracle@myserver$ export ORACLE_SID=ORACLEDB

oracle@myserver$ . oraenv

oracle@myserver$ echo $ORACLE_HOME

我尝试了该命令(基于上面的链接),但它不起作用:

ssh -t myserver"echo password | sudo -S su - oracle ; bash ; export ORAENV_ASK=NO"

如何在shell脚本(甚至Perl脚本)中组合这些命令,执行它,然后将自己留在一个提示下,以便在之后运行sqlplus?这是可能的吗?

注:ssh不需要密码,因为我们使用的是授权的密钥,但是无密码sudo不是一个选项,也不是直接使用su(我不是根用户,不能更改),命令必须是"sudo su-oracle"。

谢谢

在shell中不能这样做,但可以使用expect(apt-get-install-expect-if-on-debian变体)。

这是一个非常简单的expect文件。你需要做一些研究,让它在你的环境中工作,但这给出了一个总体的想法。

spawn ssh foo@x.x.x.x

expect"~$"

send"sudo bash

"

expect {

password {send"foobar

";exp_continue}

"#"

}

send"id

"

expect"root"

您可以将其作为expect/path/to/your/expectfile运行。

这将登录,用密码"foobar"做sudo,执行id并退出。这有什么帮助吗?

汉努

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值