
Author Archives: Tolik Punkoff
Подарили нашему российскому корешу автограф БГ

В обмен на «Курочку» конечно же. БГ еще 400 лет концерты давать будет, а вот «Курочку» хуй в третий раз перевыпустят.
Автограф выиграли на партизанском канале ARU TV, аж сам Артемий Троицкий нам подарил.
Опубликовано с разрешения всех источников и акторов. Копилефт всех материалов подтвержден.
Dyna Blaster for DOS (Бомбермен)

Родное demo игры:

По многочисленным просьбам зрителей, Werwolf сделал репак старой DOS-овской игры.
Под Windows XP и выше можно играть в DOSBOX последней версии (на момент написания заметки 0.74-3).
Добавлена возможность включения и отключения фоновой музыки:
Для включения надо запустить файл ONMUSIC.EXE, для выключения OFFMUSIC.BAT, по умолчанию фоновая музыка отключена.
Добавлен файл CHEATS.TXT с кодами для доступа к каждому уровню и кодом на бессмертие. Копия на PasteBin
Курочка открыла дверь в Карелии.

И теперь едет открывать ее в Финляндии.
«Курочка, открой дверь», это тебе не простая крипипаста про деревню. Тут и непонятной природы сущности, и странные секты, и спецслужбы, тайное российское, а возможно и мировое правительство. Даже отряд казаков встречается.
В общем, если бы Стивен Кинг и Виктор Пелевин писали сценарий к Евангелиону, примерно оно бы и вышло.
Думаю, вообще, произведение недооцененное, по причине «камерности» и совсем никакого пиара, Раймонду Крумгольду должно было бы зайти. И вообще, по повести аниме надо снимать, а уж статья на Катабасии обязательна вообще.
Книга с «Курочкой» и еще несколькими рассказами того же автора, вновь вышла ограниченным тиражом. Мы ждали этого джва минимум 5 годиков.
Текст и озвучка доступны в сети бесплатно:
Текст на Мракопедии
Озвучка от Криперс
Заказать книжку, если кому надо, и если осталось, можно в описании под озвучкой.
Скрипт для тестирования сетевых соединений. Инструкция.
Друзья из одной небольшой фиромочки попросили написать небольшой скрипт для тестирования соединений, чтобы быстро понять, где отвалилось. Например, упал роутер, не отвечает внутренний сервер, упал провайдер, или сдох VPN. Попросили сделать кросивое, с этим тоже справился, ошибки выделяются красным цветом, пройденные этапы зеленым, можно включить или отключить звуковое оповещение через PC-speaker.
+ Последовательно проводить два вида тестов: ping и получение страницы (или файла) с web-сервера
+ Оповещать пользователя об ошибках или пройденных тестах, с цветным текстом.
+ Выдавать звуковые сигналы об успешном завершении теста, или об ошибке на PC-speaker.

Для звуковых оповещений должен быть настроен PC-speaker и установлена утилита beep (копия).
Последовательность операций задается в конфигурационном файле.
Конфигурационный файл состоит из строк следующего формата:
операция|адрес|отображаемое описание|прервать/игнорировать
Пока поддерживаются только две операции:
ping — для ping’а адреса
getp — для получения страницы или файла с WEB-сервера (с помощью wget)
адрес — адрес, WWW для getp, IP или WWW для ping.
отображаемое описание — описание операции, текст, который будет выводиться на консоль.
прервать/игнорировать — при ошибке операции, если указано ключевое слово break, скрипт останавливает работу и выводит сообщение о том, что в ходе тестирования произошли ошибки. Если указать иное значение, например, skip, то скрипт продолжит производить тесты, пока не закончится конфигурационный файл, или пока не будет следующий сбой в тесте, где указана опция break.
Названия операций и break нечувстивительны к регистру (т.е. можно написать Ping, ping или Getp, GeTP или BreaK, breaK).
Первые два поля (операция и адрес) являются обязательными. Если они не будут указаны, скрипт будет прерван на строке с ошибкой:
... Ping|192.168.0.1|Main router|break #Main router ping ping|[ДАННЫЕ УДАЛЕНЫ]|Provider IP|break getp ...

Если не будет указано поле описания, то оно будет по умолчанию установлено в значение No desription:

