LDAPユーザー「exp」からユーザー「oracle」に特定のコマンドセットを実行したいと思います。
たとえば、
exp@linuxtest -]$ sudo -u oracle \"export ORACLE_HOME=/u01/app/oracle;echo $ORACLE_HOME;export PATH=$PATH:$ORACLE_HOME/bin;$ORACLE_HOME/bin/exp full=y
上記のコマンドを試しましたが、次のエラーが発生しました。
usage: sudo [-D level] -h | -K | -k | -V
usage: sudo -v [-AknS] [-D level] [-g groupname|#gid] [-p prompt] [-u user name|#uid]
usage: sudo -l[l] [-AknS] [-D level] [-g groupname|#gid] [-p prompt] [-U user name] [-u user name|#uid] [-g groupname|#gid] [command]
usage: sudo [-AbEHknPS] [-r role] [-t type] [-C fd] [-D level] [-g groupname|#gid] [-p prompt] [-u user name|#uid] [-g groupname|#gid] [VAR=value] [-i|-s] [<command>]
最後に、oracleユーザーに切り替えずに「oracle」ユーザーとして次のコマンドを実行したいと思います。 oracleユーザーに切り替えるにはパスワードが必要なため、このパスワードを使用すると、「exp」ユーザーに「oracle」ユーザーへのフルアクセス権が付与されます。
sudo su - oracle -c \"export ORAENV_ASK=NO;export ORACLE_SID=`ps -ef |grep pmon |grep -v grep | grep pmon | grep -v asm| grep -v APX | awk -F_ '{print $3}'`;export ORACLE_HOME="`cat /etc/oratab |grep dbhome | awk -F: '{print $2}' |sort -u |sed -e /^$/d`";export ORACLE_SID=`ps -ef |grep pmon |grep -v grep | grep pmon | grep -v asm| grep -v APX | awk -F_ '{print $3}'`;export PATH=$PATH:"`cat /etc/oratab |grep dbhome | awk -F: '{print $2}' |sort -u |sed -e /^$/d`"/bin:"`cat /etc/oratab |grep dbhome | awk -F: '{print $2}' |sort -u |sed -e /^$/d`"/OPatch;"/u01/app/oracle/product/12.1.0/dbhome_1/bin/expdp \"sys/oracle as sysdba\" DIRECTORY=DATAPUMP_DIR dumpfile=FULL_DB.dmp FULL=Y LOGFILE=full_exp.log"\"
答え1
あなたは地獄を引用しました。以下を試してください。 sudoを使用してシェルを起動し、ここのドキュメントにあるシェルコマンドを提供します。実際に読むことができるこのバージョンは次のとおりです。
sudo -u oracle -c sh <<'END_SH'
export ORAENV_ASK=NO
export ORACLE_SID=$(pgrep -fl pmon | grep -Eiv 'asm$|apx$' | cut -d_ -f3)
export ORACLE_HOME=$(awk -F: '/dbhome/ {print $2}' /etc/oratab |sort -u)
export PATH="$PATH:$ORACLE_HOME/bin:$ORACLE_HOME/OPatch"
"$ORACLE_HOME"/bin/expdp "sys/oracle as sysdba" DIRECTORY=DATAPUMP_DIR dumpfile=FULL_DB.dmp FULL=Y LOGFILE=full_exp.log
END_SH
grep|grep|awk パイプラインを大幅に簡素化しました。 ORACLE_HOMEを次のように設定する理由はわかりません。 / etc / oratabにそのエントリが複数回表示されるとsort
予想していますか?dbhome