我使用root登录到linux机器,登录后我使用su - oracle连接我的数据库。现在我有2个shell脚本,一个在home home,一个在home / oracle。在home / oracle中,我编写了一个用于备份数据库的脚本。 root中可用的脚本是nohup ssh oracle @ onprem-svcdb /home/oracle/test.sh,在运行脚本时询问oracle的密码,运行脚本时我不需要它是这样的它不需要询问密码,它需要在oracle中运行脚本。那我需要做什么?任何人都可以为此提供帮助
答案 0 :(得分:1)
如果我理解正确,您将获得使用连接到数据库并执行某些操作的脚本的密码提示。如果您不需要密码提示,则需要为登录用户在Linux机器上生成ssh的公钥和私钥,并在数据库中对其进行配置。请看下面的链接
http://docs.oracle.com/cd/E19253-01/816-4557/sshuser-33/index.html
您可以尝试以下
eMesh.transform
来源:https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:142212348066
答案 1 :(得分:0)
你可以尝试期待工具:
您将开始下面的脚本,它将启动您的主sql脚本作为回报,并在出现提示时发送 oracle 密码:
content of /tmp/expect.exp script:
#!/usr/bin/expect -f
# set Variables
set password '***'
set timeout -1
# what to execute
spawn /usr/bin/su oracle -c "/tmp/main_script.sh"
match_max 100000
# Look for passwod prompt
while {1 > 0 } {
expect "*?assword:*"
# Send password aka $password
send -- "$password\r"
}
# send blank line (\r) to make sure we get back to gui
send -- "\r"
expect eof
比你的主脚本存储在(或root home,无论你需要什么目录):
/tmp/main_script.sh content:
su - oracle
drop table; create table; other SQL commands
一个缺点是 - 纯文本密码,存储在脚本
中如何安装:Here
或者您可以尝试修改visudo,例如:
user1 ALL=(user2) NOPASSWD: /bin/bash
其中:user1将被授予" su到user2"没有密码提示。你可以用ALL替换/ bin / bash然后你可以用user2
启动任何命令