Guest User

Untitled

a guest
Dec 24th, 2017
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.82 KB | None | 0 0
  1. function sqlplus {
  2. local USER=SYS
  3. local PASS=<default_password>
  4. local NET
  5. local HOST=localhost
  6. local PORT
  7. local SID=<default_sid>
  8. local ROLE=SYSDBA
  9. local EDITION
  10. local DEFAULT_DOCKER_IMAGE=oracle/database:12.2.0.1-ee
  11. local DOCKER_IMAGE
  12. local DOCKER_CONTAINER
  13.  
  14. # read the options
  15. local TEMP=`getopt -o 'u:p:n:h:P:s:r::e:d:D:' --long 'user:,pass:,net:,host:,port:,sid:,role::,edition:,docker-run:,docker-exec:' -n 'sqlplus' -- "$@"`
  16. eval set -- "$TEMP"
  17.  
  18. # extract options and their arguments into variables.
  19. while true ; do
  20. case "$1" in
  21. -u|--user)
  22. case "$2" in
  23. "") shift 2 ;;
  24. *) USER=$2 ; shift 2 ;;
  25. esac ;;
  26. -p|--pass)
  27. case "$2" in
  28. "") shift 2 ;;
  29. *) PASS=$2 ; shift 2 ;;
  30. esac ;;
  31. -n|--net)
  32. case "$2" in
  33. "") shift 2 ;;
  34. *) NET=$2 ; shift 2 ;;
  35. esac ;;
  36. -h|--host)
  37. case "$2" in
  38. "") shift 2 ;;
  39. *) HOST=$2 ; shift 2 ;;
  40. esac ;;
  41. -P|--port)
  42. case "$2" in
  43. "") shift 2 ;;
  44. *) PORT=$2 ; shift 2 ;;
  45. esac ;;
  46. -s|--sid)
  47. case "$2" in
  48. "") shift 2 ;;
  49. *) SID=$2 ; shift 2 ;;
  50. esac ;;
  51. -r|--role)
  52. case "$2" in
  53. "") shift 2 ;;
  54. SYSDBA|SYSOPER|SYSASM) ROLE=$2 ; shift 2 ;;
  55. *) echo "role must be blank, or one of SYSDBA, SYSOPER, or SYSASM" ; exit 1 ;;
  56. esac ;;
  57. -e|--edition)
  58. case "$2" in
  59. "") shift 2 ;;
  60. *) EDITION=$2 ; shift 2 ;;
  61. esac ;;
  62. -d|--docker-run)
  63. if [ -n "$DOCKER_CONTAINER" ]; then
  64. echo "only one of docker-run or docker-exec can be specified" ; exit 1
  65. fi
  66. case "$2" in
  67. "") DOCKER_IMAGE=$DEFAULT_DOCKER_IMAGE ; shift 2 ;;
  68. *) DOCKER_IMAGE=$2 ; shift 2 ;;
  69. esac ;;
  70. -D|--docker-exec)
  71. if [ -n "$DOCKER_IMAGE" ]; then
  72. echo "only one of docker-run or docker-exec can be specified" ; exit 1
  73. fi
  74. case "$2" in
  75. "") echo "no container name specified, ignoring $1" ; shift 2 ;;
  76. *) DOCKER_CONTAINER=$2 ; shift 2 ;;
  77. esac ;;
  78. --) shift ; break ;;
  79. *) echo "Internal error!" ; exit 1 ;;
  80. esac
  81. done
  82. local ARGS=/
  83. if [ -n "$USER" ]; then
  84. ARGS=$USER
  85. if [ -n "$PASS" ]; then
  86. ARGS=$ARGS/$PASS
  87. fi
  88. if [ -n "$NET" ]; then
  89. ARGS=$ARGS@$NET
  90. else
  91. if [ -n "$HOST" ]; then
  92. ARGS=$ARGS@$HOST
  93. if [ -n "$PORT" ]; then
  94. ARGS=$ARGS:$PORT
  95. fi
  96. if [ -n "$SID" ]; then
  97. ARGS=$ARGS/$SID
  98. fi
  99. fi
  100. fi
  101. fi
  102. if [ -n "$ROLE" ]; then
  103. ARGS="$ARGS AS $ROLE"
  104. fi
  105. if [ -n "$EDITION" ]; then
  106. ARGS="$ARGS EDITION=$EDITION"
  107. fi
  108. ARGS="$ARGS $@"
  109.  
  110. if [ -n "$DOCKER_IMAGE" ]; then
  111. echo "/bin/docker run --rm -it $DOCKER_IMAGE sqlplus $ARGS"
  112. rlwrap /bin/docker run --rm -it $DOCKER_IMAGE sqlplus $ARGS
  113. elif [ -n "$DOCKER_CONTAINER" ]; then
  114. echo "/bin/docker exec -it $DOCKER_CONTAINER sqlplus $ARGS"
  115. rlwrap /bin/docker exec -it $DOCKER_CONTAINER sqlplus $ARGS
  116. else
  117. echo "sqlplus $ARGS"
  118. rlwrap $ORACLE_HOME/bin/sqlplus $ARGS
  119. fi
  120. }
Add Comment
Please, Sign In to add comment