Архив рубрики: *NIX

Низкоуровневое форматирование flash/sd/microsd под Linux

Несколько раз приходилось форматировать флешки (к которым относятся и различные SD и microSD карточки), а поскольку происходит это довольно редко — вынужден был лезть в гугл. Конспективная памятка по форматированию флешек под Linux:

Проверить подключение flash

fdisk -l
Выведет список подключенных дисков и их разделов. Обычно флешка — /dev/sdb, но нужно обязательно проверить, так ли это!

Проверить, примонтирована ли флешка

df -h
Если флешка примонтирована — покажет это и точку монтирования. Перед форматированием — отмонтировать: umount /dev/sdb.

Проверить защиту от записи и геометрию

При желании — можно проверить защиту от записи и геометрию (защита от записи в линуксе не важна):
hdparm /dev/sdb.

Если нужно низкоуровневое форматирование — забить нулями

dd if=/dev/zero of=/dev/sdb.
В выводе покажет объем флешки (должен соответствовать заявленному), скорость и время записи. Также покажет, сколько было записано байт на флешку, что полезно при проверке флешки на физические ошибки (см. ниже).

Проверить на физические ошибки

head -c N /dev/sdb | md5sum
head -c N /dev/zero | md5sum
где N равно числу байт, записанных на флешку при помощи dd. Если контрольные суммы не совпадают — флешка «битая» или были ошибки записи (в реальности сталкивался с форматированием microSD через плохой кард-ридер — даже когда не выскакивали ошибки ввода-вывода при операциях — контрольные суммы не совпадали, с заменой кард-ридера проблема ушла).
Пример:

dimio@ibm $ dd if=/dev/zero of=/dev/sdb
dd: запись в «/dev/sdb»: На устройстве кончилось место
3932161+0 записей считано
3932160+0 записей написано
 скопировано 2013265920 байт (2,0 GB), 1010,99 c, 2,0 MB/c
dimio@ibm $ head -c 2013265920 /dev/zero | md5sum
5d0fd6273bed1c500c6fc22d86a59630  -
dimio@ibm $ head -c 2013265920 /dev/sdb | md5sum
5d0fd6273bed1c500c6fc22d86a59630  -

Ну и для полного счастья при желании:

dimio@ibm $ perl -we '
> print "OK" if q{5d0fd6273bed1c500c6fc22d86a59630}
> eq q{5d0fd6273bed1c500c6fc22d86a59630};'

OK

Разбиваем на разделы при помощи fdisk

fdisk /dev/sdb
Опции: m — справка, d — удалить раздел, p — просмотреть список разделов, n — создать раздел, t — поменять тип раздела, w — сохранить изменения.

Последний шаг — создать файловые системы на разделах флешки

mkfs.ext{2,3,4} /dev/sdbX
где X — порядковый номер раздела, на котором нужно создать файловую систему.
Также полезны: mkfs.msdos, mkfs.vfat (создаёт «стандартную» файловую систему флешек — vfat).

Если что-то осталось непонятным или есть дополнения и замечания — добро пожаловать в комментарии! :)

каталог интернет магазинов Москвы

Openbox+sbxkb: переключение раскладок клавиатуры

Openbox WM logo

Cлегка подустав от ставших довольно заметными тормозов Gnome с Metacity и Nautilus в компании (ноут у меня довольно старый по современным меркам — IBM ThinkPad T40 с Pentium M 1,5 ГГц и 1 Гб ОЗУ на борту), решил попробовать Openbox. Создал тестового пользователя, прописал ему Openbox в качестве WM, немного настроил, попользовался час и перевёл основную учётку на него.

Разница в скорости отклика по субъективным ощущениям (что впрочем и важно в данном случае) оказалась просто колоссальной — эмулятор терминала (rxvt) открывается в пределах секунды, против 7-10 сек. в гноме. Окна сворачиваются-разворачиваются также в пределах секунды, в гноме Firefox с десятком открытых вкладок мог разворачиваться из панели 3-5 секунд, при этом постоянно треща HDD, который у меня тоже не казённый. В Openbox же индикатор обращения к жесткому диску срабатывает довольно редко (вообще стало казаться, что гном с его «реестром» всё ближе к Windows — уже и тормоза накапливать за время эксплуатации научился).

Даже Google Chrome по ощущениям из-под Openbox заработал быстрее (и стал быстрее Firefox, чего не было под Gnome), хотя может это уже самообман на волне общей эйфории от легковесности и скорости WM.
Читать далее Openbox+sbxkb: переключение раскладок клавиатуры

Подключение через VPN в Debian/Ubuntu Linux

Когда у меня еще не было роутера с точкой доступа wi-fi и кабель от провайдера подключался напрямую к компьютеру, мне пришлось настраивать vpn соединение с провайдером, чтобы проходить авторизацию и получать доступ в интернет. Привожу свой опыт того, как настроить openvpn соединение в Debian Linux (с провайдером Корбина).

Для начала нужно установить пакеты ppp и pptp, затем отредактировать файл /etc/ppp/, в котором хранятся настройки vpn-подключения:

noauth
nobsdcomp
nodeflate
# восстанавливать соединение после обрыва
persist

Следующий шаг — внести данные для аунтефикации в файл /etc/ppp/chap-secrets в виде: login имя_подключения password *, где логин и пароль — соответственно те, что выдал провайдер, а имя подключения — любое на свой вкус. Стоит обратить внимание на тот факт, что пароль будет сохранён в открытом виде, а значит имеет смысл изменить права доступа к файлу на 600 для затруднения доступа к нему посторонних: sudo chmod 600 /etc/ppp/chap-secrets.

Далее нужно создать конфигурационный файл с настройками VPN непостредственно для корбины, например так: sudo mkdir /etc/ppp/peers и затем sudo touch /etc/ppp/peers/corbina. Настройки для корбиновского vpn указать следующим образом (имя пользователя и название подключения должны совпадать с указанными выше в файле /etc/ppp/chap-secrets):

pty "pptp --nolaunchpppd"
сonnect /bin/true
name имя_пользователя
remotename название_подключения
file /etc/ppp/
ipparam corbina

Теперь можно включать/выключать впн-соединение с корбиной командами pon corbina и poff corbina соответственно. В принципе на этом настройка VPN подключения под Linux может считаться законченой, все должно работать. Если происходят обрывы соединения — можно дополнительно прописать файл с маршрутами для Корбины /etc/ppp/ip-up.d/corbina:

#Маршруты до VPN
route add -host 195.14.40.6 gw шлюз
route add -host 195.14.40.7 gw шлюз
route add -host 195.14.40.8 gw шлюз
route add -host 195.14.40.9 gw шлюз
route add -host 195.14.40.13 gw шлюз
route add -host 195.14.40.14 gw шлюз
route add -host 195.14.40.15 gw шлюз
#Маршруты до DNS
route add -host 195.14.50.1 gw шлюз
route add -host 195.14.50.3 gw шлюз
route add -host 195.14.50.21 gw шлюз
#Маршруты до локальных ресурсов сети
route add -net 10.0.0.0 netmask 255.0.0.0 gw шлюз
route add -net 85.21.79.0 netmask 255.255.255.0 gw шлюз
route add -net 85.21.90.0 netmask 255.255.255.0 gw шлюз
route add -host 85.21.52.254 gw шлюз
route add -host 195.14.50.26 gw шлюз

route del default
route add default dev ppp0

И затем добавить адреса DNS-серверов в /etc/dns:

nameserver 195.14.50.1
nameserver 195.14.5021

Имена шлюзов и актуальные адреса DNS-серверов следует уточнить у провайдера.

Бесплатный редактор PDF для Windows и Linux — pdftk

