Guest User

Untitled

a guest
May 22nd, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.45 KB | None | 0 0
  1. #!/usr/bin/env bash
  2.  
  3. # starts (or restarts) a 1password cli session, sets 30 minute countdown variable
  4.  
  5. # use: OP_CLOUD_ACCOUNT="[your-account-name]" source /path/to/op_session.sh command
  6. # e.g.: OP_CLOUD_ACCOUNT="familyname" source ~/op_session.sh get account
  7.  
  8.  
  9. check_session(){
  10. # attempt sign in if session is not active
  11. if ! op get account &> /dev/null; then
  12. signin
  13. check_session
  14. fi
  15. }
  16.  
  17. main(){
  18. # directly pass inactive session args
  19. case "$*" in
  20. "" )
  21. op;;
  22. --help )
  23. op --help;;
  24. --version )
  25. op --version;;
  26. signin )
  27. op signin;;
  28. signout )
  29. op signout
  30. unset OP_EXPIRATION OP_SESSION_"$OP_CLOUD_ACCOUNT"
  31. reset_timeout
  32. ;;
  33. update )
  34. op update;;
  35. * ) # active session required for everything else
  36. check_session
  37. eval "op $*"
  38. reset_timeout
  39. ;;
  40. esac
  41. }
  42.  
  43. reset_timeout(){
  44. # reset 30 min countdown
  45. OS_TYPE=$(uname -s)
  46. if [ "$OS_TYPE" = Darwin ]; then # MacOS
  47. OP_EXPIRATION_TIME=$(date -v +30M -u +%s)
  48. elif [ "$OS_TYPE" = Linux ]; then
  49. OP_EXPIRATION_TIME=$(date -d '+30 min' -u +%s)
  50. fi
  51. export OP_EXPIRATION="$OP_EXPIRATION_TIME"
  52. }
  53.  
  54. signin(){
  55. token=$(op signin "$OP_CLOUD_ACCOUNT" | \
  56. grep 'export' | \
  57. awk -F\" '{print $2}'
  58. )
  59. export OP_SESSION_"$OP_CLOUD_ACCOUNT"="$token"
  60. }
  61.  
  62.  
  63. main "$*"
Add Comment
Please, Sign In to add comment