Если последнее поле не будет заполнено, то оно принимает значение break.
Если в первом поле будет неверно указанный код операции, то скрипт его проигнорирует, выдав соответствующее сообщение, продолжит выполнять другие операции, но завершится с ошибкой:
Ping|192.168.0.1|Main router|break #Main router ping
ping|[ДАННЫЕ УДАЛЕНЫ]|Provider IP|break
getp|[ДАННЫЕ УДАЛЕНЫ]|Provider page
1234|[ДАННЫЕ УДАЛЕНЫ]|VPN Server IP|break
ping|8.8.8.8|Internet IP|break
getp|google.com|Internet page|break

Для разделения полей используется символ |
В конфигурационном файле можно использовать комментарии, начинающиеся с символа #, все, что находится после этого символа — игнорируется. Пустые строки также игнорируются.
#inettest.cfg example
Ping|192.168.0.1|Main router|break #Main router ping
ping|x.x.x.x|Provider IP|break #Change x.x.x.x to your provider ip
getp|myprovider.net|Provider site page|skip #change myprovider.net to real site your provider
ping|x.x.x.x|VPN Server IP|break #Change x.x.x.x to real VPN provider IP
ping|8.8.8.8|Internet IP|break
getp|google.com|Internet page|break
Скрипт не имеет параметров командной строки, основные настройки осуществляются через переменные самого скрипта:
CONFIG — путь к конфигурационному файлу, например CONFIG="./inettest.cfg". Если конфигурационный файл не будет найден, скрипт выдаст ошибку:
CRITICAL ERROR: Config file ./inettest.cfg not exist!
NOCOLOR — если значение равно 0, включить вывод цветного текста на консоль, если 1 — отключить. По умолчанию 0
NOCOLOR=1:

NOSOUNDP — включение ( по умолчанию 0) или отключение (1) звука в процессе тестов. Звук выдается после каждого отдельного теста.
NOSOUNDF — аналогично предыдущей переменной, только звук звучит после окончания всех тестов или их прерывания.
NOADDR — 0, включить тестируемый адрес в вывод скрипта, 1 — не включать.
NOADDR=0:

NOADDR=1:

PACKETS — количество пакетов для команды ping (по умолчанию PACKETS=3)
TIMEOUT — тайм-аут для получения страницы или файла (в скрипте делается с помощью wget, по умолчанию TIMEOUT=5)
Конфиг:
Ping|192.168.0.1|Main router|break #Main router ping
ping|[ДАННЫЕ УДАЛЕНЫ]|Provider IP|skip
getp|[ДАННЫЕ УДАЛЕНЫ]Provider page|skip
ping|[ДАННЫЕ УДАЛЕНЫ]|VPN Server IP|break
ping|8.8.8.8|Internet IP|break
getp|google.com|Internet page|break
Результат:

