Создание паролей 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. энтропия.

  • Как я могу заполнить файл случайными данными?
  • Сценарий Bash для произвольного расширения имени файла
  • Подача / dev / random с чтением диска и т. Д.
  • Уменьшение или опорожнение энтропийного пула?
  • Инструмент для измерения качества энтропии?
  • Генерирование файла с помощью ASCII-номеров с использованием / dev / urandom?
  • rngd - несколько экземпляров из сценария init
  • Генерировать случайное число в течение x времени в BASH
  • 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

    OpenBSD с только a / 32 неоднократно удаляет свой статический маршрут в мир

    Составить строку IP-адресов с помощью командной строки bash

    Не удалось получить «InRelease» в apt-файле Debian9

    Предотвратите нажатие клавиши Alt в меню фокусировки в Gtk 3

    Как перенаправить одно и то же сообщение на stdoud и stderr (без временного объекта)

    Показать текст в виде звездочек

    apt-get не удалось найти обновления для сжатия Debian

    Приостановить QEMU / KVM VM (сохранить RAM и состояние процессора на диск), например, vmware Player?

    Замените в верхнем регистре на нижний регистр, кроме первой буквы каждого слова в определенной строке

    Как скомпрометировать скрипт prerm и preinst с сообщением об ошибке в пакете Debian

    Правила iptables для прокси-машины squid

    cp -f не может перезаписать cp -i alias

    Как получить текущий регулятор CPUPower

    Поместите число с нулем

    Как скомпилировать Python 3.2 на NetBSD? Код ошибки 127

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