Несколько недель назад понадобилось мне кое-что поменять в чертежах, которые были в виде pdf-альбома представлены. Файл pdf не был закрыт от редактирования к слову. Казалось бы — задача примитивная, но не тут-то было. Перепробовал около десятка различных бесплатных и условно-бесплатных pdf-редакторов — всё без толку. Некоторые «редакторами» только называются — на деле не могут вообще ничего. Другие вроде позволяют изменения внести, но лепят всюду свои надписи типа «отредактировано в таком-то pdf редакторе», что мне тоже совсем ни к чему. А чем можно банально разбить альбом на страницы — я вообще не понял.

Помощь, как часто бывает, пришла из мира open source — была найдена бесплатная консольная утилита для редактирования PDF — pdftk (кроссплатформенная, под Linux и Windows точно есть), позволющая редактировать pdf в широких пределах. Для любителей графики — и под Linux, и под Window у pdftk есть графические интерфейсы (GUI). Меня же как раз больше привлекла консольность — можно в пакетном режиме обрабатывать сразу несколько файлов. Ей я вырезаю или вклеиваю нужные листы в альбомы чертежей, а сами изменения делаю в обычно графическом редакторе (чаще в сего — в Gimp).
Читать далее Бесплатный редактор PDF для Windows и Linux — pdftk

Загрузка и восстановление прошивки dd-wrt через tftp

В заметке про установку прошивки dd-wrt на D-Link DIR-620 я упоминал о замене стандартного загрузчика роутера на загрузчик от Zyxel Keenetic, после чего становится возможной загрузка прошивок в DIR-620 при момощи tftp. Нужно это может быть во-первых для того, чтобы не пересобирать сторонние прошивки в формат, понятный загрузчику, доступному через веб-интерфейс; во-вторых — для восстановления прошивки роутера, если что-то пошло не так и веб-интерфейс недоступен.
Поскольку процесс установки прошивки через tftp под Windows детально рассмотрен на сайте deadc0de, а я в основном использую Linux-машины дома, опишу загрузку dd-wrt в DIR-620 через tftp именно для Linux.
Читать далее Загрузка и восстановление прошивки dd-wrt через tftp

TOR NEWNYM — автоматическая смена IP в TOR

Высокие технологии

Время от времени использую в качестве прокси сеть TOR, недавно вот пригодилось при проверке готовности загранпаспорта через интернет, когда постоянно получал ошибку о превышении числа запросов к серверу — пришлось сделать макрос на lynx, который через TOR периодически проверял готовность загранпаспорта (Автоматическая проверка готовности загранпаспорта). Удобство TOR не только в том, что это рабочий бесплатный прокси (с шифрованием трафика кстати) — TOR это сеть и прокси-серверы, а значит и IP-адреса, можно легко менять при необходимости, даже автоматически.

Под Windows сменить прокси и IP-адрес совершенно несложно — в составе дистрибутива TOR для Windows присутствует графическая оболочка Vidalia и для получения нового IP-адреса достаточно нажать в ней кнопку «Новый Ним / Новая личина / New NYM«. Под Linux всё не так очевидно, хотя тоже несложно, как выяснилось — сделать автоматическую смену IP в TOR можно при помощи простого скрипта.

Читать далее TOR NEWNYM — автоматическая смена IP в TOR

rsync — отличная замена scp!

Довольно смешно, но впервые воспользовался rsync только три недели назад. До этого пытался один раз, не разобрался с ключами и забросил. Зря, как оказалось!
Главное достоинство rsync по сравнению с scp — показывает прогресс загрузки. Также рекурсивно загружает директории. Немаловажно — поддерживает докачку в обе стороны.

Попользовался и сделал себе для bash алиас в bashrc rsync="rsync -P", теперь всё время его использую для загрузки на хостинг. Авторизацию по ключам тоже настроил, так что можно делать бэкапы.
Основной синтаксис вызова: rsync логин@хост:/откуда/что логин@хост:/куда/что. В случае локальной машины логин и хост указывать естественно не нужно, достаточно только пути.
Основные опции, которыми пользуюсь: -P — выводит прогресс-бар, -r — рекурсивная загрузка.

