Создание паролей XKCD из одной строки Bash

Есть несколько генераторов «XKCD password», но задача кажется такой прямой, поэтому я хотел получить компактное и простое решение. Мои требования:

  • Однострочный псевдоним (или несколько строк) для ввода .profile
  • Стандартные команды Unix (не требуют пакетов)
  • Вывод колонки (например, pwgen )
  • Заглавные слова (для удобства чтения)

(Я рад отказаться от параметров командной строки в обмен на простоту.)

 for i in {1..32}; do grep -E "^[az]{4,8}$" /usr/share/dict/words | gshuf -n4 | gsed 's/.*/\u&/' | tr -d '\n' | awk '{print $1}'; done | column 

Текущие проблемы:

  • shuf требует, чтобы shuf на macOS (который я также использую)
  • sed требует brew install gnu-sed (то же самое)
  • tr -d '\n' | awk '{print $1}' tr -d '\n' | awk '{print $1}' кажется глупым.

Как я могу сделать короткую, но читаемую командную строку, которая работает как на Linux, так и на macOS?

На стороне примечания я обнаружил, что с помощью SCOWL, который имеет диапазон от коротких списков слов с общими именами до длинного списка слов с неясными словами, вы можете компрометировать запоминаемость Vs. энтропия.

  • Подача / dev / random с чтением диска и т. Д.
  • Что делает «w» с урандом?
  • Уменьшение или опорожнение энтропийного пула?
  • Легкая утилита / программа для запуска команды после случайной задержки
  • Возьмите образец из файла или потока?
  • Инструмент для измерения качества энтропии?
  • rngd - несколько экземпляров из сценария init
  • Генерирование файла с помощью ASCII-номеров с использованием / dev / urandom?
  • One Solution collect form web for “Создание паролей XKCD из одной строки Bash”

    У меня нет доступа к моему Mac с того места, где я есть, но поскольку он работает с OS X 10.4.11, я не уверен, что он будет сопоставим с вашей средой. Следующее работает для создания единого пароля во FreeBSD. Если это не соответствует вашим потребностям, не стесняйтесь сообщить мне, чего не хватает в комментариях:

     (sort -R /usr/share/dict/words \ | head -n 4 \ | awk '{ sub(".", substr(toupper($0),1,1)); printf "%s", $0 }' \ ; echo) 

    В FreeBSD и моей системе Arch Linux sort -R случайным образом заказывает ввод. Это всего лишь псевдослучайное, но это так же хорошо, как и с большинством других программ. Затем выберите четыре слова из этого набора с head . Вместо того, чтобы использовать GNU sed , awk можно использовать для создания первого символа каждой строки. Наконец, echo используется для размещения завершающей новой строки. Это все в подоболочке для более легкого включения в цикл, трубу или другую конструкцию.

    Interesting Posts

    Как создать несколько файлов tar с помощью сценария bash и использовать дату в качестве имен файлов?

    Недопустимое разрешение Linux при вводе сообщения журнала в файл

    Есть ли способ установить размер списка истории в bash более чем на 5000 строк?

    определить количество каналов RAM

    Печать текстового файла из номера строки в другой после поиска строк

    Безопасно ли выполнять эти инструкции в качестве пользователя root?

    Mac OS X, как проверить определенные пакеты, установлены

    Храните домашнюю папку с OpenSuse 12 до Leap

    Маршрутный трафик OpenVPN IPv6 через сервер

    Печатать массив по строкам в документе здесь

    Установите более старые и более старые версии python на debian?

    флаг noexec для / tmp (OpenSUSE)

    Печать только N-й строки перед каждой строкой, соответствующей шаблону

    Gnome, nautilus копирует файлы на USB-стоп на 100% или около

    Измените размер раздела btrfs внутри логического тома LVM

    Linux и Unix - лучшая ОС в мире.