繁体   English   中英

如何ssh / sudo su-oracle /运行一些命令

[英]How to ssh/sudo su - oracle/run some commands

我已经看过以下链接,但未能使其正常工作:

SSH到服务器,Sudo su-然后在bash中运行命令

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

运行ssh并立即执行命令

我正在尝试按照以下顺序自动登录数据库

$ ssh <myserver>
me@myserver$ sudo su - oracle
<enter password>
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不需要密码,因为我们使用authorized_keys, 但是没有密码的sudo既不是选项,也不是直接使用su(我不是root用户,不能更改它),该命令必须完全是“ sudo su-oracle”。

谢谢

您不能在shell中执行此操作,但是可以使用Expect进行操作(如果在Debian变体上,则可以使用apt-get install Expect)。

这是一个非常简单的期望文件。 您需要进行一些研究才能使其在您的环境中正常工作,但这给出了总体思路。

spawn ssh foo@x.x.x.x
expect "~$"
send "sudo bash\r"
expect {
       password {send "foobar\r";exp_continue}
       "#"
}

send "id\r"
expect "root"

您可以按预期的/ path / to / your / expectfile来运行它。

这将登录,使用密码“ foobar”执行sudo,执行id并退出。 这对您有帮助吗?

汉奴

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM