October 2030
| |
|
1 |
2 |
3 |
4 |
5 |
| 6 |
7 |
8 |
9 |
10 |
11 |
12 |
| 13 |
14 |
15 |
16 |
17 |
18 |
19 |
| 20 |
21 |
22 |
23 |
24 |
25 |
26 |
| 27 |
28 |
29 |
30 |
31 |
|
1/12/17 01:23 am
Скрипт, разбирающий deb-пакеты
Понадобилось распаковывать deb-пакеты, чтобы вытащить из них некоторые программулины, для других версий Linux не собранные. Решил распаковку deb-пакетов автоматизировать и написать скрипт, распаковывающий, а точнее разбирающий на составные части все deb-пакеты, находящиеся в текущем каталоге.
Кратко и по рабоче-крестьянски, что такое deb-пакет. Фактически, это архив формата ar, содержащий бинарные файлы программы, скрипты, необходимые пакетному менеджеру Debian для установки/удаления пакета и всякую служебную информацию, вроде контрольных сумм и прочего. Нас интересуют бинарные файлы и неплохо бы посмотреть на предустановочные скрипты, ну мало ли чего там интересного и важного обнаружится. Установочные скрипты внутри архива ar сжаты в архив control.tar.gz, а вот бинарники находятся в архиве data.tar.??, где вместо ?? может быть .gz, .xz и т.д., в зависимости от того, что для сжатия бинарников было использовано. В архиве data сохранена структура каталогов, идентичная каталогам в системе, куда будет установлен пакет, примерно как в пакетах Slackware (только структура каталогов, естественно, специфична для Debian-подобных Linux). В архиве control.tar.gz могут содержаться скрипты конфигурирования, из которых наиболее интересны preinst, выполняемый на Debian перед распаковкой пакета, и postinst, выполняемый, когда пакетный менеджер распаковал бинарники в целевую систему. Естественно, просто так их выполнять не советую, но если делать из deb-пакета пакет Slackware, то не лишним будет с этими скриптами ознакомиться и буде там что нужное, передрать в doinst.sh
СкриптОпределим основные переменные: #!/bin/bash
DATADIR="./data" #директория, куда класть архивы с бинарниками CONTROLDIR="./control" #... с управляющими скриптами CURDIR="" #Текущая директорияВывод краткой справки по использованию скрипта: if [ "$1" == "-h" ]; then #print help
echo "Unpacking all *.deb packages in current directory"
echo "use" `basename "$0"` "[-c]"
echo "-c - delete files in out-dirs"
exit
fiВыводим информационное сообщение и создаем каталоги для хранения архивов с бинарниками и управляющими скриптами: echo "Unpacking all *.deb packages in current directory"
echo "Making out-dirs... $DATADIR $CONTROLDIR" mkdir $DATADIR mkdir $CONTROLDIRЕсли при запуске скрипта был указан ключ -c, то очищаем содержимое директорий для хранения распакованных файлов: if [ "$1" == "-c" ]; then
echo "Clear out-dirs..."
CURDIR=`pwd`
cd $DATADIR
rm *
cd $CURDIR
cd $CONTROLDIR
rm *
cd $CURDIR
fiС помощью команды find получим список всех deb-пакетов ( *.deb) в текущей директории: echo "Processing:" F=`find . -name "*.deb" -type f`где: . (точка) - указание команде find искать в текущем каталоге. -name - после этого ключа задается нужная нам маска файла ( "*.deb") -type f - искать только файлы (не каталоги, подпадающие под шаблон). Результат отправляется ( ``) в переменную $F, которую обрабатываем в следующем цикле for: for FILE in $F do ... doneЧто делаем в цикле: Вызываем архиватор ar с параметром t, это выведет список файлов в архиве, потом при помощи grep получаем имя архива data с бинарниками (напомню, оно разное может быть, в зависимости от того, чем бинарники сжаты): DATAPKG=`ar t ${FILE}|grep "data"`
Аналогично поступаем и с архивом control, содержащим управляющие скрипты: CONTROLPKG=`ar t ${FILE}|grep "control"`Получаем имя deb-пакета без расширения (ключ -s ".deb" команды basename): BASENAME=`basename -s ".deb" ${FILE}`И расширения для содержащихся в deb-пакете архивов с бинарниками и скриптами: EXTDATA=`echo $DATAPKG|sed 's/data//g'` EXTCONTROL=`echo $CONTROLPKG|sed 's/control//g'` echo "${FILE} : $DATAPKG, $CONTROLPKG"Идея в том, чтобы при разборе пакета поименовать каждый архив также, каково имя пакета, присвоив правильное расширение, чтоб, если пакет не один, было понятно - какой архив от какого пакета, и чтоб они друг друга не затерли. Вытаскиваем архивы из пакета: ar -p "$BASENAME.deb" $DATAPKG > "$DATADIR/$BASENAME$EXTDATA" ar -p "$BASENAME.deb" $CONTROLPKG > "$CONTROLDIR/$BASENAME$EXTCONTROL"После запуска скрипта в каталоге, содержащем deb-пакеты, будкт созданы два подкаталога, содержащие архивы с бинарниками и архивы с инсталляционными скриптами. Их уже можно распаковать стандартными tar'ом и gzip'ом или посмотреть их содержимое с помощью mc Скрипт целикомНа PasteBinСкачать с Mega.nzИсточники1. Архиватор ar2. Структура deb-пакета3. Цикл for4. Распаковка пакета deb5. basename --helpЗаметка в PDFЭто репост заметки из моего блога на сайте http://tolik-punkoff.com Оригинал заметки находится здесь: http://tolik-punkoff.com/2017/01/11/skript-razbirayushhij-deb-pakety/
1/12/17 01:27 am
Удаленная перезагрузка сервера под управлением Linux. Перезагрузка Linux без ввода пароля.
На самом деле делалось не для совсем сервера, но тем не менее. Стоит, в общем, на одном заводике в одной из стран СНГ аппарат по переработке пластиковых отходов в пластиковые полезности, управляет им комп с Linux на борту, а компом из будочки рядом управляет оператор с рабочего места с обыкновенной виндой. Комп с Линуксом надо иногда перезагружать, отключать, а в штатном ПО аппарата эту возможность почему-то не встроили. Раньше оператором был довольно умный парень, которому и root-пароль можно было доверить, и ssh, но он уволился, напоследок создав два батника примерно такого содержания:
plink -ssh -P 22 -l root -pw rutoviiparol 192.168.0.40 reboot plink -ssh -P 22 -l root -pw rutoviiparol 192.168.0.40 poweroff
Бардак сущий, под root ходить для перезагрузки никуда не годится, да еще и хранить рутовый пароль в открытом виде. Можно, конечно, было бы подправить батник, сделав вход под юзерской учеткой, но sudo было криво настроено и все равно оператору бы пришлось для перезагрузки вводить пароль.
Решение Завести на сервере отдельных пользователей "для отключения" и "для перезагрузки" и настроить все так, чтобы при входе этих пользователей по ssh автоматически выполнялось выключение или перезагрузка, при этом не требовался ввод пароля, создать соответствующие bat-файлы на операторском рабочем месте. Создание группыПервым делом понадобится группа для этих пользователей. Самая простая операция. Назовем группу, например powermanager и создадим ее (естественно, здесь и далее все команды, требующие root-доступа делаются из-под учетки root или через sudo). groupadd powermanagerНастройка sudo, редактирование файла sudoersВ файле /etc/sudoers как раз и описывается, какие пользователи и группы имеют возможность пользоваться утилитой sudo, временно повышая свои права до root, и какие команды им разрешено выполнять без пароля. Этот файл руками лучше не редактировать, а всегда делать это с помощью команды visudo: Файл настроек /etc/sudoers всегда следует редактировать с помощью команды visudo. visudo блокирует файл sudoers, сохраняет изменения во временный файл и проверяет, что файл грамматически корректен, перед тем как скопировать его в /etc/sudoers. Важно: Крайне важно, чтобы файл sudoers был без синтаксических ошибок! Любая ошибка делает sudo неработоспособным. Всегда редактируйте его только с помощью visudo для предотвращения ошибок. [1] I. Улучшаем работу с sudoersНо есть небольшая проблема, visudo, в качестве вызываемого ей редактора, использует неудобный vi, который без стакана и длительной практики может только "пищать и портить". Слава Ктулху, на компьютере стоял mc, и, соответственно, mcedit, поэтому: 1. Переопределение редактора для visudo при однократном запуске: EDITOR=mcedit visudoУфф, /etc/sudoers открылся в человеческом mcedit. 2. Постоянная замена редактора для visudoДля этого добавляем в sudoers следующие строки: Defaults env_reset Defaults editor=/usr/bin/mcedit, !env_editorгде editor=/usr/bin/mcedit указание, какой редактор использовать !env_editor - запрет использования редактора, установленного переменными окружения (подробности смотрите по ссылке на детальное описание файла sudoers в конце заметки). II. Прописываем разрешения для группы powermanager в sudoersДля разрешения пользоваться командой shutdown без ввода пароля для пользователей группы powermanager, в sudoers следует добавить следующую конструкцию: %powermanager ALL=NOPASSWD: /sbin/shutdownВнимание! Для более полного понимания sudoers настоятельно рекомендую ознакомиться со статьей по ссылке в конце заметки! Внимание! Все пути в файле sudoers должны быть полнымиПример файла sudoers можно посмотреть здесь. Создание пользователей для перезагрузки и отключения питания
Создание пользователя для удаленной перезагрузки. 1. Создаем пользователя: useradd -g powermanager -d /home/rebootusr -s /home/rebootusr/reboot.sh rebootusrгде: -g powermanager группа пользователя (ранее созданная powermanager) -d /home/rebootusr домашний каталог пользователя -s /home/rebootusr/reboot.sh - оболочка для пользователя. Обычно здесь прописывается /bin/sh, /bin/bash для интерактивных пользователей, или /bin/false для неинтерактивных, например пользователя FTP, но можно задать и собственный скрипт, команды которого будут выполнены при входе пользователя в систему. 2. Задаем пользователю пароль (иначе не сможем залогиниться по ssh): passwd rebootusr3. Создаем домашний каталог: mkdir /home/rebootusr4. Меняем владельца каталога на пользователя rebootusrchown rebootusr:powermanager /home/rebootusr5. Меняем права доступа на каталог: chmod 500 /home/rebootusr6. Создаем в домашнем каталоге скрипт reboot.sh со следующим содержимым: #!/bin/sh
echo "Rebooting..." sudo /sbin/shutdown -r now
где -r - указание программе shutdown выполнить перезагрузку now - указание временного интервала - немедленно (можно еще выставить число в минутах, тогда перезагрузка произойдет через указанное время) 7. Меняем владельца и права доступа для скрипта reboot.shchown rebootusr:powermanager /home/rebootusr/reboot.sh chmod 500 /home/rebootusr/reboot.shАналогично создаем пользователя для выключения, меняя только имя, пароль, домашний каталог, название скрипта и команды в скрипте. Содержимое скрипта для отключения питания poweroff.sh: #!/bin/sh
echo "Power off" sudo /sbin/shutdown -hP nowНастройка рабочего места оператораДля Windows понадобится утилита plink, обычно она идет вместе с ssh-клиентом PuTTY. В каталоге с ней создаем два bat-файла следующего содержания. rebootsrv.bat: plink -ssh -P 22 -l rebootusr -pw rebootpass 192.168.0.40 pwroffsrv.bat: plink -ssh -P 22 -l pwroffusr -pw pwroffpass 192.168.0.40где вместо rebootusr и pwroffusr надо подставить имена пользователей для удаленной перезагрузки и отключения питания соответственно, вместо rebootpass и pwroffpass - заданные пароли, а вместо 192.168.0.40 настоящий адрес удаленного компьютера. Источники1. sudo [Копия]2. Как перезагрузить компьютер без прав root [Копия]Заметка в PDFЭто репост заметки из моего блога на сайте http://tolik-punkoff.com Оригинал заметки находится здесь: http://tolik-punkoff.com/2017/01/11/udalennaya-perezagruzka-servera-pod-upravleniem-linux-perezagruzka-linux-bez-vvoda-parolya/
1/12/17 02:43 am
Спамерам.
Ребята, да, капча сломалась, но это не повод так набигать, кроме каптчи есть еще куча методов от вас избавиться. Но если все-таки вам хочется, чтобы автор данного блога перешел по ссылке (другие пользователи не увидят, а я от скуки читаю), то прошу, скидывайте ссылки на гей-БДСМ порно с мелкими пацанами, как говорится, хорошее дело сделаете, и админу (т.е. мне), и SUPO. Сковородки, виагра и кредиты в Ощаде не интересуют, спасибо.
Это репост заметки из моего блога на сайте http://tolik-punkoff.com Оригинал заметки находится здесь: http://tolik-punkoff.com/2017/01/12/spameram/
1/12/17 02:46 am
О лавочниках и о т(р)упике коммунизма.
szg_akt2 постоянно наезжает на "лавочников", подспудно противопоставляя их "пролетариям" и "революционерам". Про "революционеров" в некотором смысле соглашусь, потрясения, неизбежно связанные с революцией ни одному предпринимателю, собственнику, не вперлись. НО! В текущем "капиталистическом" строе, "лавочник", т.е. мелкий собственник, предприниматель, это и есть "гегемон", великий защитник общества, который удерживает общество с одной стороны от скатывания в корпоративный фашизм, когда как в антиутопиях из НФ всем рулит какая-нибудь Umbrella или Genetics, inc. или Microsoft, а с другой стороны - удерживает государство от скатывания в гибридный (с распиздяйством, ибо чиновник не хочет работать, он хочет зарплату) государственный тоталитаризм.
Конкретный пример, две картинки:
РОССИЯ (ГОРФ, Кондопога): Около хлебного ларька ОЧЕНЬ скользко, продавщица на вопрос товарища отвечает что-то типа "дык ведь ЖКХ не посыпало" (естественно, в ЖКХ скажут, что мы только дворы посыпаем, а у ларьков это в мэрию, а там загоняют по инстанциям между районной и городской управой, как минимум). ФИНЛЯНДИЯ: Службы НЕ УСПЕЛИ доехать до моей любимой кафешки по гололеду. А должны были, лавочника, хозяина кофейни не ебет, во-первых, ему НАДО, чтоб клиенты зашли в кафешку, а во-вторых, пиар тоже не лишний. В результате он доплачивает официантам, они чистят и посыпают дорожку песком, а "лавочник" зовет юриста и в его присутствии вешает на дверь объявление - "отсюда дотуда почищено и посыпано за счет Такой-то Такоговича". И я уверен, что он потом обратится в суд, высудит с мэрии компенсацию, и чиновникам придется лизать не только дорожку, которую их службы должны были очистить, но еще и жопу "лавочнику".
-Лавочник - истинный бизнесмен, работает только на себя (но работа только на себя не означает отказ от социальных проектов, это ведь в конечном итоге и в худшем случае - пиар и дополнительные клиенты) -Лавочник стремится к оптимизированной и счастливой жизни. -Лавочник отметает вредные мемы и психоконструкты типа "патриотизма", "государства", "бога" и прочего "корпоративного дресс-кода", когда они мешают вести ему бизнес. -Лавочник - за науку, потому что результаты научных исследований он может применить для уменьшения накладных расходов, соответственно больше оставив себе/больше поделившись с работниками. -Лавочник за либерализацию и за легалайз в самом широком смысле, потому что тогда открываются новые рынки. -Лавочник за честную зарплату, ведь если платить работникам слишком мало, они будут саботировать, "а что они делают с грибным жульеном, вам лучше не знать (C)" -Лавочник за лиьерализацию в политике и экономике, иначе ему нельзя будет работать. -Лавочник за все хорошее, против всего плохого. Под хорошее-то можно подстроиться, ничего не потеряв, плохое требует больше усилий для оптимизации себя относительно его.
Вот и сравните, бля, на очень простом примере, страны где "лавочники" есть, а где нет. Начнете пихать гнилую моральку про "сопли сирийских детей", тоже найду что ответить. Удачи!
Это репост заметки из моего блога на сайте http://tolik-punkoff.com Оригинал заметки находится здесь: http://tolik-punkoff.com/2017/01/12/o-lavochnikah-i-o-tupike-kommunizma/
|