【问题标题】:How to switch user in AIX shell script?如何在 AIX shell 脚本中切换用户?
【发布时间】:2013-02-05 01:40:16
【问题描述】:

我想从 shell 脚本运行 DB2 查询。我有一个用户 db2inst1 需要执行 DB2 语句。我正在运行一个使用 root 用户运行 shell 脚本的应用程序。如果我将用户切换到 db2inst1。我可以完成这项工作。

以下是与db2inst1 完美结合的我的 scipt。

#!/bin/sh
db2 "connect to customerdb"
db2 "set schema = db2inst1"
db2 "insert into tbl_customer(name,occupation) values ('Alex','Admin')"

查看它就像 root 必须运行它一样。所以root用户会让脚本在执行db命令之前先切换用户。

我的应用程序将调用此 shell 脚本,该脚本将使用 root 用户。

如何在脚本中切换用户?我是 shell 脚本的新手。

【问题讨论】:

    标签: db2 aix su


    【解决方案1】:

    当您以root 运行时,您可以使用:

    su dbinst1 -c './your_script arg1 arg2 ...'
    

    如果你不是以root 运行,生活会更艰难。

    【讨论】:

    • 我的应用程序将调用这个使用 root 用户的 shell 脚本。我希望每件事都在脚本中。我试过了:su db2inst1 -c 'db2 CONNECT TO customerdb USER db2inst1 USING admin; db2 -c -i - w -td@ -f /u01/IBM/workspace/addcustomer.sql' 但我得到了ksh: db2: not found.
    • 环境可能设置不正确;特别是,$PATH 可以(重新)设置为默认值,该默认值不包括 db2 命令的安装位置。您可能还需要设置一些其他环境变量。这将在yourscript 文件中完成——不管你叫它什么名字。或者它会被写成一个庞大的多行命令,但运行脚本通常更整洁。
    • 在脚本中的每条语句中添加su - dbinst1 -c 就可以了。现在我的脚本是:su - db2inst1 -c 'db2 connect to customeradb user db2inst1 using admin' su - db2inst1 -c 'db2 -tvsf /u01/IBM/workspace/addcustomer.sql'
    • 我不知道为什么你需要成为 root 然后使用su 以另一个用户身份执行脚本。这使事情变得不必要地复杂。为什么不授予正在执行脚本的 ID(即运行应用程序的 ID)对表的 INSERT 访问权限?
    猜你喜欢
    • 1970-01-01
    • 2018-07-19
    • 2019-08-26
    • 1970-01-01
    • 2010-11-16
    • 2013-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多