The OpenNET Project / Index page

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



Создать новую тему
 - Свернуть нити
Пометить прочитанным
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | Архив | Избранное | Мое | Новое | | |  
Форум Программирование под UNIX
Оставить в директории только три последние, по списку, файла, !*! universite, (Shell скрипты) 22-Авг-17, 01:02  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Подскажите, на чем сделать очередь?, !*! universite, (Shell скрипты) 24-Май-17, 04:03  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]


Почему не хватает привелегий для setreuid?, !*! belmondo, (Разное) 17-Сен-17, 12:53  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Bash кириллица, !*! Alex, (Shell скрипты) 20-Сен-17, 16:30  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Не могу додумать алгоритм, !*! Перспективный, (Shell скрипты) 17-Сен-17, 08:52  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Странно сортирует MYSQL, !*! REVERT_BUILD, (MySQL) 15-Сен-17, 02:24  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Звук Bash, !*! Alex, (Shell скрипты) 13-Сен-17, 13:40  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
  • app-misc beep, !*! Agressor (ok), 15:52 , 13-Сен-17 (1)
  • code echo x52 x49 x46 x46 xa6 x04 x00 x00 x57 x41 x56 x45 x66 x6d x74 x20 x10, !*! pavlinux (ok), 23:44 , 13-Сен-17 (2)
    > Подскажите, как в скрипте можно пикнуть в наушники. Скажем 600Гц 1сек.


    echo "\x52\x49\x46\x46\xa6\x04\x00\x00\x57\x41\x56\x45\x66\x6d\x74\x20\x10\x00
    \x00\x00\x01\x00\x01\x00\x40\x1f\x00\x00\x80\x3e\x00\x00\x02\x00\x10\x00\x4c
    \x49\x53\x54\x1a\x00\x00\x00\x49\x4e\x46\x4f\x49\x53\x46\x54\x0e\x00x00\x00
    \x4c\x61\x76\x66\x35\x36\x2e\x32\x35\x2e\x31\x30\x31\x00\x64\x61\x74\x61\x60
    \x04\x00\x00\xce\x04\xfc\xf9\x9f\xec\x7a\xe4\xe0\xe1\x65\xe6\x4b\xf0\xf7\xfd
    \xfe\x0b\x9d\x17\x11\x1e\x14\x1e\x7b\x17\xbc\x0b\x49\xfd\x44\xef\xba\xe4\x07
    \xe0\x45\xe2\x11\xeb\x94\xf8\xe3\x07\xa4\x15\xc0\x1e\x26\x21\x3a\x1c\x05\x11
    \xf5\x01\x61\xf2\xc3\xe5\xeb\xde\x61\xdf\x0e\xe7\x3e\xf4\x06\x04\xe1\x12\x8f
    \x1d\xb1\x21\x64\x1e\x63\x14\xea\x05\x2d\xf6\xa2\xe8\x4c\xe0\xfe\xde\x0a\xe5
    \x0f\xf1\x64\x00\x90\x0f\x21\x1b\x7a\x20\x69\x1e\x74\x15\xb6\x07\x5f\xf8\xf7
    \xea\x7a\xe2\xba\xe0\xf7\xe5\xed\xf0\x16\xff\x54\x0d\x8e\x18\x58\x1e\x79\x1d
    \x29\x16\x0a\x0a\xc4\xfb\x78\xee\x08\xe5\x7b\xe1\x92\xe4\x9d\xed\xa6\xfa\xd4
    \x08\x16\x15\xbc\x1c\x22\x1e\xf6\x18\x5c\x0e\xa2\x00\xc4\xf2\xcb\xe7\x14\xe2
    \xe7\xe2\x0d\xea\xfd\xf5\x1b\x04\x56\x11\xc8\x1a\x64\x1e\x62\x1b\x64\x12\x67
    \x05\x3c\xf7\xfa\xea\x4d\xe3\xe2\xe1\x07\xe7\x9f\xf1\x58\xff\x36\x0d\x34\x18
    \xea\x1d\x1b\x1d\xf3\x15\x05\x0a\xe5\xfb\xaa\xee\x37\xe5\x9b\xe1\xa0\xe4\x9b
    \xed\x99\xfa\xc6\x08\x06\x15\xb4\x1c\x1e\x1e\xfa\x18\x62\x0e\xa9\x00\xcb\xf2
    \xcd\xe7\x17\xe2\xe4\xe2\x0d\xea\xfa\xf5\x1a\x04\x55\x11\xc7\x1a\x64\x1e\x60
    \x1b\x65\x12\x68\x05\x3b\xf7\xfb\xea\x4e\xe3\xe3\xe1\x07\xe7\x9f\xf1\x58\xff
    \x35\x0d\x32\x18\xe9\x1d\x1b\x1d\xf3\x15\x04\x0a\xe5\xfb\xab\xee\x39\xe5\x9c
    \xe1\xa0\xe4\x9c\xed\x9b\xfa\xc5\x08\x08\x15\xb2\x1c\x1f\x1e\xf7\x18\x61\x0e
    \xea\xfc\xf5\x1a\x04\x56\x11\xc8\x1a\x65\x1e\x62\x1b\x64\x12\x68\x05\x3c\xf7
    \xfa\xea\x4c\xe3\xe1\xe1\x07\xe7\x9e\xf1\x57\xff\x36\x0d\x34\x18\xea\x1d\x1a
    \x1d\xf3\x15\x05\x0a\xe4\xfb\xaa\xee\x38\xe5\x9c\xe1\xa0\xe4\x9b\xed\x99\xfa
    \xc6\x08\x06\x15\xb4\x1c\x1e\x1e\xf9\x18\x61\x0e\xa7\x00\xca\xf2\xcc\xe7\x17
    \xe2\xe4\xe2\x0e\xea\xfb\xf5\x1b\x04\x56\x11\xc8\x1a\x65\x1e\x61\x1b\x65\x12
    \x67\x05\x3a\xf7\xf9\xea\x4c\xe3\xe2\xe1\x07\xe7\xa0\xf1\x5a\xff\x36\x0d\x33
    \x18\xea\x1d\x1b\x1d\xf3\x15\x03\x0a\xe4\xfb\xaa\xee\x37\xe5\x9b\xe1\xa0\xe4
    \x9c\xed\x9a\xfa\xc5\x08\x08\x15\xb3\x1c\x20\x1e\xf9\x18\x62\x0e\xa7\x00\xc8
    \xf2\xcc\xe7\x14\xe2\xe5\xe2\x0b\xea\xfb\xf5\x1a\x04\x57\x11\xc9\x1a\x66\x1e
    \x62\x1b\x64\x12\x67\x05\x3b\xf7\xf9\xea\x4c\xe3\xe1\xe1\x07\xe7\x9e\xf1\x58
    \xff\x37\x0d\x35\x18\xeb\x1d\x1b\x1d\xf3\x15\x05\x0a\xe4\xfb\xaa\xee\x37\xe5
    \x9a\xe1\x9f\xe4\x9b\xed\x99\xfa\xc7\x08\x07\x15\xb5\x1c\x1f\x1e\xfa\x18\x62
    \x0e\xa7\x00\xca\xf2\xcc\xe7\x16\xe2\xe4\xe2\x0d\xea\xfb\xf5\x1c\x04\x57\x11
    \xc9\x1a\x64\x1e\x60\x1b\x65\x12\x67\x05\x3a\xf7\xf9\xea\x4c\xe3\xe2\xe1\x07
    \xe7\xa0\xf1\x5a\xff\x36\x0d\x33\x18\xea\x1d\x1b\x1d\xf3\x15\x04\x0a\xe5\xfb
    \xaa\xee\x38\xe5\x9b\xe1\x9f\xe4\x9b\xed\x9a\xfa\xc4\x08\x08\x15\xb3\x1c\x20
    \x1e\xf8\x18\x62\x0e\xa7\x00\xc8\xf2\xcc\xe7\x15\xe2\xe7\xe2\x0c\xea\xfc\xf5
    \x1a\x04\x56\x11\xc8\x1a\x64\x1e\x61\x1b\x64\x12\x67\x05\x3b\xf7\xfa\xea\x4e
    \xe3\xe3\xe1\x08\xe7\x9e\xf1\x58\xff\x36\x0d\x34\x18\xea\x1d\x1a\x1d\xf3\x15
    \x05\x0a\xe4\xfb\xaa\xee\x37\xe5\x9b\xe1\x9f\xe4\x9b\xed\x99\xfa\xc6\x08\x07
    \x15\xb5\x1c\x1f\x1e\xfa\x18\x62\x0e\xa8\x00\xcb\xf2\xcc\xe7\x17\xe2\xe4\xe2
    \x0c\xea\xfa\xf5\x1a\x04\x55\x11\xc8\x1a\x65\x1e\x61\x1b\x66\x12\x69\x05\x3b
    \xf7\xfa\xea\x4d\xe3\xe2\xe1\x07\xe7\x9f\xf1\x58\xff\x35\x0d\x32\x18\xe9\x1d
    \x1b\x1d\xf4\x15\x04\x0a\xe5\xfb\xab\xee\x38\xe5\x9b\xe1\x9f\xe4\x9c\xed\x9a
    \xfa\xc5\x08\x08\x15\xb3\x1c\x21\x1e\xf9\x18\x63\x0e\xa8\x00\xc8\xf2\xcc\xe7
    \x14\xe2\xe6\xe2\x0b\xea\xfc\xf5\x1b\x04\x57\x11\xc9\x1a\x65\x1e\x62\x1b\x65
    \x12\x68\x05\x3c\xf7\xfa\xea\x4d\xe3\xe2\xe1\x08\xe7\x9e\xf1\x58\xff\x37\x0d
    \x34\x18\xea\x1d\x1a\x1d\xf3\x15\x05\x0a\xe4\xfb\xaa\xee\x38\xe5\x9b\xe1\x9f
    \xe4\x9a\xed\x99\xfa\xc7\x08\x07\x15\xb5\x1c\x1f\x1e\xfa\x18\x61\x0e\xa7\x00
    \xc9\xf2\xcb\xe7\x16\xe2\xe4\xe2\x0e\xea\xfc\xf5\x1d\x04\x56\x11\xc8\x1a\x64
    \x1e\x60\x1b\x64\x12\x67\x05\x3a\xf7\xf9\xea\x4c\xe3\xe2\xe1\x07\xe7\xa0\xf1
    \x59\xff\x37\x0d\x34\x18\xeb\x1d\x1b\x1d\xf2\x15\x04\x0a\xe4\xfb\xaa\xee\x39
    \xe5\x9c\xe1\xa1\xe4\x9c\xed\x9b\xfa\xc5\x08\x08\x15\xb2\x1c\x1f\x1e\xf7\x18
    \x61\x0e\xa7\x00\xc8\xf2\xcd\xe7\x14\xe2\xe6\xe2\x0c\xea\xfc\xf5\x1a\x04\x57
    \x11\xc8\x1a\x65\x1e\x62\x1b\x63\x12\x66\x05\x3b\xf7\xfa\xea\x4d\xe3\xe2\xe1
    \x08\xe7\x9f\xf1\x58\xff\x36\x0d\x34\x18\xe9\x1d\x19\x1d\xf2\x15\x04\x0a\xe5
    \xfb\xab\xee\x38\xe5\x9c\xe1\xa0\xe4\x9b\xed\x99\xfa\xc6\x08\x06\x15\xb4\x1c
    \x1e\x1e\xfa\x18\x62\x0e\xa7\x00\xca\xf2\xcc\xe7\x16\xe2\xe4\xe2\x0e\xea\xfb
    \xf5\x1b\x04\x55\x11\xc8\x1a\x64\x1e\x60\x1b\x66\x12\x68\x05\x3c\xf7\xfb\xea
    \x4e\xe3\xe3\xe1\x07\xe7\x9f\xf1\x59\xff\x35\x0d\x32\x18\xea\x1d\x1a\x1d\xf3
    \x15\x04\x0a\xe4\xfb\xac\xee\x36\xe5\xa1\xe1\x98\xe4\xa6\xed\x8a\xfa\xda\x08
    \xea\x14\xdb\x1c\xe8\x1d\x4d\x19\xb6\x0d\x61\x0e\xa7\x00\x1d\x04\x0" | aplay;

    сообщить модератору +/ответить
