How to ssh/sudo su - oracle/run some commands
我已经查看了以下链接,但没有成功使其工作:
ssh到server,sudo su-然后在bash中运行命令
我可以在某个地方ssh,运行一些命令,然后给自己留下一个提示吗?
运行ssh并立即执行命令
我正在尝试自动执行以下顺序以登录到数据库
1 2 3 4 5 6 7 8 | $ 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 |
我尝试了该命令(基于上面的链接),但它不起作用:
1 | 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文件。你需要做一些研究,让它在你的环境中工作,但这给出了一个总体的想法。
1 2 3 4 5 6 7 8 9 10 11 12 13 | spawn ssh [email protected] expect"~$" send"sudo bash " expect { password {send"foobar ";exp_continue} "#" } send"id " expect"root" |
您可以将其作为expect/path/to/your/expectfile运行。
这将登录,用密码"foobar"做sudo,执行id并退出。这有什么帮助吗?
汉努