Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр
Начните с маленькой подводной лодки: устанавливайте бомбы, избавляйтесь от врагов и старайтесь не попадаться на глаза своим плавучим врагам. Вас ждет еще несколько игровых вселенных, много уникальных сюжетов и интересных загадок.

Пикабомбер

Аркады, Пиксельная, 2D

Играть

Топ прошлой недели

  • AlexKud AlexKud 38 постов
  • SergeyKorsun SergeyKorsun 12 постов
  • SupportHuaport SupportHuaport 5 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня

Linux + Командная оболочка bash

С этим тегом используют

Windows IT Программирование Ubuntu IT юмор Компьютер Программист Все
54 поста сначала свежее
6
zubr0812
7 лет назад

Своя сборка убунту в один клик⁠⁠

Приветствую всех  кто интересуется Linux, недавно у меня появилась срочная необходимость собрать свою сборку убунту , о том как я это делал я хочу написать ниже:

Что первым делает адекватный человек без аналогичного опыта когда ему ставят такую задачу ? правильно! идет в гугл) в ходе гугления я был удивлен тем фактом что для того что бы сделать то что я хочу нужно:


- скачать "файловую систему" убунту

- в режиме chroot (sudo chroot [ каталог с файловой системой ]) выполнить нужную настройку

- cкачать файлик vmlinuz он же ядро
- и естественно  скачать initrd она же временная файловая система (если быть точным Initial RAM Disk)


Дальше , после нескольких манипуляций а именно сжатия всего в squashfs и упаковки в iso-шник я получил то что нужно.
Ну вот , я заметил кучу багов и того что я не доделал , и в течении недели приходилось это все пересобирать до посидения, в итоге мной было принято решения написать баш скрипт по автоматизации всего и вся, работает на ура,сам скрипт ниже)


sudo apt-get install git && git clone https://github.com/GIThunte/build-ubuntu.git


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


Первое на что хотелось бы обратить внимание это системные требования:


Желательно ubuntu 16.04

и установленные приложения

debootstrap

syslinux

isolinux

squashfs-tools

genisoimage

rsync

(Установить их можно так - sudo apt-get install debootstrap syslinux isolinux squashfs-tools genisoimage rsync -y )


Ну и самый важный момент , вам зарание нужно скачать vmlinuz и initrd а так же кинуть их на какой то свой мега ftp, все это дело делается просто, ниже мануал:



1 - sudo apt-get install vsftpd

2 - открываем любым редактором файл /etc/vsftpd.conf , ищем там строку anonymous_enable=NO и меняем NO на YES

3 - перезапускаем сервис sudo service vsftpd restart

4 - идем по этой ссылке : https://drive.google.com/file/d/1m2-G9hVsyO_abBNZxHGAsCZTfYt... и скачиваем архив

5 - дальше выполняем распаковку этих файлов в корень ftp ( у меня это /srv/ftp/ )


если вы сделалали на рабочей системе все правильно , то после перехода по адресу ftp://localhost/ вы должны увидеть 2 файла котрые вы распаковали в каталог ftp


после этого , вам нужно войти в каталог со скриптом и сделать ls увидеть вы должны примерно такой список файлов :


base_img.conf

base_img.sh

FILES

install.sh

README.md

start.sh


вам нужны только два файла base_img.conf и install.sh


base_img.conf это скажем так конфиг скрипта , все что возможно изменить , меняется там


install.sh это очень важный файл , в нем языком bash описывается все что вы хотите изменить в самом образе , например если вы хотите добавить в вашу сборку редактор vim то в конце напишите :


sudo apt-get install vim


(крч это обычный баш скрипт что выполняется в chroot-e)


Последним шагом будет редактирование конфигурационного файла base_img.conf

просто найдите там строки:


INITRD_URL="ftp://zos-ftp.com/initrd.gz"

VMLINUZ_URL="ftp://zos-ftp.com/vmlinuz"


и zos-ftp.com замените на localhost ( крч кто понимает это просто переменные с адресом откуда wget будет тянуть vmlinuz и initrd ) это может быть и прямая ссылка на эти файлы в файлообменнике


так же можете отредактировать файл isolinux.cfg в каталоге FILES


дальше просто пишем :


sudo bash start.sh


спустя некоторое время , в каталоге /srv/BUILD будет лежать ваш iso файл убунту


так же можете описать примерно так :


sudo bash http://archive.ubuntu.com/ubuntu/ /home/ваше имя пользователя/MYUBUNTU


и в каталоге


/home/ваше имя пользователя/MYUBUNTU будет ваше iso


PS: Все это писал для себя,если что то вам не нравится в коде вы можете или переписать его или не использовать=)


Ссылке по теме:

https://willhaley.com/blog/create-a-custom-debian-stretch-li...