Perl и символ $, !*! Перспективный, (Perl) 12-Сен-17, 18:57  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Wildcard, !*! Alexander7, (Shell скрипты) 19-Авг-17, 20:09  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Проверить наличие файлов в директории, !*! Alexander7, (Shell скрипты) 13-Авг-17, 09:17  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]


Сравнить два Yaml (Python или др.), !*! Aik, (Разное) 12-Авг-17, 15:57  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
  • https github com seperman deepdiff, !*! Vlad (??), 15:37 , 16-Авг-17 (1)
    > Может кто-то уже сделал...
    > Чем/как сравнить два Yaml на Python?
    > Или вопрос в другой форме: посоветуйте пожалуйста, где взять готовый алгоритм сравнения
    > деревьев смеси словарей и списков - словаря списков, списков словарей. Значения
    > на самом нижнем уровне в словарях и/или списках это числа или
    > строки.
    > Спасибо!

    https://github.com/seperman/deepdiff


    сообщить модератору +/ответить
Как , !*! Dmitry, (Shell скрипты) 21-Июл-17, 18:26  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Непонятная работа команды read, !*! Alexander7, (Shell скрипты) 20-Июл-17, 01:25  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Вывод по шаблону, !*! MRDK, (Shell скрипты) 12-Июл-17, 12:58  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
  • echo 17071210 log 31 51 761007,a,b,c 124 awk -F , print 1 17071210 l, !*! Andrey Mitrofanov (?), 13:46 , 12-Июл-17 (1)
    > Дано:
    > после применения  awk -F ',' '{print $1}' имеется поток данных вида
    > 17071210.log:31:51.761007
    > где у нас в первой переменной окажется час, во второй - минуты.
    > Как это вывести на экран?

    $ echo '17071210.log:31:51.761007,a,b,c' |awk -F ',' '{print $1}'
    17071210.log:31:51.761007
    $ echo '17071210.log:31:51.761007,a,b,c' |gawk -F ',' 'match($1,"([0-9][0-9])\\.log:([0-9][0-9])",aa){print aa[1],aa[2]}'
    10 31
    $ _

    > Шаблон sed 's/.*/регулярка/' выводит

    сообщить модератору +/ответить
    • gt оверквотинг удален спасибо, !*! MRDK (ok), 14:16 , 12-Июл-17 (2)
      >[оверквотинг удален]
      >> 17071210.log:31:51.761007
      >> где у нас в первой переменной окажется час, во второй - минуты.
      >> Как это вывести на экран?
      > $ echo '17071210.log:31:51.761007,a,b,c' |awk -F ',' '{print $1}'
      > 17071210.log:31:51.761007
      > $ echo '17071210.log:31:51.761007,a,b,c' |gawk -F ',' 'match($1,"([0-9][0-9])\\.log:([0-9][0-9])",aa){print
      > aa[1],aa[2]}'
      > 10 31
      > $ _
      >> Шаблон sed 's/.*/регулярка/' выводит

      спасибо

      сообщить модератору +/ответить
  • echo 17071210 log 31 51 761007,a,b,c 124 sed s 0-9 0-9 log 0-, !*! _ (??), 17:25 , 12-Июл-17 (3)
    echo '17071210.log:31:51.761007,a,b,c' |sed 's/^.*\([0-9][0-9]\)\.log:\([0-9][0-9]\).*$/\1 \2/'
    10 31
    сообщить модератору +/ответить
  • Это perlесли уж с заглядыванием вперед и назад - то чуть рихтанутьecho 17071210 , !*! михалыч (ok), 19:45 , 12-Июл-17 (4)
    > 17071210.log:31:51.761022
    > 17071210.log:31:51.761026
    > (год+месяц+день+час.log:мин:сек.мс)
    > Надо преобразовать в формат час:мин
    > регулярка для этого (\d\d(?=\.log\:)).*((?<=\.log\:)\d\d)
    > где у нас в первой переменной окажется час, во второй - минуты.
    > Как это вывести на экран?

    Это perl
    если уж с заглядыванием вперед и назад - то чуть рихтануть

    echo 17071210.log:31:51.761007 | perl -pe 's/.*(\d\d)(?:(?=\.log\:)).*(?:(?<=\.log\:))(\d\d).*/$1:$2/'

    но лучше как на sed уже показали
    echo 17071210.log:31:51.761007 | perl -pe 's/.*(\d\d)\.log\:(\d\d).*/$1:$2/'

    так как-то короче, да и понятнее, а то куча вопросительных знаков воспринимается плохо
    и порождает дополнительные вопросы (мля, каламбурчик ))

    сообщить модератору +/ответить