Если кто ещё тоже до сих пор не знаком с rsync и пользуется scp/sftp — самое время попробовать!

Настройка Rxvt через Xdefaults

Настройки Rxvt черезе Xdefaults

С некоторых пор стал пользоваться эмулятором терминала urxvt (unicode-версия rxvt) вместо gnome-terminal. Причина простая — на старом ноуте разница в скорости заметна и эта разница — в пользу urxvt (особенно если запускать его при старте GUI в режиме демона).

В остальном отличий в общем-то нет, urxvt тоже поддерживает именованные вкладки (табы), обработку гиперссылок, копирование и вставку мышью. Кроме того, он имеет поиск по выводимым в терминал данным (по Alt+S — очень удобно) и поддерживает цветной вывод man-страниц. Также urxvt существует и для cygwin.

На этом вводную часть закончу и ниже просто на память, чтобы не перечитывать ман при необходимости настроить терминал, выложу конфиг для urxvt, выполненный в виде отдельного файла, подключаемого из .Xdefaults.

Читать далее Настройка Rxvt через Xdefaults

BASH [born again shell] — оболочка командной строки

Краткая история Bash

bash, bashrc, настройка bash linux

bash представляет собой модернизированную и усовершенствованную версию оболочки командной строки Bourne shell. В системах семейства *NIX bash на данный момент является одной из наиболее популярных и распространённых оболочек, на многих таких ОС (и например в эмуляторе unix-подобного окружения Cygwin) эта оболочка предустановлена.

Корнями bash уходит к оболочке sh за авторством Стивена Борна, разработанной им в 1978 г. и усовершенствованной в 1987 году Брайаном Фоксом. Дословно Bash можно расшифровать как Biurne-again-shell или «Ещё одна оболочка Борна». Также фамилия Борн созвучна со словом born (родившийся), что порождает альтернативное название: «вновь рождённая оболочка».

Порядок запуска Bash

При запуске bash во-первых считывает и исполняет команды из основного файла профиля /etc/profile (при условии существования такого файла). Затем происходит чтение файлов из домашней директории пользователя: $HOME/.bash_profile, $HOME/.bash_login, и $HOME/.profile и исполнение записанных в них команд. В момент завершения работы при выходе из оболочки вызываются команды из файла $HOME/.bash_logout.

Помимо перечисленных выше файлов, bash также распознаёт команды, описанные в так называемом дот-файле (или .rc-файле) $HOME/.bashrc (примеры — файлы .vimrc и .wgetrc) Обычно здесь содержатся пользовательские настройки внешнего вида оболочки, переопределения пользовательских команд и т.п. Пользовательские функции для bash в целях удобства восприятия полезно выносить в отдельный файл (например $HOME/.bash_function), который затем подключать из .bashrc командой source (source $HOME/.bash_function).

Примеры файлов настроек для bash

bashrc — основной файл настроек

Мой файл bashrc (открыть на новой странице) содержит основные настройки оболочки — алиасы, сохранение истории команд, вид приглашения командной строки, настройки вывода некоторых команд и т.п. Все пользовательские функции вынесены в отдельный файл .bash_functions, подгружаемый из .bashrc. Локальные настройки для разных машин (переменные окружения, цвета приглашения командной строки) также подгружаются из отдельных внешних файлов .bash_local.

bash_functions — функции оболочки

bash_functions (открыть на новой странице) — содержит определения пользовательских функций и подгружается по вызову изи .bashrc.

bash_usage — справка по использованию bash

А небольшая справка по использованию самописных функций и некоторых, не слишком часто нужных, программ, у меня вынесена в отдельный файл bash_usage, который также подгружается из .bashrc:
.bash_usage (открыть на новой странице) — содержит справку по пользовательским функцям и подгружается по вызову из .bashrc.