ping:
1 — No reply (не один из пакетов до пингуемого адреса не дошел)
2 — Other error (другая ошибка, в большинстве случаев — «сеть недоступна»).
getp (wget):
1 — Иная / общая ошибка (generic error code)
2 — Ошибка в параметрах командной строки или файлах конфигурации (.wgetrc или .netrc)
3 — Ошибка файлового ввода/вывода (I/O error)
4 — Ошибка сети (например, при обрыве связи)
5 — Ошибка SSL
6 — Ошибка идентификации (неправильное имя пользователя или пароль)
7 — Ошибка протокола
8 — Ошибка сервера (например, нужный файл на сервере не найден, ошибка 404)
0 — Ошибок в ходе тестов не произошло.
1 — Произошла хотя бы одна ошибка.
(Ч)мобик.
Вчера поехал в город, че-то захотелось вкусьненького, решил посетить ресторацию.
На такси обратно жаба задавила ехать, пошел на маршрутку до Бесовца, на останiвке (кто понял, тот понял) стоит чмобик, и кому-то бурно рассказывает по телефону:
— Да, еду. Вот через неделю уже еду, на фронт.
— Я же сержант медицинской службы.
— Да у меня экипировка будет, я же спонсора нашел. Осталось бронепластины купить.
— Дык мой генеральный [директор] тоже патриот, он мне все купит.
Хотелось, конечно, спросить, какие бронежилеты помогают от Хаймарса, но я вслушивался в важный разговор, чтобы понять, какой мудак его спонсирует. Жаль, название фирмы так и не было произнесено, иначе б я похвастался, что пополнил (в очередной раз) базу «Миротворца».
ЗЫ. Вот Мырзин мучительно отказывается от работы на СБУ, хотя ему настойчиво предлагали, а мы аж всей компанией хотим, и даже может че-то можем, хотя нас два околоайтишника, один айтишник, графоман и ветеринарша, но нам не предлагают.
ТрусЫ, история друга про военкомат.
Я ограниченно годен ([ДАННЫЕ УДАЛЕНЫ] психиатрическая болезнь), воевать могу, но если таблетки есть, если кончатся, могу воевать с чертями, лешими и сослуживцами. Диагноз был древний, как говно мамонта, так что к 15 годам (первая медкомиссия) военкомата я абсолютно не боялся, так что вот вам первая прикольная история.
К первой медкомиссии я как-то не подготовился, осень (потому не купался), я только с дачи приехал, соответственно на мне были трусы системы «колени в тепле», тем более, сосланные на эту дачу еще до появления у Земли естественного спутника. Потому, разделся я только до пояса. Захожу в коридор военкомата, меня встречает какой-то дяденька в форме:
— А ты почему до трусов не разделся?
И это «ты» меня перемкнуло.
— Во-первых, не «ты», а «вы», я к вам на «вы», уважительно, а вы мне «тыкаете».
Дяденька от неожиданности поперхнулся, а очередь из примерно таких же по возрасту пацанов, удивленно на меня воззрилась.
— Во-вторых, предоставьте мне закон, по которому я должен быть тут в трусах! Номер федерального закона, конкретный пункт. Если он есть, я сниму штаны, если нет, то вы не должны от меня это требовать!
Дяденька, наконец, нашелся (хоть как-то):
— Ну все стоят в трусах.
— Ну и пусть стоят, их личное дело.
По-моему, даже глаза у дяденьки начали смотреть в разные стороны, наконец, он собрал их в кучу, и грозно на меня надвинулся. Думаю, он бы даже меня ударил, если бы свидетелей не было.
— Ты че тут, самый умный?
— Ну не дурак, наверное. Городскую олимпиаду по биологии взял. Может, на районную поеду. И кстати, представьтесь пожалуйста, я вот [ДАННЫЕ УДАЛЕНЫ], а вы? Имя, фамилия, должность, звание?
Тут дяденька резко развернулся и скрылся в неизвестном направлении.
А первую комиссию я так в штанах и прошел.
Сейчас, рассуждая «с высоты прожитых лет», думаю, что нанес «дяденьке» смертельную обиду, ведь его словесное унижение пятнадцатилетним подростком видела не только очередь из таких подростков, но даже вахтерша военкомата, которая сидела в прозрачной будке (как бы сейчас сказали «ресепшне») и все видела. Извини, но ты сам себя как козел повел.
Linux: как проверить в скрипте, пингуется ли адрес.
Оказалось все очень просто.
ping <ip|url> -c <packets_count>
где:
<ip|url> — IP или URL адрес
ip — IP-адрес (например 8.8.8.8 или 192.168.0.1)
url — URL-адрес (например google.com)
<packets_count> — количество отправленных пакетов
В следующем примере мы пингуем google.com:
ping google.com -c 3
Вывод команды приводить не буду для экономии места, кому нужно, смотрите на PasteBin
Можно пропинговать и по IP, например, локальный роутер:
ping 192.168.0.1 -c 3
Внимание! Количество отправленных пакетов (-с <число>), если вы используете ping в скрипте bash нужно указать обязательно, иначе команда ping никогда не прекратит свою работу и завесит скрипт, в отличии от команды ping в Windows (она по умолчанию посылает 5 пакетов и прекращает работу).
Естественно, для анализа работы ping в скрипте, нам потребуются коды возврата.
К сожалению, в официальном man для команды ping их, почему-то забыли указать.
0 — Success (хоть один из пакетов дошел до адреса)
1 — No reply (не один из пакетов до пингуемого адреса не дошел)
2 — Other error (другая ошибка, в большинстве случаев — «сеть недоступна»).
Если произошла ошибка с кодом 2, то команда ping выводит на stderr сообщение об ошибке, например:
ping 8.8.8.8 -c 3
connect: Network is unreachable
ping является полуинтерактивной командой, и показывает параметры отправленных пакетов (см. на PasteBin), если это не нужно, можно отключить вывод стандартным способом, перенаправив вывод команды ping из stdin и stderr в /dev/null, например:
ping 8.8.8.8 -c 3 >/dev/null 2>/dev/null
где:
>/dev/null — перенаправление stdin в нуль-устройство
2>/dev/null — перенаправление stderr в нуль-устройство
Простейшее использование команды ping в скрипте:
#!/bin/bash
#testping
# $1 - IP or URL address
ping $1 -c 3 >/dev/null 2>/dev/null
if [ $? -eq 0 ]; then
echo "Pinging!"
else
echo "Not pinging!"
fi
smallwolfie@wolfschanze:~/nettest$ ./testping 8.8.8.8
Pinging!
smallwolfie@wolfschanze:~/nettest$ ./testping 666.666.666.666
Not pinging!
smallwolfie@wolfschanze:~/nettest$ ./testping 192.168.0.55
Not pinging!
smallwolfie@wolfschanze:~/nettest$ ./testping example.org
Pinging!
Цветной текст в консоли Linux #3. Улучшаем совместимость скрипта.
Друзья
ketmar@ljr и
grusha@ljr отправили мне несколько ценных замечаний по поводу покраски консоли из скрипта (копия). Решил про них здесь отдельно написать, и модифицировать скрипт
Решил начать с него, оно более важное.
Впрочем, отдельно ему посвятил маленькую заметку (копия), где описал проблему и ее решение, так что осталось только применить, оборачиваю основной код функции echoc() в if, осушествляющий проверку, вызвали ли скрипт в терминале или в потоке:
if [ -t 1 ];then
E__="\x1b[${FGROUND[$2]}m"
if [ -n "$3" ];then
E__="$E__\x1b[${BGROUND[$3]}m"
fi
if [ -n "$4" ];then
E__="$E__\x1b[$4""m"
fi
echo -e "$E__$1\x1b[0m"
else
echo "$1"
fi
Если не в терминале, просто выводим обычный текст без ESC-кодов:
В функции echocn() поступаем аналогично, просто к вызову echo не забываем добавить пареметр -n:
if [ -t 1 ];then ... echo -e -n "$E__$1\x1b[0m" else echo -n "$1" fi
Т.е. максимально совместимыми цветами с терминалом являются только первые 7: коды 30..37 для текста, 40..47 для фона, дефолтные коды 39 и 49 для текста и фона соответственно (см. таблицу из предыдущей заметки (копия)).
Коды для яркости текста (90..97) и фона (100..107) расширение стандарта и поддерживаются не всеми терминалами. Для текста есть способ увеличить яркость — включить полужирный режим: семь цветов плюс полужирный с расчётом на то, что это давно уже яркость текста.
Итого, получаем вот такую таблицу совместимых цветов:
| # | Название цвета | Код цвета текста | Код цвета фона |
| 0 | Default (По умолчанию) | 39 | 49 |
| 1 | Black (Черный) | 30 | 40 |
| 2 | DarkRed (Темно-красный) | 31 | 41 |
| 3 | DarkGreen (Зеленый) | 32 | 42 |
| 4 | DarkYellow (Темно-желтый) | 33 | 43 |
| 5 | DarkBlue (Синий) | 34 | 44 |
| 6 | DarkMagenta (Темно-фиолетовый) | 35 | 45 |
| 7 | DarkCyan (Темный аквамарин) | 36 | 46 |
| 8 | Gray (Серый) | 37 | 47 |
| 9 | DarkGray (Темно-серый) | 1;30 | — |
| 10 | Red (Красный) | 1;31 | — |
| 11 | Green (Ярко-зеленый) | 1;32 | — |
| 12 | Yellow (Желтый) | 1;33 | — |
| 13 | Blue (Голубой) | 1;34 | — |
| 14 | Magenta (Фиолетовый) | 1;35 | — |
| 15 | Cyan (Аквамарин) | 1;36 | — |
| 16 | White (Белый) | 1;37 | — |
Код сброса: \x1b[0m — сбрасывает настройки консоли (цвет текста, фона и стиль) к значению по умолчанию. Он работает нормально.
Заодно уж выбросил из таблицы стилей «мигающий» и «невидимый», которые объективно не работают:
| Код стиля | Стиль текста |
| 0 | Default (По умолчанию) |
| 1 | Bold (Жирный/яркость текста) |
| 4 | Understrike (Подчеркнутый) |
| 7 | Inversing (Инверсия), цвет фона и текста меняются местами |
Массивы с кодами цветов теперь выглядят так (массив с именами показан для лучшего понимания):
NAMES=(Default Black DarkRed DarkGreen DarkYellow DarkBlue DarkMagenta DarkCyan Gray DarkGray Red Green Yellow Blue Magenta Cyan White)
FGROUND=("39" "30" "31" "32" "33" "34" "35" "36" "37" "1;30" "1;31" "1;32" "1;33" "1;34" "1;35" "1;36" "1;37")
BGROUND=(49 40 41 42 43 44 45 46 47)
И подправляем вывод:
echo -e "Foreground color:\tBackground color:"
for N in {0..16}; do
if [ $N -eq 1 ];then #foreground
echocn "$N - ${NAMES[$N]}" $N 4
else
echocn "$N - ${NAMES[$N]}" $N
fi
echo -e -n "\t\t"
if [ $N -le 8 ];then
if [ $N -gt 1 ];then
echoc " ${NAMES[$N]} " 1 $N #background
else
echoc " ${NAMES[$N]} " 0 $N
fi
else
echo
fi
done
echo
echocn "Default" 0 0 0; echo -n " "
echocn "Bold" 0 0 1; echo -n " "
echocn "Understrike" 0 0 4; echo -n " "
echocn "Inversing" 0 0 7; echo -n " "
echo
echo
Вывод в терминал:

Вывод в файл:
./esccolorscomp >test.txt
Замечание #3. Об использовании tput
Я задал вопрос, а не проще ли вместо ESC-кодов использовать tput, о чем я уже писал (копия). Ответ был таким: Он требует установленого ncurses, в общем и целом — никто не гарантирует его наличия.
Народная мудрость
Если утопить в городских лужах чиновников городской администрации, то и луж станет меньше, и жизнь станет лучше.
Электронная книга Dexp M8 Prudentia, драйвера для Windows 7.
Немала баба клопоту, купила порося, в смысле немал клопоту я, но повелся на скидку и связался с дерьмоконторой DNS и ее клоном DEXP. Прошлая книжка у меня была Амазон Киндл, и я ее еще в Киеве купил, впрочем, так бы ей и пользовался, если бы на нее жопой не села бухгалтерша. Напрягать тетку не стал, выбрал чего подешевле. Естественно, задача была перекинуть книжки с той на эту, и если эту у меня винда прекрасно видела, то видеть эту наотрез отказалась.
На сайте говно-DNS, дерьмо-DEXP и в сраной инструкции естественно, «это ж хуй, я вопрос отгадала», т.е. не драйверов, ни того, где их искать. Т.е контора просто пиздец клиентоориентированная. Кроме флешек вообще лучше ничего у них не покупать. Правда, кнопочные телефоны DEXP еще хорошие, у правильного дядюшки Ляо заказывают, кирпич неубиваемый от слова «даже об голову Кивы».
Пришлось для простейшего подключения андроидной железяки включать мозг и заниматься детективным расследованием, правда, довольно простым.
Железка под Андроидом 8.1 и на чипе Rockchip PX30, так что подошли драйвера Rockchip 4.4
На всякий случай забэкапил
Как проверить, вызван ли скрипт из терминала, или вывод скрипта перенаправлен в поток.
Как проверить, вызван ли скрипт из терминала, или вывод скрипта перенаправлен в поток.
А зачем? Это логическое продолжение темы (копия) про покраску текста в терминале. Если использовать ESC-последовательности, то они, что логично, попадут в файл, если пользователь перенаправит туда вывод скрипта, и получится бяка:

Потому, надо проверить, вызвали ли скрипт из терминала, или вывод скрипта перенаправлен в поток.
По итогам обсуждения с
ketmar@ljr и
grusha@ljr решение нашлось:
if [ -t 1 ];then
echo -e "\x1b[32;1mRun in terminal\x1b[0m"
else
echo "Run in pipe"
fi
Вызов из терминала:
./testpipe
Run in terminal
Вызов в потоке:
./testpipe >test.txt
Содержимое файла test.txt:
Run in pipe
Межлокалим дальше
Спа-лось
(из классификатора «Эсхатологические мутанты»)
Цветной текст в консоли #2
Мы уже красили консоль при помощи tput (копия), но есть лучший способ, при помощи эскейп-последовательностей, там немного сложнее и запутаннее синтаксис, но зато нормальная поддержка 16 цветов и стилей.

ESC-последовательность это код, который вставляется в вызов команды echo или printf перед, после или прямо посреди текста, который мы собираемся выводить.
Синтаксис кода такой: \x1b[???m, где вместо ??? надо вставить код цвета текста, фона или стиля текста. Коды можно перечислять через точку с запятой: \x1b[???;???;???m или несколько кодов подряд: \x1b[???m\x1b[???m\x1b[???m. 1b — это код символа ASCII 27, который соответствует коду клавиши ESC (откуда и название).
| # | Название цвета | Код цвета текста | Код цвета фона |
| 0 | Default (По умолчанию) | 39 | 49 |
| 1 | Black (Черный) | 30 | 40 |
| 2 | DarkRed (Темно-красный) | 31 | 41 |
| 3 | DarkGreen (Зеленый) | 32 | 42 |
| 4 | DarkYellow (Темно-желтый) | 33 | 43 |
| 5 | DarkBlue (Синий) | 34 | 44 |
| 6 | DarkMagenta (Темно-фиолетовый) | 35 | 45 |
| 7 | DarkCyan (Темный аквамарин) | 36 | 46 |
| 8 | Gray (Серый) | 37 | 47 |
| 9 | DarkGray (Темно-серый) | 90 | 100 |
| 10 | Red (Красный) | 91 | 101 |
| 11 | Green (Ярко-зеленый) | 92 | 102 |
| 12 | Yellow (Желтый) | 93 | 103 |
| 13 | Blue (Голубой) | 94 | 104 |
| 14 | Magenta (Фиолетовый) | 95 | 105 |
| 15 | Cyan (Аквамарин) | 96 | 106 |
| 16 | White (Белый) | 97 | 107 |
Код сброса: \x1b[0m — сбрасывает настройки консоли (цвет текста, фона и стиль) к значению по умолчанию.
| Код стиля | Стиль текста |
| 0 | Default (По умолчанию) |
| 1 | Bold (Жирный) |
| 4 | Understrike (Подчернкутый) |
| 5 | Blinking (Мигающий), не работает, получается серый текст на темно-сером фоне |
| 7 | Inversing (Инверсия), цвет фона и текста меняются местами |
| 8 | Invisible (Невидимый), не работает |
1. Проще всего покласть названия цветов, а также коды цвета и фона в массивы:
NAMES=(Default Black DarkRed DarkGreen DarkYellow DarkBlue DarkMagenta DarkCyan Gray DarkGray Red Green Yellow Blue Magenta Cyan White)
FGROUND=(39 30 31 32 33 34 35 36 37 90 91 92 93 94 95 96 97)
BGROUND=(49 40 41 42 43 44 45 46 47 100 101 102 103 104 105 106 107)
2. Создадим функцию echoc(), принимающую три параметра, цвет текста, цвет фона и стиль:
echoc() #Text, color, background, attributes
{
...
Тут будет код
...
}
Внутри функции:
if [ -z "$2" ];then echo "$1" return fi
Если второго параметра нет, просто вызываем echo и выходим из функции.
E__="\x1b[${FGROUND[$2]}m"
Второй параметр, номер кода цвета текста в массиве, формируем ESC-последовательность с ним во временную переменную.
if [ -n "$3" ];then
E__="$E__\x1b[${BGROUND[$3]}m"
fi
Если есть третий параметр — добавляем ESC-последовательность для цвета фона.
if [ -n "$4" ];then E__="$E__\x1b[$4""m" fi
Если есть четвертый — добавляем код для стиля текста (1, 4, 5, 7, 8), см. таблицу выше.
echo -e "$E__$1\x1b[0m"
Выводим текст:
-e — параметр, позволяющий команде echo обрабатывать ESC-последовательности.
$E__ — переменная, в которой сформирована ESC-последовательность.
$1 — выводимый текст.
\x1b[0m — после текста вставляем код сброса.
3. Создаем функцию echocn(), которая от функции echoc() отличается одной строчкой:
echo -e -n "$E__$1\x1b[0m"
где -n — вывести текст без перевода строки
4. Выводим в цикле названия цветов, и примеры цвета и фона:
echo -e "Foreground color:\tBackground color:"
for N in {0..16}; do
if [ $N -eq 1 ];then #foreground
echocn "$N - ${NAMES[$N]}" $N "16"
else
echocn "$N - ${NAMES[$N]}" $N
fi
echo -e -n "\t\t\t"
if [ $N -gt 1 ];then
echoc " ${NAMES[$N]} " 1 $N #background
else
echoc " ${NAMES[$N]} " 0 $N
fi
done
5. И тестируем стили:
echo
echocn "Bold" 0 0 1; echo -n " "
echocn "Understrike" 0 0 4; echo -n " "
echocn "Blinking" 0 0 5; echo -n " "
echocn "Inversing" 0 0 7; echo -n " "
echocn "Invisible" 0 0 8; echo -n " "
echo
echo
Результат — в скрине в начале поста
Отключение проверки сертификатов в curl
При использовании скрипта 0x0.sh, из предыдущего поста (копия), внезапно напоролся на ошибку curl: (60) SSL certificate problem: certificate has expired.
Грешным делом подумал, что у меня в системе протухли корневые сертификаты, поскольку слаку я триста лет не обновлял, уже лет 5 без переустановки стоит, даже пошел, и нашел как их вроде бы стандартным способом обновить. Недопомогло. Потом думаю, если бы сертификаты все совсем были старые и просроченные, у меня бы ничего не работало, ни curl, ни wget, ни браузеры, ни ютупчик. А тут вроде как всего один сайтик, что-то тут не то, или я не так делаю, или на сайте косяк. Неделю проебавшись, пошел спросил у более знающего юзера
ketmar@ljr. Да отключи ты их к лешему, или опциями командной строки, или на уровне конфига, ответил он.
curl, перед проверкой параметров командной строки, заглядывает в свой конфиг в каталоге пользователя, так что в нем можно установить локальные (относительно пользователя) параметры по умолчанию. Нас интересует опция отключения проверки сертификатов.
1. Заходим в свой домашний каталог (/users/<ваше_имя пользователя>/)
2. Создаем файл .curlrc
3. Прописываем в нем одну строчку: insecure
Достаточно добавить параметр -k или --insecure до параметров -F "file=@<имя файла>", если вы curl‘ом что-то отправляете, или до адреса URL, если вы curl‘ом что-то получаете.
Например, я модифицировал код скрипта 0x0.sh:
Было:
...
url=$(curl ${curl_opts} -F "file=@${file}" "${host}")
...
Стало:
...
url=$(curl ${curl_opts} --insecure -F "file=@${file}" "${host}")
...
Было:
...
shortened=$(curl ${curl_opts} -F "shorten=${url}" "${host}")
...
Стало:
...
shortened=$(curl ${curl_opts} --insecure -F "shorten=${url}" "${host}")
...
Было:
...
uploaded=$(curl ${curl_opts} -F "url=${url}" "${host}")
...
Стало:
...
uploaded=$(curl ${curl_opts} --insecure -F "url=${url}" "${host}")
...
smallwolfie@wolfshanze:/tmp# 0x0.sh -f 332068.jpg
uploading "332068.jpg"...
######################################################################## 100.0%
https://0x0.st/o4_0.jpg
Конечно же котролирующий передачу, развертку по горизонтали и вертикали, и держащий под котролем изображение и звук.

Скрипт для постинга на файл-хостинг 0x0.st
Есть прикольный файл-хостинг 0x0.st, но постить на него можно только скриптом. Мопед не мой, просто оставлю его здесь.
Copyright 2016-2018 Kylie McClain <kylie@somas.is>
Использование: 0x0.sh [-f <file>] [-s <url>] [-u <url>] [file]
Если файл не указан, скрипт загружает поток stdin
-f <file> - загрузить <файл>
-s <url> - шортинг адреса <url> (В настоящее время не поддерживается сервисом!)
-u <url> - загрузка содержимого по адресу <url>
Цветной текст в консоли Linux #1
Захотел я как-то украсить скрипт, ну чтоб он не был таким скучным, и подумал — в DOS можно было красить консоль, а можно ли в Linux? Можно!
tput — команда, в основном предназначающаяся для управления консольным курсором, но покрасить она тоже может, хоть и довольно хреново.
Общий синтаксис:
tput <команда> <параметры>
В нашем случае, интересуют команды, изменяющие цвет или стиль текста.
Для удобства сведу их в таблицу:
| Команда tput | Действие |
| bold | Жирный текст, после вызова команды |
| smul | Начало подчеркнутого текста |
| rmul | Конец подчеркнутого текста |
| rev | Реверс текста и фона, т.е. они меняются местами |
| blink | Мигающий текст (не на одной консоли не сработал) |
| invis | Невидимый текст (у меня не сработало) |
| smso | Некий «выдающийся» (standout) режим, отличий при выводе не заметил |
| rmso | Отключить «выдающийся» режим |
| setaf <код_цвета> | Установить цвет текста |
| setab <код_цвета> | Установить цвет фона |
| sgr0 | Сбросить настройки терминала к значениям по умолчанию. |
tput, на самом деле, плох для окраски текста консоли, но зато хорош в синтаксисе. Не надо сочинять дополнительных функций для ESC-последовательностей (о них в следующей заметке), но он поддерживает только 7 основных цветов, а на некоторых консолях не срабатывает и белый цвет. Вот таблица цветов для текста и фона (значения одинаковые и для того, и для другого):| Код цвета | Цвет |
| 0 | Черный (Black) |
| 1 | Красный (Red) |
| 2 | Зеленый (Green) |
| 3 | Желтый (Yellow) |
| 4 | Голубой (Blue) |
| 5 | Фиолетовый (Magenta) |
| 6 | Светло-голубой (Cyan) |
| 7 | Белый (White), у меня почему-то не сработал. |
| 8 | Не используется |
| 9 | Возврат к цвету по умолчанию |
Я написал тестовый скрипт, где последовательно перебираю цвета текста и цвета фона:
tput setaf <код_цвета>, для текста
tput setab <код_цвета>, для фона
потом echo -n "некий текст", где некий текст — наименование цветов в массиве, см. исходник.
А потом вызываю tput sgr0, чтобы сбросить консоль.
Стили текста:
echo "Text style:"
tput bold; echo "Bold"; tput sgr0
tput smul; echo "Underlined"; tput rmul
tput rev; echo "Reversed"; tput sgr0
tput blink; echo "Blinking"; tput sgr0
tput invis; echo "Invisible"; tput sgr0
tput smso; echo "Standout"; tput rmso
tput sgr0

tput, на буржуйском. Копия в PDF
Я сразу это говорил
Наконец, вы нас в очередной раз не услышали, не бывшего военного из группы «Медвежья Икра», не нашу команду, ну че, смотрите, нате вам в обе руки. Жрите, не обляпайтесь:
Прямая ссылка: https://www.youtube.com/watch?v=eKRwSlMLPtc
Жертва Велесу
Очередная криповая история из жизни друга.
Вообще, мы на даче всякой хренью страдали, когда малыми были, ну там «Пиковую Даму» или матюгномика вызывали, Эдуард Успенский этому весьма поспособствовал. Ничего, понятное дело, не работало. Ультракультура, которая уже к тому времени и Хейзона и Гоэтию перевела, была, но книги стоили как самолет. Соответственно, из Гоэтии мы ничего не вызвали. Зато друг Женька, у которого батя в мэрии работал, в этой самой мэрии отжал компьютер с интернетами, поскольку о родительском контроле никто тогда не знал, а роскомнадзора даже в проекте не было, Жека зашел на какой-то правый славянский сайт и нашел ритуал вызова Велеса.
Для ритуала нужно было убить мелкое животное, но поскольку коз на даче не было, а котов я строго запретил убивать, то решили пойти по второму варианту, принести в жертву немного человеческой крови и самого человека (виртуально, не насовсем).
Добровольцем вызвался быть я (самый здоровый парень в нашей тусовке отказался).
В определенную просчитанную по календарю ночь меня связали, положили в спальник, сделали несколько порезов на руках, ногах у щиколоток, и шее, так, чтоб кровь шла, но это было безопасно, и закидали сосновыми ветками.
Назначенный «волхвом» парень прочитал надо мной заклинание (с этого сайта), а через минут пять началось.
Посреди тихой погоды поднялся сильный ветер, причем верхний, т.е. он колыхал деревья. Потом парни рассказывали, что видели в кустах медведя, и с визгом с перепугу свалили.
А я? А я просто сквозь спальник увидел звезды, даже не сами звезды, а карту звездного неба. И вырубился.
Пацаны на утро думали, что найдут мое растерзанное медведем тело, но нашли просто связанного меня в спальнике, а я просто сладко спал.
Межлокалим дальше
Генерал Бавовняк
(Из классификатора «Эсхатологические мутанты»)