Сніпети
На цій сторінці зібрано скрипти та конфігураційні приклади, які не підходять для окремих статей. Деякі з них — це твіки або однорядкові 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)