Клацая в dir-320 с прошивкой dd-wrt, пришлось выучить пару десятков команд которые мне пригодились и в других устройствах основанных на linux BusyBox.

Итак, что такое этот BusyBox?

BusyBox — набор UNIXовых утилит командной строки, которые используется в качестве основного интерфейса во встраиваемых операционных системах. Для тонкой настройки таких систем, часто используется командная строка. Для этого с помощью TELNET или SSH мы соединяемся с командной оболочкой с одним из таких устройств, например: DIR-320 в основе которой лежит BusyBox и используем ряд следующих команд.

Команды для работы с файлами:

pwd – показать текущий каталог ( каталог в котором находится пользователь)
ls – вывести список файлов и каталогов
ls -al – форматированный список со скрытыми каталогами и файлами
cd /etc – сменить директорию на /etc
cd – сменить на домашний каталог
mkdir mydir – создать каталог mydir
rm file.txt – удалить file.txt
rm -r mydir – удалить рекурсивно каталог mydir
rm -f file.txt – удалить форсированно file.txt
rm -rf mydir – удалить форсированно каталог с подкаталогами mydir
cp file1 file2.txt – скопировать file1 в file2.txt
cp -r dir mydir – скопировать dir в mydir; создаст каталог mydir, если он не существует
mv file2.txt file2 – переименовать или переместить file2.txt в file2. 
Если file2 существующий каталог - перемещает file2.txt в каталог file2
ln -s file filelink – создать символическую ссылку filelink к файлу file
touch myfile – создать файл myfile
cat > file.txt – направить стандартный ввод в файл file.txt
cat file.txt - вывести содержимое файла file.txt
more file.txt – вывести содержимое файла file.txt
head file.txt – вывести первые 10 строк файла file.txt на консоль
tail file.txt – вывести последние 10 строк файла file.txt на консоль
tail -f file.txt – вывести содержимое файла file.txt по мере его роста, начинает с последних 10 строк
> - Перенаправление с одного места в другое, например:
Выведем последние 10строк с файла test и вставим их в файл oktest, для этого выполним такую команду:
 tail test > oktest.
Если файл oktest не существовал, то он создастся.

Управление процессами в BusyBox:

ps – вывести текущие пользовательские активные процессы
top – показать все запущенные процессы и краткую информацию о ресурсах системы
kill pid – убить процесс id которого pid
killall proces – убить все процессы с именем proces
bg – список остановленных и фоновых задач; продолжить выполнение остановленной задачи в фоне
fg – выносит на передний план последние задачи
fg n – вынести задачу n на передний план

Права доступа на файлы в BusyBox:

chmod 640 file – замена прав доступа файла file на 640. Права назначаются раздельно для пользователя,
группы и для всех остальных сложением:
4 – чтение (r)
2 – запись (w)
1 – исполнение (x)
 
Примеры chmod:
chmod 777 – чтение, запись, исполнение для всех пользователей
chmod 751 – чтение, запись, исполнение для владельца; чтение, исполнение для группы; 
и только исполнение для остальных пользователей.
 
Дополнительные опции можно посмотреть набрав команду:
man chmod.

Использование SSH в BusyBox:

ssh user@host – подключится к host как пользователь user
ssh -p port user@host – подключится к узлу host на порт port как пользователь user
ssh-copy-id user@host – добавить ваш ключ на узел host для пользователя user чтобы включить вход 
логина без пароля и по ключам

Как осуществляется поиск в BusyBox:

grep pattern files – искать pattern в файле files
grep -r pattern dir – искать рекурсивно pattern в директории dir
command | grep pattern – искать pattern в выводе command
locate file – найти все файлы с именем file

Системная информация в BusyBox:

date – вывести текущую дату и время роутера
cal – вывести календарь на текущий месяц
uptime – показать текущий аптайм (время работы системы с момента её загрузки)
w – показать пользователей онлайн
whoami – имя, под которым вы залогинены
finger user – показать информацию о пользователе user
uname -a – показать информацию о ядре
cat /proc/cpuinfo – информация о процессоре
cat /proc/meminfo – информация о памяти
man command – показать мануал для команды command
df – показать информацию о использовании дисков
du dir– вывести “вес” каталога dir
free – использование памяти и swap
whereis app – возможное расположение программы app
which app – какая app будет запущена по умолчанию

Процессы архивации при наличии установленных tar и gzip пакетах в BusyBox:

tar cf file1.tar files1 – создать tar-архив с именем file1.tar содержащий файл files1
tar xf file1.tar – распаковать архив file1.tar
tar czf file1.tar.gz files1 – создать архив file1.tar.gz со сжатием Gzip
tar xzf file1.tar.gz – распаковать архив tar с Gzip сжатием
tar cjf file1.tar.bz2 – создать архив file1.tar.bz2 со сжатием Bzip2
tar xjf file1.tar.bz2 – распаковать архив tar с Bzip2 сжатием 
gzip file1 – сжать file1 и переименовать в file1.gz
gzip -d file1.gz – разжать file1.gz в file1