Не разобрался с подстановкой $@, !*! Alexander7, (Shell скрипты) 08-Июл-17, 13:43  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
  • я не понял - чего ты не понял командный интерпретатор - он такой интерпретат, !*! михалыч (ok), 18:24 , 08-Июл-17 (1)
    > Если несколько аргументов у скрипта, то команда с проверкой наличия строки аргументов
    > выдаёт сообщение об ошибке
    > [ "$@" ] - не работает, пишет "unexpected operator". Но я рассчитывал,
    > что раз в кавычках, значит все аргументы будут просто подставлены как
    > одна строка.
    > Str=$@ ; [ "$Str" ] - работает правильно.
    > Люди добрые, объясните пожалуйста, чего я не понял?
    > Проверял в sh и в bash.
    > Спасибо

    я не понял  - чего ты не понял? ))
    командный интерпретатор - он такой интерпретатор, одним словом, тот ещё фрукт,
    ну вот так вот он интерпретирует ))

    а если серьёзно, то зачем вам это?
    ну в смысле команда [ ] - это же эквивалент команды test
    что собрались протестировать? всю строку из аргументов?

    может в вашем случае можно обойтись проверкой общего количества ($#) переданных аргументов
    или проверкой какого-то конкретного аргумента, второго там или третьего ($2 $3)

    но если сильно хочется из разряда чего-то странного, то можно так

    #!/bin/sh

    # ./test.sh 1 blah bla2

    if [ "$(echo -n $@)" = "1 blah bla2" ] ; then
        echo OK
    else
        echo BAD
    fi


    или, сдаётся мне, это был риторический вопрос ))
    if [ $# -eq 0 ] ; then
        echo "enter the arguments"
    else
        :
    fi

    вот так!

    сообщить модератору +/ответить
    • Проверка появилась чисто машинально - суть аргументов скрипта в том, это текс, !*! Alexander7 (ok), 10:09 , 09-Июл-17 (3)
      > а если серьёзно, то зачем вам это?
      > что собрались протестировать? всю строку из аргументов?
      > может в вашем случае можно обойтись проверкой общего количества ($#) переданных аргументов

      Проверка $@ появилась чисто машинально - суть аргументов скрипта в том, это текстовые данные и надо было проверить, что строка не пустая. Когда понял, что получился бред, заменил на проверку количества аргументов, т.к. аргументов может не быть, но если есть, то это не пустые строки. Практически, задача решена.

      Ну вот осталось чувство глубокого не-удовлетворения от непонимания этой подстановки.
      Теоретически, количество аргументов и пустая строка - это две большие разницы. И нельзя проверять наличие текста по числу аргументов, аргумент может и есть, но он пустой.
      scrpt '' - аргумент один, а текста нет.

      Вероятно, логика разбора внутренних команд типа [ ] и echo отличается от разбора вызова внешних программ, а описания этого феномена я не нахожу.

      сообщить модератору +/ответить
  • 1 Ваша ошибка -- в рассчётах Пожроюности - в man bash , !*! Andrey Mitrofanov (?), 10:01 , 09-Июл-17 (2)
    > Если несколько аргументов у скрипта, то команда с проверкой наличия строки аргументов

    [ "$1" ]


    > [ "$@" ]
    >Но я рассчитывал,
    > что раз в кавычках, значит все аргументы будут просто подставлены как
    > одна строка.

    Ваша ошибка -- в рассчётах. Пожроюности - в man bash.

    сообщить модератору +/ответить
  • Две вещи 1 - это массив аргументов из командной строки, а вся командная, !*! ACCA (ok), 19:18 , 11-Июл-17 (7)
    > Люди добрые, объясните пожалуйста, чего я не понял?

    Две вещи:
        1. $@ - это массив аргументов из командной строки, а "вся командная строка" лежит в $*
        2. [ - это команда test. Ей нужен оператор, что же нужно сделать

    Напиши так и будет тебе счастье:

    [ -n "$*" ]

    сообщить модератору +/ответить
Ald-0.1.6., !*! _Mister, (Отладка и профилирование) 27-Июн-17, 13:52  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Программирование USB, !*! _Mister, (C/C++) 29-Июн-15, 10:32  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]


Рисование в Ubuntu (Qt, OpenCV), !*! Алексей, (Библиотеки, функции) 09-Дек-16, 19:14  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Удаление строки после использования, !*! boroda4, (Shell скрипты) 13-Июн-17, 22:13  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Как получить полный путь вышестоящей директории?, !*! universite, (Shell скрипты) 08-Июн-17, 19:01  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Bash сравнить строки, !*! lxs, (Shell скрипты) 06-Апр-17, 18:15  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]


Парсер значения, !*! VladiS, (Shell скрипты) 05-Июн-17, 13:48  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Сохранение в файл результата Bash, !*! dboon, (Shell скрипты) 02-Май-17, 18:15  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
diff в разные файлы., !*! pavlinux, (Shell скрипты) 21-Апр-17, 01:53  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Диапазон с исключением, !*! neekonoff, (Shell скрипты) 18-Апр-17, 02:25  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
  • Правильная формулировка для гугления - XY problem shell-у подсеть на х не нужн, !*! ACCA (ok), 04:33 , 18-Апр-17 (1)
    > Подскажите пжлста, как в shell указать что например подсеть 192.168.1.0/24 кроме адресов
    > 192.168.1.50 и 192.168.1.60?

    Правильная формулировка для гугления - "XY problem"

    shell-у подсеть на х* не нужна. Ты что-то другое имел в виду. Подумай и скажи толком, что ты хочешь сделать.

    сообщить модератору +/ответить
  • например так exclude 50,60обработку exclude вам естественно надо реализовать сам, !*! ss (??), 09:52 , 18-Апр-17 (2)
    > Подскажите пжлста, как в shell указать что например подсеть 192.168.1.0/24 кроме адресов
    > 192.168.1.50 и 192.168.1.60?
    > Или может быть дайте правильную формулирвку для гугления.
    > Спасибо.

    например так:
    exclude 50,60
    обработку exclude вам естественно надо реализовать самостоятельно в скрипте.
    например если доступ к адресам 192.168.1.0/24 у вас разворачивается в цикле-
    то добавить правило внутрь цикла-
    if exists exclude then nop (посмотрите как это реализуется в вашей версии shell)

    сообщить модератору +/ответить
  • всё зависит от контекста, смотря для чего это нужнонапример, для htaccess Rewri, !*! михалыч (ok), 12:53 , 18-Апр-17 (3) –1
    > Подскажите пжлста, как в shell указать что например подсеть 192.168.1.0/24 кроме адресов
    > 192.168.1.50 и 192.168.1.60?
    > Или может быть дайте правильную формулирвку для гугления.
    > Спасибо.

    всё зависит от контекста, смотря для чего это нужно

    например, для .htaccess
    RewriteCond %{REMOTE_ADDR} !192\.168\.1\.50
    RewriteCond %{REMOTE_ADDR} !192\.168\.1\.60
    RewriteCond %{REMOTE_ADDR} 192\.168\.1\.[1-254]

    можно вырубить и диапазон адресов
    RewriteCond %{REMOTE_ADDR} !10\.0\.[1-70]\.[1-254]

    для файервола ipfw в FreeBSD

    разрешить для всех в сети 192.168.1.0.24 кроме 50 и 60
    ipfw add 501 allow all from any to '192.168.1.0{1-49}'
    ipfw add 502 allow all from any to '192.168.1.0{51-59}'
    ipfw add 503 allow all from any to '192.168.1.0{61-254}'

    для файервола pf опять же в FreeBSD можно так
    pass in from !192.168.1.50

    если ip из черного списка можно объединить в меньшую подсеть,
    то иногда удобнее работать именно с подсетью сразу,
    например, нужно исключить ip 192.168.1.5/32 и 192.168.1.6/32
    тогда, объединив их в подсеть 192.168.1.4/30 можно исключать уже подсеть
    применительно к pf
    pass in from !192.168.1.4/30

    конечно, в таком случае мы жертвуем двумя адресам:
    на network 192.168.1.4 и на broadcast 192.168.1.7
    зато взамен получаем большую гибкость и меньшее количество правил

    как сказал ACCA
    > Подумай и скажи толком, что ты хочешь сделать

    и для чего

    сообщить модератору –1 +/ответить
    • gt оверквотинг удален Мне для скрипта с правилами IPFW Спасибо , !*! neekonoff (ok), 16:09 , 18-Апр-17 (4) –1
      >[оверквотинг удален]
      > например, нужно исключить ip 192.168.1.5/32 и 192.168.1.6/32
      > тогда, объединив их в подсеть 192.168.1.4/30 можно исключать уже подсеть
      > применительно к pf
      > pass in from !192.168.1.4/30
      > конечно, в таком случае мы жертвуем двумя адресам:
      > на network 192.168.1.4 и на broadcast 192.168.1.7
      > зато взамен получаем большую гибкость и меньшее количество правил
      > как сказал ACCA
      >> Подумай и скажи толком, что ты хочешь сделать
      > и для чего

      Мне для скрипта с правилами IPFW.
      Спасибо!

      сообщить модератору –1 +/ответить
      • Нормальный у тебя shell Ну тогда слушай - https www freebsd org doc handbook , !*! ACCA (ok), 16:56 , 18-Апр-17 (5)
        > Мне для скрипта с правилами IPFW.

        Нормальный у тебя shell. Ну тогда слушай - https://www.freebsd.org/doc/handbook/firewalls-ipfw.html, почитай хотя бы раздел 29.4.3

        Порядок правил имеет значение, кто первый встретился того и тапки. Например:

        ipfw -q add 00310 allow all from 192.168.1.50/32 to any in via dc0
        ipfw -q add 00320 deny  all from 192.168.1.0/16  to any in via dc0


        allow там или deny - сам разбирайся, ты ничего про это не сказал.

        сообщить модератору +/ответить
        • Да это я понимаю Хэндбук уже курил И даже вот это курил http www lissyara su, !*! neekonoff (ok), 17:25 , 18-Апр-17 (6) –1
          >> Мне для скрипта с правилами IPFW.
          > Нормальный у тебя shell. Ну тогда слушай - https://www.freebsd.org/doc/handbook/firewalls-ipfw.html,
          > почитай хотя бы раздел 29.4.3
          > Порядок правил имеет значение, кто первый встретился того и тапки. Например:
          > ipfw -q add 00310 allow all from 192.168.1.50/32 to any in via
          > dc0
          > ipfw -q add 00320 deny  all from 192.168.1.0/16  to any
          > in via dc0
          > allow там или deny - сам разбирайся, ты ничего про это не
          > сказал.

          Да это я понимаю. Хэндбук уже курил. И даже вот это курил http://www.lissyara.su/articles/freebsd/tuning/ipfw_nat/
          Спасибо

          Раз уже здесь отвечаете, помогите решить задачу.. Уже сломал мозг.

          Есть машина FreeBSD 10.3, внутренний (например fxp0) и внешний (em0) интерфейсы. IPFW kernel NAT.
          На внутреннем подсеть 10.1.10.0/24 и хост с Exchange 2013 (например 10.1.10.12), к которому нужно пробросить 25, 80 и 443 порты.
          Подскажите структуру срипта с правилами. И чтоб еще в дальнейшем можно было dummynet подключить.. То есть с выключенным net.inet.ip.fw.one_pass
          Я, взяв за основу пример из хэндбука https://www.freebsd.org/doc/ru_RU.KOI8-R/books/handbook/fire... , обламался. И уже неделю продолжаю обламываться.
          Вот, что набросал я, но оно не работает:

          #!/bin/sh
          ipfw -q -f flush
          cmd="ipfw -q add"

          $cmd 010 allow all from any to any via lo0
          $cmd 020 allow all from any to any via fxp0

          ipfw -q nat 1 config ip 1.2.3.4 same_ports reset deny_in \
                                  redirect_port tcp 10.1.10.12:80 80 \
                                  redirect_port tcp 10.1.10.12:443 443 \
                                  redirect_port tcp 10.1.10.12:25 25

          $cmd 100 nat 1 ip from any to any in via em0
                                  
          $cmd 200 check-state

          $cmd 300 skipto 800 tcp from 10.1.10.0/24 to any out via em0 setup keep-state

          $cmd 400 deny all from any to any frag in via em0
          $cmd 500 deny tcp from any to any established in via em0

          $cmd 600 tcp from any to 10.1.10.12 25,443 in via em0 setup keep-state

          $cmd 700 deny all from any to any via em0

          $cmd 800 nat 1 ip from any to any out via em0

          $cmd 900 allow all from any to any
          $cmd 999 deny all from any to any

          ----------------------------------------------------------
          sysctl net.inet.ip.fw.one_pass=0

          Подскажите, почему нет связи с 10.1.10.12 извне?

          Ведь входящий трафик на внешний IP 1.2.3.4 на порт, например, 443:
          На проходе IN:
          1. Приходит на правило 100. Меняется адрес назначения (так как редирект_порт)
          2. Далее выходит изната и, т.к. one_pass=0, доходит до правила 600 (в динамической таблице создается запись для пар адресов внутреннего и внешнего адреса), выходит из прохода IN и попадает в проход OUT.
          На проходе OUT:
          3. Доходит до правила 020 и отправляется на внутренний хост 10.1.10.12:443.

          Ответный трафик от хоста 10.1.10.12
          На проходе IN:
          4. Доходит до правила 020, входит из прохода IN и попадает в проход OUT.
          На проходе OUT:
          5. Доходит до правила 200 и отправляется на внешний адрес (т.к. запись о соединении уже есть в динамической таблице).

          Подскажите, где ошибка?

          На всякий случай, вот оригинальная тема https://www.opennet.dev/openforum/vsluhforumID1/96869.html

          Я уже готов за понимание (ну или хотя бы за готовый срипт) глаз отдать, как один известный персонаж скандинавских баек. Ну или в крайнем случае пиво )

          сообщить модератору –1 +/ответить