Остальные настройки оболочки, подключаемые в bashrc

Больше конфигов? Легко!

Примеры моих конфигурационных файлов для других программ можно найти на странице Конфиги / dotfiles

Автоматическая проверка готовности загранпаспорта

Гос. органы идут в массы, постоянно вводят новые, удобные для граждан (по крайней мере на первый взгляд), формы взаимодействия.
К такому нововведению можно отнести и сервис проверки готовности загран. паспорта на сайте УФМС, расположенный по адресу http://www.ufms.spb.ru/checkzp.php. С помощью сервиса можно быстро узнать, готов ли загран. паспорт или еще находится в процессе оформления, введя в поля формы данные своего гражданского паспорта (также доступна проверка по данным из свидетельства о рождении).

Всё в принципе хорошо и удобно кроме одной мелочи — чтобы воспользоваться проверкой готовности — нужно периодически вспоминать о ней и заходить на сайт. По-моему, приделай УФМС автоматическое оповещение о готовности паспорта по электронной почте — сервис выглядел бы законченным и действительно удобным в использовании.

Но раз УФМС не идет на встречу гражданину, значит гражданин должен сам облегчить себе жизнь. Я решил сделать это используя три простых и доступных инструмента: консольный браузер lynx (для отправки данных формы POST-запросом), планировщик заданий cron (для периодической проверки готовности загран. паспорта) и утилиту поиска по тексту grep (для поиска нужной строки в дампе страницы), для чего написал простенький скрипт, который закинул в cron. Скрипт с указанным в кроне периодом проверяет готовность моего паспорта и присылает мне отчет на электронную почту (которая указана в настройках крона).

#!/bin/sh
echo "checkser=p&seriap=XXXX&numberp=YYYYYY&submit=%CF%F0%EE%E2%E5%F0%E8%F2%FC" | lynx -post_data -dump http://www.ufms.spb.ru:80/checkzp.php | grep 'Ваш заграничный'

Вместо ХХХХ нужно подставить серию своего гражданского паспорта (макс. 7 символов, что, как я понимаю, позволяет использовать серии старых паспортов, с римскими цифрами), а YYYYYY заменить соотв. на его номер (макс. 6 символов). Если запускать скрипт из-под английской локали, то шаблон для grep надо изменить с ‘Ваш заграничный’ на ‘Vash zagranichnyj’, поскольку скрипт отдаст страницу в латинице.

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

Дополнение:
Если сайт проверки готовности загранника постоянно «радует» сообщением о превышении числа запросов, можно пропустить их через tor. В этом случае удобно будет воспользоваться другим способом отправки форм POST-методом из lynx — записать автоматический скрипт, который и будет осуществлять проверку.

Посутпаем следующим образом:

  1. вызываем lynx с ключем cmd_log=имя_файла_куда_сохранить_скрипт:
    lynx -cmd_log=script_name http://www.ufms.spb.ru:80/checkzp.php,
    вводим серию и номер паспорта, отправляем запрос, дожидаемся загрузки страницы с ответом и закрываем браузер.
  2. в дополнение к tor устанавливаем torsocks — утилита несколько сырая, но дело своё делает исправно, перенаправляя траффик на tor (можно естественно использовать любой понравившийся прокси, указав его в качестве умолчального export http_proxy="address:port").
  3. вызываем lynx через torsocks или выбранный прокси с указанием использовать для автоматизации отправки данных формы записанный ранее файл скрипта с передачей результатов работы на разбор в grip:
    torsocks lynx -cmd_script=script_name http://www.ufms.spb.ru:80/checkzp.php | grep «Ваш заграничный»

Всё, автоматизация проверки готовности заграничного паспорта успешно проведена! Пока скрипт работает за человека, человек может расположиться у телевизора и спокойно отдохнуть :)