Настройка сети в BusyBox:

ifconfig – показать настройки найденных сетевых интерфейсов
ping host – пропинговать узел host и вывести результат
whois domain – получить информацию whois для домена domain
dig domain – получить DNS информацию для домена domain
dig -x host – реверсивно искать информацию DNS об узле host
wget file – скачать файл file
wget -c file – продолжить остановленную или оборванную закачку файла file

Установка\удаление программ из пакетов в BusyBox:

/opt/bin/ipkg-opt install название программы/пакета (установка)
/opt/bin/ipkg-opt remove название программы/пакета (удаление)
dpkg -i pkg.deb – установка пакета (Debian)
rpm -Uvh pkg.rpm – установка пакета (RPM)

Установка из исходников:

cd application-1.0.2
./configure
make
make install

Быстрые клавиатурные команды:

Ctrl+C – завершить текущую команду
Ctrl+Z – остановить текущую команду, продолжть с fg на переднем плане или bg в фоне
Ctrl+D – разлогиниться, тоже самое, что и exit
Ctrl+W – удалить одно слово в текущей строке
Ctrl+U – удалить строку
!! - повторить последнюю команду
exit – разлогиниться

Может конечно что то ещё упустил, но в принципе для начала и освоения работы со сборкой BusyBox — этого вполне должно хватить.

Надеюсь что этот материал окажется кому-то полезным.

Напоминаю всем копирующим мой контент о существовании закона "Об авторском праве".
В связи с этим, прошу во избежании конфликтов при копировании данного материала, ставить на него ссылку:

http://noted.org.ua/1727


Также, вы можете отблагодарить меня переслав любую сумму на любой кошелек WebMoney, для поддержания данного ресурса. Или просто админу на пиво ;)

Кошельки для получения благодарности:
R386985788805
U234140473141
Z147712360455

8 комментариев

  1. Илья @ 2013-06-04 20:15

    Спасибо за статью,очень помог!У меня BusyBox стоит на роутере

  2. Евгений @ 2015-02-05 10:43

    Добрый день! Есть видео камера hikvision, там используется BusyBox v1.19.3. чтобы залить туда новую прошивку нужно поменять права на каталог /dav/.
    Проблема в том что в BusyBox нет команды chown.
    Можно ли както решить проблему?

    Admin:
    посмотрите здесь: http://spblinux.de/2.0/doc/chown.html и здесь: http://stackoverflow.com/questions/13301904/what-are-the-correct-file-permissions-for-su-and-busybox-on-an-unrooted-android

  3. Никита @ 2015-10-03 12:40

    Как узнать HARDWARE VERSION оборудования через telnet? Какой командой?

  4. Простите, с таким я несталкивался.
    Но вы можете поискать здесь: http://www.busybox.net/downloads/BusyBox.html

  5. Асылбек @ 2016-01-24 05:43

    Большое спасибо за такую простую и полезную статью. Всё написано лаконично и с глубоким знанием сути. Видно что автор отличный знаток своего дела (простота признак профессионала). и просто очень хороший человек, по сути.. еще раз спасибо!

  6. А как запустить пиакетный файл в BusyBox?

    создал файл dir.sh
    сделал chmod 777 dir.sh
    в нем просто пара команд
    сd TEST1
    ls
    cd ..

    пробую запускать «в лоб» dir.sh — хрена
    ./dir.sh — тоже нет
    ок последний вариант sh ./dir.sh — хапускается\, но пишет, что

    # sh ./dir.sh
    ./dir.sh: cd: line 1: can’t cd to TEST1
    : not foundine 2: ls
    ./dir.sh: cd: line 3: can’t cd to ..

    Что делаю не так?
    (не линуксоид, просто надо запустить пакетный файлик)

  7. Вполне вероятно, что нужно указывать полный путь на все команды и директории.
    Собственно, когда я работал с BusyBox, я так всегда и делал.
    То есть, для примера:

    #!/bin/sh
    cd /opt/test1
    ls

    Что то типа того, но я не проверял. Давно уже с BusyBox не имел дела.

  8. Service2 @ 2017-02-21 18:30

    Спасибо за статью. Нашел ее гуглом, когда искал, как рекурсивно удалить в BusyBox файл в например «photo.scr». Дело в том что эта зараза как-то залезла в файловую систему и там размножилась, а я думал что под линукс вирусов нет 😉
    locate file – найти все файлы с именем file — не находит locate. Крутится на роутете wl500GP, там много чего наставлено, поэтому хотел бы тупо удалить подозрительные файлы, но руками ходить лень. Могу приложить вывод команды какой нужно.

Add your comment now

Please note: JavaScript is required to post comments.