[英]How to ssh/sudo su - oracle/run some commands
我已经看过以下链接,但未能使其正常工作:
我正在尝试按照以下顺序自动登录数据库
$ 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.