我已经查看了以下链接,但没有成功使其工作:
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并退出。这有什么帮助吗?
汉努