Социальная сеть на C++, !*! анонимЪ, (C/C++) 05-Окт-15, 10:33  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]


Как подсчитать статистику траффика по каждому домену?, !*! universite, (Shell скрипты) 13-Мрт-17, 00:43  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Python библитека для Git, !*! Aik, (Python) 21-Фев-17, 20:00  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Непонятки с TTY, !*! grizzlynet, (Shell скрипты) 15-Фев-17, 17:18  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
Класс символов /\C/ в рег. выражениях устарел. как заменить ?, !*! VladimirV, (Perl) 13-Фев-17, 17:57  [ | | | ] [линейный вид] [смотреть все] [раскрыть новое]
  • Насколько я понимаю, здесь всего лишь проверяется, что get возвращает непустую с, !*! XAnder (ok), 12:48 , 14-Фев-17 (1)
    > вот строки с 243
    > 243 if ($self->get('a'.$i) =~ /\C/) {
    > 244            $answers .= $self->getValue("a".$i)."\n";
    > 245        }

    Насколько я понимаю, здесь всего лишь проверяется, что get возвращает непустую строку, поскольку /\C/ соответствует любой строке, содержащей хотя бы один байт, то есть любой непустой строке. \C — это низкоуровневая штука, понятно, почему её искореняют.

    Напрашивается замена на «ne ''».

    >[оверквотинг удален]
    >  sub escape_char {
    > -    return join '', @URI::Escape::escapes{$_[0] =~ /(\C)/g};
    > +    if (utf8::is_utf8($_[0])) {
    > +        my $s = $_[0];
    > +        utf8::encode($s);
    > +        unshift(@_, $s);
    > +    }
    > +
    > +    return join '', @URI::Escape::escapes{$_[0] =~ /(.)/sg};
    >  }

    Тут немного не про то, и как-то слишком намудрено по-моему: если строка в UTF-8, её снова кодируют в UTF-8. Хотя, контекста не видно, может тут так оно и надо.

    сообщить модератору +/ответить
    • C соответствует одному байту С char тогда можно заменить на точку или ил, !*! VladimirV (ok), 17:50 , 14-Фев-17 (2)
      >> вот строки с 243
      >> 243 if ($self->get('a'.$i) =~ /\C/) {
      >> 244            $answers .= $self->getValue("a".$i)."\n";
      >> 245        }
      > Насколько я понимаю, здесь всего лишь проверяется, что get возвращает непустую строку,
      > поскольку /\C/ соответствует любой строке, содержащей хотя бы один байт, то
      > есть любой непустой строке. \C — это низкоуровневая штука, понятно, почему
      > её искореняют.
      > Напрашивается замена на «ne ''».

      \C соответствует одному байту (С char)
      тогда можно заменить на . (точку) или .+
      или наоборот !~ /^$/  (не пустая строка)
      правильно понимаю?

      сообщить модератору +/ответить
      • Если непременно нужно регулярное выражение, то попробуйте точку Только помните,, !*! XAnder (ok), 09:12 , 15-Фев-17 (3)
        > \C соответствует одному байту (С char)
        > тогда можно заменить на . (точку) или .+
        > или наоборот !~ /^$/  (не пустая строка)
        > правильно понимаю?

        Если непременно нужно регулярное выражение, то попробуйте точку. Только помните, что символ перевода строки (\n) точке по умолчанию не соответствует, так что используйте модификатор s. Только вот мне кажется, что проверять строку на «пусто — не пусто» с помощью регулярок — это перебор.

        Попробуйте и так, и эдак. Если заработает — хорошо, нет — ищите другое решение.

        сообщить модератору +/ответить
 
Пометить прочитанным Создать тему
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | Архив | Избранное | Мое | Новое | | |



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

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