Сніпети
На цій сторінці зібрано скрипти та конфігураційні приклади, які не підходять для окремих статей. Деякі з них — це твіки або однорядкові HOWTO, інші — просто цікаві речі для запуску.
Система
Створити навантаження на CPU на 100%
Є багато причин створити навантаження на CPU, одна з менш серйозних — гратися з тригером heartbeat:
cat /dev/urandom | gzip > /dev/null
Примітка: Цей скрипт стискає нескінченний потік випадкових бітів і відкидає результат. Рівень стиснення змінити не можна, тому можливо доведеться запустити кілька екземплярів скрипта для підвищення середнього навантаження.
Показати команду з параметрами запущеного процесу
Зазвичай для цього використовують команди top
або ps
, але версія з BusyBox може обрізати довгі команди, щоб вмістити їх у ширину термінала.
ps w
або
cat /proc/<PID>/cmdline
Примітка: Замініть <PID> на ідентифікатор процесу.
Промпт
Кольори
Редагуйте змінну PS1
у файлі /etc/profile
:
export PS1='\[\e[1;31m\]\u@\h:\w\$ \[\e[0m\]'
Це дає червоний промпт (корисно для root-користувача). Інші користувачі можуть мати, наприклад, зелений. Докладніше — тут.
Сесія Screen
Корисно показувати назву сесії screen
, якщо ви в ній. Порада: додайте кольорів. Приклад для сесії pts-0
:
local SCREEN_SESSION_NAME=$(screen -ls | sed -n 's|[^a-z]*[0-9][0-9]*\.\([a-zA-Z][a-zA-Z0-9-]*\).*Attached.*|/\1|p') export PS1="\u@\h${SCREEN_SESSION_NAME}:\w\\$ "
Червоне тло, якщо попередня команда завершилась з помилкою
export PS1="\$([ \$? -ne 0 ] && echo \\\[\\\e[41m\\\])\u@\h:\w\\$\[\e[0m\] "
Надіслати файл у веб через CLI
cat /etc/config/some.conf | nc paste.dyndns.org 1234
Отримати статус моста
devstatus br-lan
cat /sbin/devstatus #!/bin/sh . /usr/share/libubox/jshn.sh DEVICE="$1" [ -n "$DEVICE" ] || { echo "Usage: $0 <device>" exit 1 } json_init json_add_string name "$DEVICE" ubus call network.device status "$(json_dump)"
Як видно, використовується бібліотека jshn.
Бездротова мережа
Кнопка перемикання WiFi
[ -s /var/state/wireless ] && wifi down || wifi up
Розблокування всіх WiFi-регіонів для Atheros
- Зберіть власну прошивку і встановіть прапорець
CONFIG_ATH_USER_REGD
. - Повний список регуляторних норм.
Пакунки
Створити локальну копію пакунків
Якщо ви використовуєте trunk, корисно мати локальну копію пакунків, бо нові версії можуть порушити сумісність з ядром:
wget -r -np http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/
Архітектура — ar71xx
. Знадобиться ~300 MB вільного місця.
Еліптичні криві в OpenSSH
ECC добре підходить для пристроїв із низькою продуктивністю. Наприклад, ключ RSA на 15360 біт потребує 9.1 с для входу, а ECDSA на 521 біт — лише 1.7 с. Різниця менш помітна при коротших ключах. Для використання:
- скомпілюйте
libopenssl
без опціїNO-EC
- зберіть
openssh-server
іopenssh-keygen
із цією бібліотекою ssh-keygen -t ecdsa -b 521
Повторне встановлення пакунків після оновлення прошивки
Якщо зберегти список пакунків перед оновленням, можна швидко встановити все назад за допомогою скрипта з цієї теми.
USB
Тест продуктивності накопичувача
Спочатку встановіть hdparm
. Потім знайдіть пристрій, зазвичай це /dev/sda1
або подібне:
opkg update && opkg install hdparm hdparm -t /dev/sda1
Див. також Бенчмарки USB і Продуктивність файлових систем.
LED
LED для активності IPv6
Миготіння при активності у тунелі Hurricane Electric 6in4. Приклад із файлу /etc/config/system
:
config 'led' '6in4_led' option 'name' '6in4' option 'sysfs' 'tl-wr1043nd:green:qss' option 'trigger' 'netdev' option 'mode' 'link tx rx' option 'dev' '6in4-wan6'
Примітка: детальна конфігурація — тут.
Налаштування банера
Усі зміни виконуються в /etc/profile
. Скрипти додаються після cat /etc/banner
.
Показати активні сесії screen
Для користувачів screen
. Приклад виводу:
3 Screen sessions: pts-0, snort, iperf |
Скрипт:
local screenlabel=$(screen -ls | sed -n 's|^\([0-9][0-9]*\) Socket.*| \1 Screen sessions: |p') screen -ls | sed -n 's|[^a-z]*[0-9][0-9]*\.\([a-zA-Z][a-zA-Z0-9-]*\).*|\1|p' | sed -e "s|^|${screenlabel}|" -e :a -e N -e 's|\n|, |' -e ta
Примітка: змінна screenlabel
містить кількість сесій і текст. Якщо це не потрібно, можна спростити.
Показати доступну ентропію
Менш корисний скрипт, але все ж:
Entropy: 143/4096 |
echo " Entropy:" $(cat /proc/sys/kernel/random/entropy_avail)/$(cat /proc/sys/kernel/random/poolsize)