Показать полностью
[моё] Build Ubuntu Командная оболочка bash Zos Настройка Linux Длиннопост Текст
26
DELETED
7 лет назад

Помощь по написанию скрипта Bash⁠⁠

#!/bin/bash

echo "The user logged in is:"

pass=12345

echo -en "Enter the password:"

read rightpass

if [[$pass -eq $rightpass]];

then

echo "Hello, Mr.Admin"

else

echo "Sorry, try again"

fi

echo "1 - time, 2 - system information, 3 - list of active users"

echo -en "Choose the next step:"

read choose

time= date +"%T"

info= whoami

infousers= who|cut -d ' ' -f1 |sort|uniq

if [[$choose -eq 1]];

then

echo "Current time :\n $time \n"

elif [[$choose -eq 2]];

then

echo "$info"

elif [[$choose -eq 3]];

then

echo "$infousers"

fi


Не знаю почему, но все if не работают и почему-то в консоле также высвечиваються переменные time, info, infousers (хотя не должны). Я думаю это опять таки из-за ифов. Спасибо за помощь!

P.S. И как сделать break после неправильного пароля в первом if

Показать полностью
[моё] Командная оболочка bash Linux Консоли Терминал Программист Программирование Текст
25
88
Guardo
8 лет назад
GNU/Linux

В Магазине Windows опубликовано два дистрибутива SUSE Linux⁠⁠

Ещё несколько лет назад за такой заголовок вполне можно было получить путёвку в санаторий для душевнобольных, но в мире сегодняшней Microsoft он звучит вполне нормально: просто для Windows 10 и WSL (Bash) доступны новые дистрибутивы Linux, обещанные некоторое время назад.
Напомню, впервые энтузиасты запустили SUSE в среде WSL ещё в январе этого года, в мае разработчики Windows 10 официально сообщили о намерении расширить список поддерживаемых дистрибутивов, включив в него кроме Ubuntu ещё и SUSE, и Fedora. В конечном счёте разработчики WSL планируют сделать эту платформу независимой от типа дистрибутива вообще.

В Магазине Windows опубликовано два дистрибутива SUSE Linux Windows, Windows 10, Linux, Linux и Windows, Командная оболочка bash, Microsoft, Операционная система

В каталоге Магазина Windows сейчас представлено два дистрибутива SUSE: openSUSE Leap 42, предназначенный широкому кругу пользователей, и созданный на его основе, «коммерческий» SUSE Linux Enterprise Server 12. Распространяются они бесплатно, для использования необходимо включить WSL (Bash).

Windows Windows 10 Linux Linux и Windows Командная оболочка bash Microsoft Операционная система
41
871
d0nate110
d0nate110
8 лет назад
GNU/Linux

Агрессивный Linux - Сарказм⁠⁠

Агрессивный Linux - Сарказм 9GAG, Лига линуксоидов, Linux, Агрессия, Сарказм, Терминал, Командная оболочка bash, Юмор

Вольный перевод:


Команды терминала:


Любовь - не найдена

Счастье - не найдено

мир / покой - ненайден

убить - вы должны точно указать кого убить !


Всем добра и больше линукса :-)


P.S. байанометр не ругался...

Показать полностью 1
9GAG Лига линуксоидов Linux Агрессия Сарказм Терминал Командная оболочка bash Юмор
75
51
corvuscor
8 лет назад
GNU/Linux

Стоит ли изучать bash?⁠⁠

Короткий очерк. Вообще об эту тему поломано немало копий. Большинство людей, когда слышит про Linux, начинают заводить разговор типа "фу, консоль, прошлый век". А между прочим там есть мощнейший язык сценариев, который "был питоном задолго до того, как это стало мейнстримом", т.е при сравнительно невысоком пороге вхождения позволяет оптимизировать и автоматизировать все и вся. Ну, как без примера? Вот однострочный скрипт, который выжимает данные с популярного трекера в формате:

магнет-линк
название

curl -s http://mega-tor.org/top | grep -A 3 "a class=\"downgif\"" | grep -o -E "magnet.{54}|a href=\"/torrent.*</a>" | sed -e 's/a href=\"\/torrent.*">//g'

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

Может я и говорю очевидные вещи, но тем не менее. Изучать стоит.
[моё] Linux Командная оболочка bash IT Текст
57
BinaryTree
8 лет назад

Ты не ты, когда любишь Linux⁠⁠

Ты не ты, когда любишь Linux Linux, Windows, Linux и Windows, Командная оболочка bash, GNU

Комментарий находится здесь: https://www.opennet.ru/tips/2963_ubuntu_windows_bash_wsl.sht...

Linux Windows Linux и Windows Командная оболочка bash GNU
1
garex
garex
8 лет назад

Linux: Подарки вконтактика в одну картинку⁠⁠

