我需要编写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命令之后不要运行其他命令。
感谢。
答案 0 :(得分:0)
脚本中的每一行都是要执行的命令。如果一个命令读取输入,它通常不会从脚本文件中获取它,它从脚本的标准输入中获取它。如果您希望从脚本中读取它,则必须使用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
,您应该能够配置服务启动脚本。