【问题标题】:Bash script not work fineBash 脚本不能正常工作
【发布时间】:2017-09-05 11:42:37
【问题描述】:

我需要编写 bash 脚本来启动 oracle DB 一些命令应该使用 user-root 运行,其中一些使用 user-oracle

如何将这些代码制作成 bash 脚本代码

#!/bin/bash

su root
password
rm /var/tmp/.oracle/*

su oracle
lsnrctl start
sqlplus sys as sysdba
startup

但是在我运行这段代码之后,它会询问我 root 密码,并且在 su 命令之后不要运行其他命令。

谢谢。

【问题讨论】:

  • 为什么不将脚本本身作为 sudo 运行并从脚本中删除所有 su
  • 尝试在 su 和用户名之间添加-,因为这提供了一个类似于用户的环境

标签: linux bash terminal


【解决方案1】:

脚本中的每一行都是要执行的命令。如果命令读取输入,它通常不会从脚本文件中获取,而是从脚本的标准输入中获取。如果你想让它从脚本中读取,你必须使用 here-document:

#!/bin/bash

su root <<EOF
password
rm /var/tmp/.oracle/*

su oracle <<EOF1
lsnrctl start
sqlplus sys as sysdba
startup
EOF1
EOF

但是,我不确定这是否适用于 su。它可能不会从标准输入读取密码,而是强制它来自终端。您可能应该使用sudo,您可以将其配置为不需要某些用户和脚本的密码。

或者如果你使用systemd,你应该可以配置一个服务启动脚本。

【讨论】:

    猜你喜欢
    • 2011-06-13
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    • 2018-03-12
    • 1970-01-01
    • 2017-10-27
    • 2018-05-06
    • 1970-01-01
    相关资源
    最近更新 更多