stone2083

          mykeepass for command line

          命令行下的類似keepass一個東東.

          如何使用
          Command line for Keep Password.
          Usage:
            keepass.sh -l
            keepass.sh -e plain-text
            keepass.sh -d encoded-text
            keepass.sh -s encoded-text name

          -l
          展示保存下所有加密后的密碼信息
          -e
          將明文密碼, 加密, 密文自動保存到剪切板上
          -d
          將密文界面, 解密后的明文自動保存到剪切板上
          -s
          將密文持久化保存到文件中

          代碼實現
          #!/bin/sh

          DATA="$HOME/.password/data"
          declare -a passwords

          function enc()
          {
              #$1: plain text
              echo "$1" | openssl enc -des | base64
          }

          function dec()
          {
              #$1: encoded text
              echo "$1" | base64 -D | openssl enc -des -d
          }

          function sync()
          {
              for ((loop=0;loop<${#passwords[*]};loop++))
              do
                  if [ -z "${passwords[$loop]}" ];then
                      continue
                  fi
                  value="$value\n${passwords[$loop]}"
              done
              echo $value > $DATA
          }

          function save()
          {
              #$1 encoded password
              #$2 name
              for ((loop=0; loop<${#passwords[*]}; loop++))
              do
                  info=${passwords[$loop]}
                  password=$(echo $info | awk '{print $1}')
                  name=$(echo $info | awk '{print $2}')
                  if [ "$2" == "$name" ];then
                      passwords[$loop]="$1 $2"
                      return
                  fi
              done
              passwords[$loop]="$1 $2"

              sync
          }

          function delete()
          {
              #$1: name
              for ((loop=0; loop<${#passwords[*]}; loop++))
              do
                  info=${passwords[$loop]}
                  password=$(echo $info | awk '{print $1}')
                  name=$(echo $info | awk '{print $2}')
                  if [ "$1" == "$name" ];then
                      passwords[$loop]=""
                  fi
              done

              sync
          }

          function list()
          {
              for ((loop=0;loop<${#passwords[*]};loop++))
              do
                  echo ${passwords[$loop]}
              done
          }

          function help()
          {
              echo "Command line for Keep Password.
          Usage:
            keepass.sh -l
            keepass.sh -e plain-text
            keepass.sh -d encoded-text
            keepass.sh -s encoded-text name"
          }

          function init()
          {
              loop=0
              while read line
              do
                  if [ -z "$line" ];then
                      continue
                  fi
                  passwords[$loop]=$line
                  loop=$(echo $loop+1 | bc)
              done < $DATA
          }

          init
          case "$1" in
              -l)
                  list
                  ;;
              -e)
                  enc "$2" | tr -d '\n' | pbcopy
                  ;;
              -d)
                  dec "$2" | tr -d '\n' | pbcopy
                  ;;
              -s)
                  save "$2" "$3"
                  ;;
              -r)
                  delete "$2"
                  ;;
              *)
                  help
                  ;;
          esac

          備注:
          1. 純shell打造
          2. 目前支持Mac shell, 理論上支持linux系統(唯一的改動, 把pbcopy改成linux下剪切板復制的命令即可)


          posted on 2014-11-06 14:45 stone2083 閱讀(5609) 評論(2)  編輯  收藏 所屬分類: linux

          Feedback

          # re: mykeepass for command line 2014-11-08 18:19 長痘痘

          學習了,不錯的文章  回復  更多評論   

          # re: mykeepass for command line 2014-11-16 23:38 網絡營銷技巧

          感謝分享,學習中  回復  更多評論   

          主站蜘蛛池模板: 昔阳县| 广汉市| 浠水县| 拜城县| 青龙| 阜阳市| 舟曲县| 南华县| 乌拉特中旗| 东台市| 益阳市| 富民县| 万州区| 容城县| 黄大仙区| 丘北县| 平塘县| 伊川县| 惠来县| 青浦区| 连南| 波密县| 嘉义市| 吉木萨尔县| 云阳县| 磐安县| 扶风县| 安溪县| 岑巩县| 昌图县| 佛坪县| 阿拉善左旗| 天水市| 金寨县| 清涧县| 青铜峡市| 延津县| 台前县| 夏邑县| 浠水县| 沅陵县|