Осторожно! Дальше будет яваскрипт, консоль и баш!


Вконтактик имеет интересную фичу под названием "Подарки". Один только минус -- она платная. Для тех, кто студент или просто по идейным соображениям желает н....ть систему, сей мануал.


В конце у нас получится что-то типа:

Linux: Подарки вконтактика в одну картинку ВКонтакте, Подарки, Буржуазия, Хрен, Тег, Linux, Командная оболочка bash, Javascript, Длиннопост

1. Заходим на страницу подарков в браузере, типа google chrome

2. Тыкаем на первую картинку правой кнопкой и выбираем пункт "Inspect"

3. Открывается консоль типа вот так:

Linux: Подарки вконтактика в одну картинку ВКонтакте, Подарки, Буржуазия, Хрен, Тег, Linux, Командная оболочка bash, Javascript, Длиннопост

4. Находим родительский тэг DIV. В данном случае -- это gifts_box_birthday


5. Переключаемся на вкладку Console и пишем там наш адский скрипт:

var src=[]; $$('#gifts_box_birthday img.gift_img').forEach(function(img, index){src.push('wget ' + img.src + ' --output-document=' + index + '.jpg')}); src.join('\n')

6. Нажимаем ENTER и копируем результат

Linux: Подарки вконтактика в одну картинку ВКонтакте, Подарки, Буржуазия, Хрен, Тег, Linux, Командная оболочка bash, Javascript, Длиннопост

7. Открываем терминал, создаём временную директорию и идём туда:


mkdir --parents /tmp/fuck-da-vkontakt; cd /tmp/fuck-da-vkontakt
Linux: Подарки вконтактика в одну картинку ВКонтакте, Подарки, Буржуазия, Хрен, Тег, Linux, Командная оболочка bash, Javascript, Длиннопост

8. Вставляем результат в окно терминала и выполняем там скачку этих всех картинок. По окончании команда ls покажет нам, что файлики скачались.

Linux: Подарки вконтактика в одну картинку ВКонтакте, Подарки, Буржуазия, Хрен, Тег, Linux, Командная оболочка bash, Javascript, Длиннопост

9. Финальный аккорд нашего действа — запуск команды, которая все картинки красиво в одну картинку сложит. В линуксе есть команда montage из пакета imagemagick. Её и запустим, находясь в папке с файлами:

montage *.jpg fuck-da-vkontakt.png

10. В итоге у нас получится результат, типа такого. Много маленьких файликов и рядом один большой, слитый.

Linux: Подарки вконтактика в одну картинку ВКонтакте, Подарки, Буржуазия, Хрен, Тег, Linux, Командная оболочка bash, Javascript, Длиннопост

ps: Данная штука полезна, когда у вас есть мильён файликов, а их надо слить в один файлик и в скриншот он никак не хочет помещаться.

Показать полностью 6
[моё] ВКонтакте Подарки Буржуазия Хрен Тег Linux Командная оболочка bash Javascript Длиннопост
13
23
bashman
9 лет назад
GNU/Linux

Разбор скрипта для командной строки Linux. Часть 3(заключительная)⁠⁠

Вот и пришло время заключительной части. В 1-ой части мы сделали код более читабельным, во 2-ой части мы избавились от множества регулярных выражений и лишнего кода. В этой части, мы избавимся от временных файлов и распределим вывод.

Во второй части я совсем забыл про не столь критичные, но всё же замечания в комментариях. Так вместо #!/bin/bash советовали #!/usr/bin/env bash и вместо [ ] использовать [[ ]]. Перед началом разбора, применим эти замечания и получим:

#!/usr/bin/env bash

####PART 1####

if [[ -z "$1" ]]; then
echo "Error: missing argument" 1>&2 ; exit 1
fi
f_out="$(mktemp)"
f_tmp="$(mktemp)"
trap "rm -f $f_out $f_tmp" EXIT

####PART 2####

echo "*********************************************"
echo "Get A records from DNS:"
dig +short {www.,}$1 A | tee "$f_out"

####PART 3####

echo "*********************************************"
echo "Get NS records from DNS:"
dig +short $1 NS | while read nsserv
do
nsname=${nsserv:0:-1}
echo "=================================="
echo "NS: $nsname"
dig +short @$nsname $1 A | tee -a $f_out
done

####PART 4####

echo "*********************************************"
echo "Resolve ip range from whois service:"
sort -n -t . -k 1,1 -k 2,2 -k 3,3 -k 4,4 $f_out | uniq > $f_tmp
rm $f_out
cat $f_tmp | while read ip
do
echo "Get ip range for $ip"
whois $ip | grep -E -i "inetnum|route|netrange|cidr" >> $f_out
done

####PART 5####

echo "*********************************************"
echo "Result"
echo "*********************************************"
sort $f_out | uniq | while read range
do
echo "${range:16}"
done

