The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Генератор случайных чисел по SH, !*! universite, 16-Май-11, 17:33  [смотреть все]
Скрипт генерирует произвольный адрес ipv6 в пределах заданной сети $network_v6
На баше работает, но надо уйти от него на sh.


array=( 1 2 3 4 5 6 7 8 9 0 a b c d e f )

rnd_ipv6_block ()
{
## need bash!
    a=${array[$RANDOM%16]}${array[$RANDOM%16]}${array[$RANDOM%16]}${array[$RANDOM%16]}
    b=${array[$RANDOM%16]}${array[$RANDOM%16]}${array[$RANDOM%16]}${array[$RANDOM%16]}
    c=${array[$RANDOM%16]}${array[$RANDOM%16]}${array[$RANDOM%16]}${array[$RANDOM%16]}
    d=${array[$RANDOM%16]}${array[$RANDOM%16]}${array[$RANDOM%16]}${array[$RANDOM%16]}
    ipv6=$network_v6:$a:$b:$c:$d
}


  • Линейку в студию?, !*! Andrey Mitrofanov, 18:46 , 16-Май-11 (1)
    > Скрипт генерирует произвольный адрес ipv6 в пределах заданной сети $network_v6
    > На баше работает, но надо уйти от него на sh.

    Даже и не знаю... На баше "в режиме sh", типа, вот...
    >     ipv6=$network_v6:$a:$b:$c:$d

    $ sh
    sh-3.2$ shuf -i 0-255 -n 1
    130
    sh-3.2$ printf "%x:%x:%x:%x",1,1,1,1
    0:0:0:0,1,1,1,1sh-3.2$ printf "%x:%x:%x:%x\n",1,1,1,1
    0:0:0:0
    ,1,1,1,1sh-3.2$
    sh-3.2$ printf "%x:%x:%x:%x\n" 1 1 1 1
    1:1:1:1
    sh-3.2$ shuf -i 0-65535 -n 1
    29285
    sh-3.2$ printf "%x:%x:%x:%x\n" `shuf -i 0-65535 -n 1` `shuf -i 0-65535 -n 1` `shuf -i 0-65535 -n 1` `shuf -i 0-65535 -n 1`
    fed6:678d:8bf8:cc60
    sh-3.2$ net=1:1:1
    sh-3.2$ printf "$net:%x:%x:%x:%x\n" `shuf -i 0-65535 -n 1` `shuf -i 0-65535 -n 1` `shuf -i 0-65535 -n 1` `shuf -i 0-65535 -n 1`
    1:1:1:9889:78f2:d487:ce2a
    sh-3.2$ _

    • Линейку в студию?, !*! universite, 01:45 , 17-Май-11 (5)
      > sh-3.2$ shuf -i 0-65535 -n 1
      > 29285


      # shuf -i 0-65535 -n 1
      shuf: Команда не найдена.

      • Линейку в студию?, !*! Andrey Mitrofanov, 11:08 , 17-Май-11 (10)
        > shuf: Команда не найдена.

        $ dpkg -S bin/shuf
        coreutils: /usr/bin/shuf
        abm@router-ufk:~$ shuf --version
        shuf (GNU coreutils) 6.10
        Copyright (C) 2008 Free Software Foundation, Inc.
        License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
        This is free software: you are free to change and redistribute it.
        There is NO WARRANTY, to the extent permitted by law.

        Автор программы -- Paul Eggert.

        ................>8................

        $ printf "%x:%x:%x:%x\n" $RANDOM $RANDOM $RANDOM $RANDOM
        258c:7fcf:2a14:5288
        $ _


        ЗЫЖ Для эстетов :)) :

        $ random64k() { echo $((RANDOM+32768*(RANDOM%2))); }
        $ printf "%x:%x:%x:%x\n" `random64k` `random64k` `random64k` `random64k`
        c6a8:886f:4a35:bfb
        $ _

        PPS:
        od  -N 2 -x /dev/urandom
        PPPS:
        od -N 8 -x /dev/urandom|sed 's/^[^ ]\+ //;s/ 0+/ /g;s/ /:/g;q'

    • Линейку в студию?, !*! Andrey Mitrofanov, 20:09 , 02-Июн-11 (35)
      > sh-3.2$ printf "$net:%x:%x:%x:%x\n" `shuf -i 0-65535 -n 1` `shuf -i 0-65535 -n
      > 1` `shuf -i 0-65535 -n 1` `shuf -i 0-65535 -n 1`
      > 1:1:1:9889:78f2:d487:ce2a
      > sh-3.2$ _

      ...кстати, "пролетая над Череповцом"(с), придумалось:

      $ printf "%x:%x:%x:%x\n" `shuf -i 0-65535 -n 4`
      b606:8e3a:c795:dcd6
      $ _

  • Генератор случайных чисел по SH, !*! pavlinux, 00:53 , 17-Май-11 (2) +1
    >[оверквотинг удален]
    > rnd_ipv6_block ()
    > {
    > ## need bash!
    >     a=${array[$RANDOM%16]}${array[$RANDOM%16]}${array[$RANDOM%16]}${array[$RANDOM%16]}
    >     b=${array[$RANDOM%16]}${array[$RANDOM%16]}${array[$RANDOM%16]}${array[$RANDOM%16]}
    >     c=${array[$RANDOM%16]}${array[$RANDOM%16]}${array[$RANDOM%16]}${array[$RANDOM%16]}
    >     d=${array[$RANDOM%16]}${array[$RANDOM%16]}${array[$RANDOM%16]}${array[$RANDOM%16]}
    >     ipv6=$network_v6:$a:$b:$c:$d
    > }
    >

     
    #!/bin/sh

    network_v6="2001:0db8:11a3:09d7"

    rnd_ipv6_block () {

      HEX="tr -dc a-f0-9 < /dev/urandom | head -c 4"
      ipv6=$network_v6:$(eval $HEX):$(eval $HEX):$(eval $HEX):$(eval $HEX);
    }


    • Генератор случайных чисел по SH, !*! DeadLoco, 01:35 , 17-Май-11 (3)
      >  tr -dc a-f0-9 < /dev/urandom

      Класс!

      • Генератор случайных чисел по SH, !*! pavlinux, 01:38 , 17-Май-11 (4)
        >>  tr -dc a-f0-9 < /dev/urandom
        > Класс!

        А то! :)

      • Генератор случайных чисел по SH, !*! universite, 01:47 , 17-Май-11 (6)
        >>  tr -dc a-f0-9 < /dev/urandom
        > Класс!

        не совсем


        # tr -dc a-f0-9 < /dev/urandom | head -c 256
        e²fec1f10080fa9dc74bbfa675dd0155²6²b32b3d2²751b1599d4²19379fa800²0cb²a9²07a4623ab266933b08bc5e28ce²96f8ab7094653256727d29133a676d6e²ca²c6d1d846a4b899b9a02461d9c964fda41bbcc6ca9eab3d713b624247780679a316a18e48d600a8ed1²5b99f268²929c651e5²f1078f0c7fbe912b6ae0

        Какие-то левые символы проскакивают...
        • Генератор случайных чисел по SH, !*! DeadLoco, 01:56 , 17-Май-11 (7)
          > Какие-то левые символы проскакивают...

          # tr -dc a-f0-9 < /dev/urandom | tr "[=2=]" "2" | head -c 256

          • Генератор случайных чисел по SH, !*! universite, 02:02 , 17-Май-11 (8)
            >> Какие-то левые символы проскакивают...
            > # tr -dc a-f0-9 < /dev/urandom | tr "[=2=]" "2" | head
            > -c 256

            Замечательно, спецсимволы не появляются, но время генерации 20 ipv6 заметно тормозит.


            # time /bin/sh random-ipv6-address-generator.2.sh
            0.445u 0.843s 0:01.14 112.2%    44+1178k 0+0io 0pf+0w

            Скрипт на баше:


            #time /usr/local/bin/bash random-ipv6-address-generator.sh
            0.000u 0.007s 0:00.04 0.0%      0+0k 0+0io 0pf+0w

            • Генератор случайных чисел по SH, !*! pavlinux, 12:15 , 17-Май-11 (11)
              >>> Какие-то левые символы проскакивают...

              Кривая консоль у тя.
              >[оверквотинг удален]
              > Замечательно, спецсимволы не появляются, но время генерации 20 ipv6 заметно тормозит.

              dd if=/dev/urandom bs=256 count=1 conv=ascii,lcase | tr -dc a-f0-9 | head -c 4


              • Генератор случайных чисел по SH, !*! universite, 12:28 , 17-Май-11 (13)
                >>>> Какие-то левые символы проскакивают...
                > Кривая консоль у тя.

                Добро пожаловать в мир совместимых консолей и кроссплатформенных команд.

                >>[оверквотинг удален]
                >> Замечательно, спецсимволы не появляются, но время генерации 20 ipv6 заметно тормозит.
                > dd if=/dev/urandom bs=256 count=1 conv=ascii,lcase | tr -dc a-f0-9 | head -c
                > 4

                Это быстро генерится.

                • Генератор случайных чисел по SH, !*! pavlinux, 12:37 , 17-Май-11 (14)
                  >>>>> Какие-то левые символы проскакивают...
                  >> Кривая консоль у тя.
                  > Добро пожаловать в мир совместимых консолей и кроссплатформенных команд.
                  >>>[оверквотинг удален]
                  >>> Замечательно, спецсимволы не появляются, но время генерации 20 ipv6 заметно тормозит.
                  >> dd if=/dev/urandom bs=256 count=1 conv=ascii,lcase | tr -dc a-f0-9 | head -c
                  >> 4
                  > Это быстро генерится.

                  Но есть косяк, точнее вероятность того, что из 256 случайных байт
                  не будет 4-х из множества A-Fa-f0-9 :)

                  • Генератор случайных чисел по SH, !*! DeadLoco, 21:44 , 17-Май-11 (16) +1
                    > Но есть косяк, точнее вероятность того, что из 256 случайных байт
                    > не будет 4-х из множества A-Fa-f0-9 :)

                    И, судя по манам, есть смысл 0-9 заменить на [:digit:]

                    • Генератор случайных чисел по SH, !*! pavlinux, 21:52 , 17-Май-11 (17)
                      >> Но есть косяк, точнее вероятность того, что из 256 случайных байт
                      >> не будет 4-х из множества A-Fa-f0-9 :)
                      > И, судя по манам, есть смысл 0-9 заменить на [:digit:]

                      Там же ...

                        [:xdigit:]

                      # tr -dc [:xdigit:] < /dev/urandom | head -c 4

                      • Генератор случайных чисел по SH, !*! universite, 22:06 , 17-Май-11 (19)
                        >>> Но есть косяк, точнее вероятность того, что из 256 случайных байт
                        >>> не будет 4-х из множества A-Fa-f0-9 :)
                        >> И, судя по манам, есть смысл 0-9 заменить на [:digit:]
                        > Там же ...
                        >   [:xdigit:]
                        > # tr -dc [:xdigit:] < /dev/urandom | head -c 4

                        Кавычки не забываем ставить.


                        tr -dc "[:xdigit:]" < /dev/urandom | head -c 4

                        P.S. Все равно 9-тый вариант скрипта быстрее.
                        P.P.S. Этот :


                        # time ./random-ipv6-address-generator.10.sh
                        0.218u 0.479s 0:00.63 107.9%    50+1033k 0+0io 0pf+0w

                        • Генератор случайных чисел по SH, !*! pavlinux, 22:23 , 17-Май-11 (20)
                          >>>> Но есть косяк, точнее вероятность того, что из 256 случайных байт
                          >>>> не будет 4-х из множества A-Fa-f0-9 :)
                          >>> И, судя по манам, есть смысл 0-9 заменить на [:digit:]
                          >> Там же ...
                          >>   [:xdigit:]
                          >> # tr -dc [:xdigit:] < /dev/urandom | head -c 4
                          > Кавычки не забываем ставить.


                          # strace -e execve tr -dc [:xdigit:] < /dev/null
                          execve("/usr/bin/tr", ["tr", "-dc", "[:xdigit:]"], [/* 88 vars */]) = 0

                          # strace -e execve tr -dc "[:xdigit:]" < /dev/null
                          execve("/usr/bin/tr", ["tr", "-dc", "[:xdigit:]"], [/* 88 vars */]) = 0

                          Нафига? :)

                        • Генератор случайных чисел по SH, !*! universite, 22:56 , 17-Май-11 (22)

                          >
                           
                          > # strace -e execve tr -dc [:xdigit:] < /dev/null
                          > execve("/usr/bin/tr", ["tr", "-dc", "[:xdigit:]"], [/* 88 vars */]) = 0
                          > # strace -e execve tr -dc "[:xdigit:]" < /dev/null
                          > execve("/usr/bin/tr", ["tr", "-dc", "[:xdigit:]"], [/* 88 vars */]) = 0
                          >

                          > Нафига? :)

                          В линуксовом мане без кавычек, а вот во фряшном с кавычками. :)


                               Create a list of the words in file1, one per line, where a word is taken
                               to be a maximal string of letters.

                                     tr -cs "[:alpha:]" "\n" < file1

            • Генератор случайных чисел по SH, !*! universite, 14:52 , 17-Май-11 (15)

              # Copyright Andrey Mitrofanov
              # Copyright pavlinux http://pavlinux.ru

              rnd_ipv6_block () {
                  HEX="od -N 2 -x /dev/urandom | cut -c 14-17"
                  ipv6=$network_v6:$(eval $HEX):$(eval $HEX):$(eval $HEX):$(eval $HEX);

              }


              # time ./random-ipv6-address-generator.9.sh
              0.097u 0.352s 0:00.30 146.6%    78+974k 0+0io 0pf+0w

              • Генератор случайных чисел по SH, !*! pavlinux, 21:56 , 17-Май-11 (18)
                ># Copyright Andrey Mitrofanov
                ># Copyright pavlinux http://pavlinux.ru

                Митрофаныч, нас закопирайтили... =)

              • Генератор случайных чисел по SH, !*! pavlinux, 22:49 , 17-Май-11 (21)
                >     HEX="od -N 2 -x /dev/urandom | cut -c 14-17"

                Оно точно работает?


                # HEX="od -N 2 -x /dev/urandom | cut -c 14-17"
                # echo -ne $(eval $HEX) | od -x
                0000000

                У тя там что, китайская, UTF-16 или UTF-32 ?

                Для портабильности придётся так:
                # od -N2 -x /dev/urandom | head -1 | cut -d" " -f2,2

                • Генератор случайных чисел по SH, !*! universite, 22:59 , 17-Май-11 (23)
                  >>     HEX="od -N 2 -x /dev/urandom | cut -c 14-17"
                  > Оно точно работает?
                  > # HEX="od -N 2 -x /dev/urandom | cut -c 14-17"
                  > # echo -ne $(eval $HEX) | od -x
                  > 0000000

                  В линуксе и фряхе разные отступы
                  в линуксе:


                  # od -N 2 -x /dev/urandom
                  0000000 c614
                  0000002

                  во фряхе:

                  #  od -N 2 -x /dev/urandom
                  0000000      10cf
                  0000002


                • Генератор случайных чисел по SH, !*! universite, 23:01 , 17-Май-11 (24)

                  > Для портабильности придётся так:
                  > # od -N2 -x /dev/urandom | head -1 | cut -d" "
                  > -f2,2

                  Во фряхе


                  # od -N2 -x /dev/urandom | head -1 | cut -d" " -f2,2

                  # od -N2 -x /dev/urandom | head -1
                  0000000      9372


                  • Генератор случайных чисел по SH, !*! pavlinux, 23:05 , 17-Май-11 (25)
                    >> Для портабильности придётся так:
                    >> # od -N2 -x /dev/urandom | head -1 | cut -d" "
                    >> -f2,2
                    > Во фряхе
                    >
                     
                    > # od -N2 -x /dev/urandom | head -1 | cut -d" "
                    > -f2,2
                    > # od -N2 -x /dev/urandom | head -1
                    > 0000000      9372
                    >

                    А просто -f2

                    # od -N2 -x /dev/urandom | head -1 | cut -d" " -f2


                    • Генератор случайных чисел по SH, !*! universite, 23:13 , 17-Май-11 (26)

                      > А просто -f2
                      > # od -N2 -x /dev/urandom | head -1 | cut -d" "
                      > -f2

                      В линуксе отступ один пробел.
                      Во фряхе аж 5!

                      • Генератор случайных чисел по SH, !*! pavlinux, 23:20 , 17-Май-11 (27)
                        >> А просто -f2
                        >> # od -N2 -x /dev/urandom | head -1 | cut -d" "
                        >> -f2
                        > В линуксе отступ один пробел.
                        > Во фряхе аж 5!

                        Пля... :)

                        А так

                        # od -N2 -x /dev/urandom | head -1 | cut -d" " -f2-

                        • Генератор случайных чисел по SH, !*! universite, 01:05 , 19-Май-11 (29)
                          > Пля... :)
                          > А так
                          > # od -N2 -x /dev/urandom | head -1 | cut -d" "
                          > -f2-

                          так тоже не получается нужный результат, а вот так работает:


                          # od -N2 -x /dev/urandom | head -1 | sed 's/ //g' | cut -c 8-11
                          9f1c

                          но sed увеличивает время генерации :(


                          # time ./random-ipv6-address-generator.11.sh
                          0.216u 0.569s 0:00.57 135.0%    70+799k 0+0io 0pf+0w

                        • Генератор случайных чисел по SH, !*! pavlinux, 01:13 , 19-Май-11 (30)
                          >[оверквотинг удален]
                          >> А так
                          >> # od -N2 -x /dev/urandom | head -1 | cut -d" "
                          >> -f2-
                          > так тоже не получается нужный результат, а вот так работает:
                          >
                           
                          > # od -N2 -x /dev/urandom | head -1 | sed 's/ //g'
                          > | cut -c 8-11
                          > 9f1c
                          >

                          > но sed увеличивает время генерации :(

                          На то он и sed


                          # od -N2 -x /dev/urandom | sed 's/\(.*\)\ //;1q'

                          :)
                        • Генератор случайных чисел по SH, !*! Andrey Mitrofanov, 07:24 , 19-Май-11 (31)
                          >[оверквотинг удален]
                          >> А так
                          >> # od -N2 -x /dev/urandom | head -1 | cut -d" "
                          >> -f2-
                          > так тоже не получается нужный результат, а вот так работает:
                          >
                           
                          > # od -N2 -x /dev/urandom | head -1 | sed 's/ //g'
                          > | cut -c 8-11
                          > 9f1c
                          >

                          > но sed увеличивает время генерации :(

                          Так пиши ж на C!? Ж)

                          Ещё можно сервер на sed-е %) написать и клиентом читаить по одной строчке из пайпа...

                          О! Предлагаю дописать urandom (на Си! в ядре!!), чтоб он сразу выдавал %4x:%4x:%4x:%4x. %)) (Где-то в /proc (но, да, linux-only/) можно генерить SID-ы. Почти ж оно!)

                          ---
                          $ time od -N $((8*25)) -x /dev/urandom |tr \\n X |sed 's/\(^\|X\)[0-9]* */:/g;s/ 0+/ /g;s/ /:/g;s/:*$\|^:*//g;s/\(\([^:]*:[^:]*\)\{4\}[^:]\):/\1\n/g;q'
                          e21a:09bc:689a:ce35:e927
                          f56f:3dba:f439:4390:09d2
                          6ae6:216b:de7a:9490:10a5
                          e143:f274:f33c:4451:7eb3
                          d546:6811:f8db:a5e8:a446
                          1b7c:882e:11a7:b3e3:85e8
                          ffc6:5976:5fe3:49d7:616e
                          778c:0881:c35c:5cb5:2aec
                          a00a:aae1:eb42:f32b:e209
                          88f0:e7cd:e9d3:cdfd:b8d1
                          da0c:ada1:72a8:ca61:ec1d
                          5a25:f61c:952a:5444:eef4
                          4f94:cff8:5086:5edc:8fdd
                          d61b:66db:5b9c:c68e:91ad
                          d95f:f277:0e1b:79c9:4f52
                          dcd7:ed7c:35c8:51f5:25f0
                          1310:cea2:a492:1668:9fa6
                          adf3:8870:6a38:4cd4:63a6
                          bc09:b069:859b:cbb3:51c5
                          b5a5:140d:aaf0:ebbf:2fb9

                          real    0m0.010s
                          user    0m0.020s
                          sys     0m0.000s
                          $ _

                        • Генератор случайных чисел по SH, !*! universite, 23:05 , 19-Май-11 (32)

                          > ---
                          > $ time od -N $((8*25)) -x /dev/urandom |tr \\n X |sed 's/\(^\|X\)[0-9]*
                          > */:/g;s/ 0+/ /g;s/ /:/g;s/:*$\|^:*//g;s/\(\([^:]*:[^:]*\)\{4\}[^:]\):/\1\n/g;q'

                          У меня фряха не понимает


                          $((8*25))
                          Неверное имя переменной.

                        • Генератор случайных башизмов, !*! Andrey Mitrofanov, 11:49 , 20-Май-11 (33)
                          > У меня фряха не понимает
                          > $((8*25))
                          > Неверное имя переменной.

                          Кто тут переходит с bash-а, я или ты?!

                          $[8*25] //fixed

                        • Генератор случайных чисел по SH, !*! pavlinux, 03:39 , 21-Май-11 (34) +1
                          >>[оверквотинг удален]
                          > О! Предлагаю дописать urandom (на Си! в ядре!!), чтоб он сразу выдавал
                          > %4x:%4x:%4x:%4x. %)) (Где-то в /proc (но, да, linux-only/)

                          Зря ты это придумал... :)

                          ipv6_suffix.c


                          #include <linux/module.h>
                          #include <linux/kernel.h>
                          #include <linux/random.h>
                          #include <linux/proc_fs.h>

                          #define FORMAT "%02x%02x:%02x%02x:%02x%02x:%02x%02x\n"
                          #define proc_name "ipv6_suffix"

                          MODULE_AUTHOR("Opennet Software Foundation (c) 2011, Pavlinux special for Vladislav Prodan :)");
                          MODULE_LICENSE("GPL v2");

                          static unsigned char n[9];

                          static int put_ip(char *buf, char **start, off_t offset, int len,
                                        int *eof, void *data)
                          {
                              int ret = 0;

                              if (offset  > 0) {
                                  ret  = 0;
                              } else {
                                  get_random_bytes(n, 8);
                                  ret = sprintf(buf, FORMAT, n[0],n[1],n[2],n[3],n[4],n[5],n[6],n[7]);
                              }
                              *eof = 1;
                              return ret;
                          }

                          static int rndip_init(void) {

                              static struct proc_dir_entry *ptr;
                              ptr = create_proc_entry(proc_name, S_IFREG | S_IRUGO, NULL);
                              if (!ptr) {
                                  printk(KERN_WARNING "unable to create %s", proc_name);
                                  return -1;
                              }
                              ptr->read_proc = put_ip;
                              ptr->size      = 19;
                              return 0;
                          }

                          static void __exit rndip_exit(void) {

                              remove_proc_entry(proc_name, NULL);
                          }

                          module_init(rndip_init);
                          module_exit(rndip_exit);

                          Makefile


                          ####
                          obj-m := ipv6_suffix.o

                          all:
                                  make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules

                          clean:
                                  make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean


                          test.sh


                          #!/bin/sh

                          insmod ./ipv6_suffix.ko;

                          IPNET="2001:0db8:11a3:09d7"

                          for ((i=0; i < 1000; i++))
                             do
                               echo $IPNET:`cat /proc/ipv6_suffix` >> randomip.txt;
                          done

                          rmmod ipv6_suffix;

                          time ./test.sh

                          real    0m2.940s
                          user    0m0.606s
                          sys     0m1.955s

                          -----

                          Митрофаныч, с тебя под BSD или чистый asm :)

                        • Генератор случайных чисел по SH, !*! pavlinux, 03:49 , 30-Мрт-17 (49)
                        • Генератор случайных чисел по SH, !*! universite, 20:58 , 07-Июн-11 (36)
                          > ---
                          > $ time od -N $((8*25)) -x /dev/urandom |tr \\n X |sed 's/\(^\|X\)[0-9]*
                          > */:/g;s/ 0+/ /g;s/ /:/g;s/:*$\|^:*//g;s/\(\([^:]*:[^:]*\)\{4\}[^:]\):/\1\n/g;q'

                          слишком сложное (затратное по CPU) преобразование.
                          Может упростим задачу:
                          есть 16 16-тиричных символа


                          tr -dc "[:xdigit:]" < /dev/urandom | head -c 16

                          или

                          openssl rand -hex 8

                          как вставить символ ":" через каждый 4-тый символ?

                        • Генератор случайных чисел по SH, !*! Andrey Mitrofanov, 09:26 , 08-Июн-11 (37)
                          > tr -dc "[:xdigit:]" < /dev/urandom | head -c 16

                          |sed 's/..../:&/g;s/^://'

                          Если : в начале можно использовать дальше, то второй s/ сократиткя.
                          Может, ещё s/:0+/:/g;s/::+/:/ добавить...

                        • Генератор случайных чисел по SH, !*! universite, 15:41 , 08-Июн-11 (42)
                          >> tr -dc "[:xdigit:]" < /dev/urandom | head -c 16
                          > |sed 's/..../:&/g;s/^://'
                          > Если : в начале можно использовать дальше, то второй s/ сократиткя.
                          > Может, ещё s/:0+/:/g;s/::+/:/ добавить...

                          Думаю, это будет окончательный вариант.
                          https://gist.github.com/1014255

                          А вот, оценка скорости выполнения:


                          # time sh random-ipv6-address-generator.15.sh
                          0.153u 0.187s 0:00.37 89.1%     332+614k 0+0io 0pf+0w
                          # time sh random-ipv6-address-generator.16.sh
                          0.055u 0.197s 0:00.22 109.0%    75+1092k 0+0io 0pf+0w
                        • Генератор случайных чисел по SH, !*! pavlinux, 00:57 , 10-Июн-11 (47)
                          >[оверквотинг удален]
                          >> Если : в начале можно использовать дальше, то второй s/ сократиткя.
                          >> Может, ещё s/:0+/:/g;s/::+/:/ добавить...
                          > Думаю, это будет окончательный вариант.
                          > https://gist.github.com/1014255
                          > А вот, оценка скорости выполнения:
                          >
                           
                          > # time sh random-ipv6-address-generator.15.sh
                          > 0.153u 0.187s 0:00.37 89.1%     332+614k 0+0io 0pf+0w
                          > # time sh random-ipv6-address-generator.16.sh
                          > 0.055u 0.197s 0:00.22 109.0%    75+1092k 0+0io 0pf+0w


                          # Copyright Andrey Mitrofanov
                          # Copyright pavlinux http://pavlinux.ru
                          # Copyright click0 aka universite
                          # 2011

                          MAXCOUNT=20
                          network_v6=2a01:7a0:2:12 # your ipv6 network prefix
                          psi=`openssl rand -hex $((8*($MAXCOUNT+1)))`

                            echo "$MAXCOUNT случайных IPv6:"
                            echo "-----------------"

                            for ((count=0; count <= $MAXCOUNT; ++count, mod=count<<4))
                               do
                                  echo "$network_v6:${psi:mod:4}:${psi:((4+mod)):4}:${psi:((8+mod)):4}:${psi:((12+mod)):4}";
                          done



                          real    0m0.033s
                          user    0m0.027s
                          sys     0m0.013s


                          Если вместо count<<4, поставить 16*count, то на 1000 номеров уже потеряем 2 секунды.

                        • Генератор случайных чисел по SH, !*! pavlinux, 00:27 , 10-Июн-11 (46)
          • Генератор случайных чисел по SH, !*! Andrey Mitrofanov, 14:40 , 08-Июн-11 (38)
            >> Какие-то левые символы проскакивают...
            > # tr -dc a-f0-9 < /dev/urandom | tr "[=2=]" "2" | head
            > -c 256

            Может быть,

            # LANG=C tr -dc a-f0-9 < /dev/urandom | head ...

            поможет? (А может, на UNIX-ах всё не так.)

            • Генератор случайных чисел по SH, !*! universite, 15:29 , 08-Июн-11 (41)
              >>> Какие-то левые символы проскакивают...
              >> # tr -dc a-f0-9 < /dev/urandom | tr "[=2=]" "2" | head
              >> -c 256
              > Может быть,
              > # LANG=C tr -dc a-f0-9 < /dev/urandom | head ...

              Это в Линуксе.
              В Фряхе похожее только


              #env
              ...
              LANG=ru_RU.KOI8-R
              MM_CHARSET=KOI8-R

              > поможет? (А может, на UNIX-ах всё не так.)

              Я всегда стараюсь убежать от игр с кодировкой в консоли и env - ибо всплывает куч проблем с кодировкой отличной от дефолтной.

  • Генератор случайных чисел по SH, !*! LSTemp, 04:51 , 17-Май-11 (9)
    >[оверквотинг удален]
    > rnd_ipv6_block ()
    > {
    > ## need bash!
    >     a=${array[$RANDOM%16]}${array[$RANDOM%16]}${array[$RANDOM%16]}${array[$RANDOM%16]}
    >     b=${array[$RANDOM%16]}${array[$RANDOM%16]}${array[$RANDOM%16]}${array[$RANDOM%16]}
    >     c=${array[$RANDOM%16]}${array[$RANDOM%16]}${array[$RANDOM%16]}${array[$RANDOM%16]}
    >     d=${array[$RANDOM%16]}${array[$RANDOM%16]}${array[$RANDOM%16]}${array[$RANDOM%16]}
    >     ipv6=$network_v6:$a:$b:$c:$d
    > }
    >

    где тут "в пределах заданной сети"? а если $network_v6 что-то больше, чем в данном банальном случае реализации?

    Цену решения огласи (https://www.opennet.ru/openforum/vsluhforumID9/9126.html)

  • Генератор случайных чисел по SH, !*! Andrey Mitrofanov, 14:51 , 08-Июн-11 (39)
    > Скрипт генерирует произвольный адрес ipv6 в пределах заданной сети $network_v6
    > На баше работает, но надо уйти от него на sh.

    ...и да, а где наши позиксивные друзья, когда они нужны?.... (А, вижу, там внизу - "ихде маи баппки".)

    > array=( 1 2 3 4 5 6 7 8 9 0 a
    > b c d e f )
    >     ipv6=$network_v6:$a:$b:$c:$d

    **Всё ещё пролетая над...  и поднимая стакан сока за http://blog.sesse.net/blog/tech/2011-06-08-02-02_world_ipv6_... безвестных героев...

    Вопрос! А

    ipv6="`printf "%s::%x" $network_v6 $RANDOM`" # мо буть, даже $[RANDOM+OFFSET]

    не _достаточно_?! ...гм, надо :/ ранее выданные отсеивать-перегенерировать.

    Как там у классика?~ "32К адресов будет достаточно в _любом_ сегменте!" %)))
    **> ...кстати, "пролетая над Череповцом"(с), придумалось:

    • Генератор случайных чисел по SH, !*! universite, 15:25 , 08-Июн-11 (40)
      >> Скрипт генерирует произвольный адрес ipv6 в пределах заданной сети $network_v6
      >> На баше работает, но надо уйти от него на sh.
      > ...и да, а где наши позиксивные друзья, когда они нужны?.... (А, вижу,
      > там внизу - "ихде маи баппки".)

      +1
      >> array=( 1 2 3 4 5 6 7 8 9 0 a
      >> b c d e f )
      >>     ipv6=$network_v6:$a:$b:$c:$d
      > **Всё ещё пролетая над...  и поднимая стакан сока за http://blog.sesse.net/blog/tech/2011-06-08-02-02_world_ipv6_...
      > безвестных героев...
      > Вопрос! А
      > ipv6="`printf "%s::%x" $network_v6 $RANDOM`" # мо буть, даже $[RANDOM+OFFSET]
      > не _достаточно_?! ...гм, надо :/ ранее выданные отсеивать-перегенерировать.

      Только в баше есть рандом.
      Тебе выдали блок /64 на сервер и тебе надо каждому сайту выделить свой Ipv6.
      Ладно создать ручками пару ip, а когда сайтов сотни?

      > Как там у классика?~ "32К адресов будет достаточно в _любом_ сегменте!" %)))  
      > **> ...кстати, "пролетая над Череповцом"(с), придумалось:

      Не смешно. Мало того, что производители железа (свитчи, роутеры) тупят с полноценной поддержкой ipv6, так и в куче прикладного софта полно багов с ipv6...


      • Генератор случайных чисел по SH, !*! ACCA, 23:25 , 08-Июн-11 (43)
        > Только в баше есть рандом.
        > Тебе выдали блок /64 на сервер и тебе надо каждому сайту выделить
        > свой Ipv6.
        > Ладно создать ручками пару ip, а когда сайтов сотни?

        Отдай их последовательно, нафига там RANDOM?


        PREFIX=$1
        DT=$(date +%s)
        DATE=$(printf %x $(expr $DT % 65536))
        TIME=$(printf %x $(expr $DT % 65536))
        CNT=1

        rnd_ipv6_block ()
        {
            X=$(printf %x $CNT)
            (( CNT += 1 ))
            ipv6=$network_v6:$PREFIX:$DATE:$TIME:${X}0
        }


        • Генератор случайных чисел по SH, !*! universite, 23:33 , 08-Июн-11 (44)
          >[оверквотинг удален]
          > DATE=$(printf %x $(expr $DT % 65536))
          > TIME=$(printf %x $(expr $DT % 65536))
          > CNT=1
          > rnd_ipv6_block ()
          > {
          >     X=$(printf %x $CNT)
          >     (( CNT += 1 ))
          >     ipv6=$network_v6:$PREFIX:$DATE:$TIME:${X}0
          > }
          >

          Сеошники не любят последовательно.
          Они надеются, что если выдавать произвольный адрес из пула - гугл не спалит, что блок привязан к одному серверу :)

          • Генератор случайных чисел по SH, !*! allez, 10:32 , 09-Июн-11 (45)
            > Сеошники не любят последовательно.
            > Они надеются, что если выдавать произвольный адрес из пула - гугл не
            > спалит, что блок привязан к одному серверу :)

            А если этот последовательный список потом перемешивать с помощью все того же shuf?

            • Генератор случайных чисел по SH, !*! ACCA, 15:49 , 11-Июн-11 (48)
              >> Сеошники не любят последовательно.
              >> Они надеются, что если выдавать произвольный адрес из пула - гугл не
              >> спалит, что блок привязан к одному серверу :)
              > А если этот последовательный список потом перемешивать с помощью все того же
              > shuf?

              Не поможет - гуглу всё равно, из чего кластер данных лепить. Общий провайдер, общий движок общие темплеты, общая подсеть, просто ссылаются только друг на друга без учёта смысла. Вычисляет тесный мир, а потом всю шоблу - в конец поисковой выдачи.

              SEOшники разве что на некропостах трафик отжимают, когда к ним приходят по старым ссылкам. Гуглы уже вполне прилично отсеивают Content Factory.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру