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 閱讀(5611) 評論(2)  編輯  收藏 所屬分類: linux

          Feedback

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

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

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

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

          主站蜘蛛池模板: 塔河县| 房产| 濮阳县| 鄂尔多斯市| 阳西县| 益阳市| 延津县| 九江市| 财经| 天长市| 青神县| 江都市| 秦安县| 泰州市| 响水县| 拉孜县| 茂名市| 广安市| 孝昌县| 永宁县| 前郭尔| 朝阳县| 荆州市| 九龙坡区| 南木林县| 广汉市| 喀喇沁旗| 沁水县| 平乡县| 根河市| 宜君县| 莆田市| 磐安县| 揭阳市| 军事| 武穴市| 鲁甸县| 阿拉善右旗| 阿拉善左旗| 鄂温| 辰溪县|