# A "random" date between 2000-01-01 and 2025-12-28
# Only uses day 01 to 28
rand_date() {
printf "%4d-%02d-%02d" $((RANDOM%25+2000)) $((RANDOM%12+1)) $((RANDOM%28+1))
}
csv_data() {
for ((i=1; i<="$1"; i++)); do printf "%d,%s\n" $i $(rand_date); done
}
$ time (csv_data 1000000 > data.csv)
real 7m26.683s
user 0m36.376s
sys 1m57.768s
Perl, наверное, быстрее, давайте попробуем
$ cat data.pl
#!/usr/bin/perl
$, = ",";
$\ = "\n";
sub rand_date {
sprintf "%4d-%02d-%02d", int(rand(25))+2000, int(rand(12))+1, int(rand(28))+1;
}
sub csv_data {
my $n = shift;
for ($i = 1; $i <= $n; $i++) {
print $i, rand_date();
}
}
csv_data(1_000_000);
$ time (perl data.pl > data.csv)
real 0m0.881s
user 0m0.876s
sys 0m0.004s
Хм, да, чуть быстрее...
Расширение ответа @mosvy, так как он немного длиннее, чем просто комментарий.
RHEL6 был выпущен с OpenSSH 5.3p1 в 2009 году (Я думаю, что изначально это была более старая версия, но сейчас у меня ее нет под рукой )и с годами новые функции были реализованы или перенесены из основной ветки разработки, включая эту один для сертификатов SSH.
Но это было гораздо позже. В течение нескольких лет была первоначальная поддержка смарт-карт через NSS (в журнале изменений, датированном 2007 годом ), который заменил переключатель -n
в ssh-keygen
. Как это работало, описано, например в этом сообщении в блоге от 2008 года (. Я не могу найти, был ли этот патч предложен вышестоящим или почему он был отклонен, но в наши дни смарт-карты используются напрямую через стандартный PKCS #11 интерфейс ). Для получения дополнительной информации см. openssh -5.3 -p1 -nss -keys.patch из исходного rpm, ссылка на который приведена в предыдущем ответе.
Лишь через некоторое время после выпуска OpenSSH 5.4p1 с поддержкой сертификатов было принято решение о переносе этой конкретной функции (в список изменений, датированный 2013 годом ), и возник конфликт с существующим переключателем (ssh-keygen
теперь использует все буквы алфавита, если я хорошо помню ), и единственным способом резервного переноса этой функции было перемещение опции на другой переключатель (существующие сценарии не могли быть нарушены незначительным обновлением )и документировать это.
Вот и вся история.