【问题标题】:Hiding plain text password with sqlplus command line使用 sqlplus 命令行隐藏纯文本密码
【发布时间】:2019-02-20 16:31:34
【问题描述】:

我希望使用隐藏密码的 sqlplus 命令,这样它就不会显示在 ps -ef 命令上。

我知道互联网博客上提供了很多解决方案,但其中大多数似乎都需要管理员权限,而且我在此服务器上的访问权限受到限制。其余的似乎对我不起作用。

我目前使用的命令如下:

sqlplus -s SOME_USERNAME/SOME_PASSWORD@somedns.intra.com:1500/SOMESID @some.sql

传说:

SOME_USERNAME:架构/用户

SOME_PASSWORD:密码

SOMESID:此数据库的 SID。

@some.sql:包含插入语句的 sql 文件。

非常感谢任何指针。

更新:忘了说这个 sqlplus 命令将在 shell 脚本中使用。

【问题讨论】:

    标签: oracle sqlplus


    【解决方案1】:

    在这种情况下,如何在 shell 脚本中输入密码?

    你可以使用a heredoc:

    sqlplus -s /nolog <<!EOF
    connect SOME_USERNAME/SOME_PASSWORD@somedns.intra.com:1500/SOMESID
    @some.sql
    !EOF
    

    connect@some.sql 被视为 SQL*Plus 的输入流,就像您在交互式会话中键入它们一样,并且不是对可执行文件的初始调用的一部分 - 因此连接详细信息不要出现在ps 输出中。

    如果您愿意,您也可以使用变量,顺便说一句,因为变量扩展发生在 shell 中,然后它将流传递给可执行文件 - 所以即使 SQL*Plus 不理解说 $PASSWD,指的是在heredoc中工作并传递实际变量值。

    【讨论】:

    • 感谢您的回复。只有第一个解决方案对我有用。 (有连接的一个)第二个失败如下: {{ Enter password: ERROR: ORA-01005: null password given;登录被拒绝 SP2-0306:无效选项。用法:CONN[ECT] [{logon|/|proxy} [AS {SYSDBA|SYSOPER|SYSASM}] [edition=value]] where ::= [/][@] SP2-0157:3 次尝试后无法连接到 ORACLE,退出 SQL*Plus }} 但是非常感谢您提供的第一个解决方案。我将使用它。非常感谢。
    • 嗯,我确信有办法做到这一点 - 虽然使用 echo 标准输入也不起作用 - 但它现在让我无法理解。因为第一个适合你,我不会太担心......
    【解决方案2】:
    • 使用sqlplus -s SOME_USERNAME@\"somedns.intra.com:1500/SOMESID\" @some.sql 并在命令行输入您的密码。

    • 或者使用外部认证,根本不使用密码

    • 最后,SOMESID 不是 SID,它是服务名称。您使用的 Easy Connect 语法仅适用于服务名称。 SID 非常老派。

    【讨论】:

    • 我忘了说这个 sqlplus 命令将在 shell 脚本中执行。让我更新一下主要问题。
    • 在这种情况下,如何在 shell 脚本中输入密码?
    猜你喜欢
    • 2015-01-05
    • 1970-01-01
    • 1970-01-01
    • 2019-09-10
    • 2016-07-17
    • 1970-01-01
    • 2021-09-13
    • 2021-08-13
    • 2014-11-21
    相关资源
    最近更新 更多