Для начала, хотелось бы сказать, что для больших данных, запись в файл может быть предпочтительнее, чем хранение в переменной. Но в нашем случае информации не так много, поэтому лучше использовать переменные и(или) массивы. Также стоит заменить, что все команды echo, лучше заменить на команду printf.

В 1-ой части кода происходит создание временных файлов, что для нас уже не актуально и можно удалить. Получим:

if [[ -z "$1" ]]; then

printf -- "%s\n" "Error: missing argument" 1>&2 ; exit 1

fi

Далее в каждой из частей происходит выписывание звездочек, заголовка и результата операции. В таком варианте ясно какие шаги выполняет скрипт, но скрипт будет сложнее использовать, т.к. нельзя будет просто записать конечный результат в файл. Поэтому, лучше выписывать промежуточные этапы не на stdout, а на stderr. Так мы улучшим скрипт и не повлияем на функциональность, т.к. всегда можно сделать  2>&1. Cделаем для этого функцию verbose:

function verbose {
printf -- "%s\n" "$1" 1>&2
}

Звездочки с заголовком выписываются в каждой части, поэтому для этого добавим функцию print_header:

function print_header {

verbose "*********************************************"

verbose "$1"

}

Теперь изменим 2-ую часть. Вместо временных файлов запишем результат в перемененную records. Так мы получим:

####PART 2####

print_header "Get A records from DNS:"


records="$(dig +short {www.,}$1 A)"

verbose "$records"

Поработаем над 3-ей частью, пошлём вывод на stderr и добавим новые  ip в переменную records:

####PART 3####
print_header "Get NS records from DNS:"


dig +short $1 NS | while read nsserv
do
nsname=${nsserv:0:-1}
verbose "=================================="
verbose "NS: $nsname"
ns_records="$(dig +short @$nsname $1 A)"
verbose "$ns_records"
records+=ns_records
done

А вот с 4-ой частью возникли проблемы. В данной строке:

whois $ip | grep -E -i "inetnum|route|netrange|cidr" >> $f_out

после проведение grep, терялся \n на конце последней строки. В этом примере это не было проблемой, т.к. >> добавлял текст в конец файла и сам ставил новую строку(\n) между старым и новым текстом. Но когда я переписал на переменные, то проблема дала о себе знать и пришлось добавлять символ \n для каждого результата этой команды. Однако появилась одна пустая строка в конце результата, но удалить её было просто:

result="${result%$'\n'}

4-ая часть после изменений:

####PART 4####

print_header "Resolve ip range from whois service:"

records="$(sort -n -t . -k 1,1 -k 2,2 -k 3,3 -k 4,4 <<<"$records" | uniq)"

result=''

while read ip

do

verbose "Get ip range for $ip"

result+="$(whois $ip | grep -E -i "inetnum|route|netrange|cidr")"$'\n'

done <<< "$records"


result="${result%$'\n'}

Немного изменим 5-ую часть:

####PART 5####
print_header "Result:"
sort <<< "$result" | uniq | while read range
do
printf -- "%s\n" "${range:16}"
done

После всех изменений, мы получим:

#!/usr/bin/env bash

function verbose {

printf -- "%s\n" "$1" 1>&2
}

function print_header {

verbose "*********************************************"
verbose "$1"
}

####PART 1####

if [[ -z "$1" ]]; then
printf -- "%s\n" "Error: missing argument" 1>&2 ; exit 1
fi

####PART 2####

print_header "Get A records from DNS:"
records="$(dig +short {www.,}$1 A)"
verbose "$records"

####PART 3####

print_header "Get NS records from DNS:"
dig +short $1 NS | while read nsserv
do
nsname=${nsserv:0:-1}
verbose "=================================="
verbose "NS: $nsname"
ns_records="$(dig +short @$nsname $1 A)"
verbose "$ns_records"
records+=ns_records
done

####PART 4####

print_header "Resolve ip range from whois service:"
records="$(sort -n -t . -k 1,1 -k 2,2 -k 3,3 -k 4,4 <<<"$records" | uniq)"
result=''
while read ip
do
verbose "Get ip range for $ip"
result+="$(whois $ip | grep -E -i "inetnum|route|netrange|cidr")"$'\n'
done <<< "$records"
result="${result%$'\n'}"

####PART 5####

print_header "Result:"
sort <<< "$result" | uniq | while read range
do
printf -- "%s\n" "${range:16}"
done

Возможно код стал немного хуже читаться, но за-то мы избавились от временных файлов. А стоит ли оно того, решать только вам.

Заключение:

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


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

Спасибо всем за внимание и поддержку, надеюсь данный разбор оказался для вас полезен!

Показать полностью
[моё] Gnulinux Linux Командная оболочка bash Программирование Длиннопост Текст
0
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии