Команда IT специалистов выполнит подготовку инфраструктуры для вашего бизнеса.
Внедрение самых передовых решений и технологий.
Поддержка и сопровождение ваших сервисов.
Выполнение работ под "ключ", от покупки сервера, до настройки автоматизации процессов.
8(977)608-78-62 adm@nixm.ru

Установка qemu-kvm и настройка локальной виртуальной сети 3

Установка и настройка программ в Debian
Аватара пользователя
nezabudka
Местный говорун
Местный говорун
Сообщения: 618
Зарегистрирован: 18 апр 2015, 06:13
Откуда: Ростов на Дону

Установка qemu-kvm и настройка локальной виртуальной сети 3

Сообщение nezabudka »

До конца быть может дочитают разве что единицы но мы все же поставим заключительную
точку в этой саге. Это последняя часть трилогии, первая находится здесь вторая здесь
В них описана установка qemu-kvm настройка моста объединившего все виртуалки в одну локальную
сеть, где мы превратили целевую машину в маршрутизатор и открыли выход в глобальную сеть всех
виртуальных точек. Теперь просто обустроим все и добавим некоторого удобства в работе.
Обычно я запускаю виртуалки на разных рабочих столах это создает эффект удаленности и
перемещаю файлы при помощи инструмента

Код: Выделить всё

scp ./document one@linux:/home/nezabudka/
Теперь к делу. Мы собирались оптимизировать работу нашего скрипта запускающего виртуальные
машины. Сразу бросается в глаза неудобство связанное со вводом пароля при запуске скрипта.
Это связано с тем что саму машину мы должны запускать от имени пользователя, а именованный канал
создаем от рута. Я работаю на домашнем компьютере так что могу себе позволить отключить ввод
пароля для нужных мне команд. Но я наверное обязана для начала предупредить что это серьезная
дыра в безопасности системы и повторять это или нет в первую очередь зависит от основной цели использования станции. По крайней мере нужно всегда помнить на будущее что мы добавили
некоторые команды в безпарольный запуск. Теперь сделаем это

Код: Выделить всё

vim /etc/sudoers
Добавим следующую строчку в секцию# User privilege specification

Код: Выделить всё

nezabudka	ALL=NOPASSWD:/sbin/ifconfig,/usr/sbin/tunctl,/sbin/brctl
Теперь при вызове команды с префиксом sudo ifconfig пароль вводить нам больше не потребуется.
Переходим к следующей проблемме. Она сводилась к тому что сеть в нашей машине нельзя
рестартнуть ибо собьются все настройки, а правильный кейс следующий - "остановить и
по новой запустить саму виртуалку но уже не создавая именованного канала".
Как учила баба Шура, во первах составим алгоритм нового скрипта
1.Создаем преключатель
а)Запускаем машину в режиме по умолчанию
б)Запускаем машину в режиме перезагрузки когда уже созданы именованные каналы
За работу преключателя назначаем ответственным параметр "reboot"
Сперва выстроим работоспособный скелет

Код: Выделить всё

if [[ "$1" == "reboot" ]]; then
	echo "Запускаем машину без создания именованного канала"
else
	sudo echo "Запускаем машину по дефолту с cозданием канала"
fi
exit 0
Теперь мы можем пользоваться параметром "reboot" или заменить его например на "-r"
Но можем прикрутить сюда и псевдо графический интерфейс который нам любезно
предоставляет тулза whiptail. Cмотрим че за зверь.

Код: Выделить всё

dpkg -s whiptail
apt-cache show whiptail
А дословный перевод нам говорит что перед нами сам Хлыстохвост. С его помощью мы можем сделать простой переключатель.

Код: Выделить всё

#!/usr/bin/env bash
if (whiptail --yesno "Режимы запуска ВМ" --yes-button "Start" --no-button "Reboot" --title "Тестируем байду от незабудки" 10 70) then
	toilet --gay "Привет"
else 
	toilet --metal "Пока"
fi
exit 0
Можете скопировать, добавить права на запуск и поиграться, если конечно у вас установлены
две утилиты, обязательная whiptail и не обязательная toilet которую вы можете заменить
комндой echo. Но вот зачем нам взрослым людям гуй и тем более псевдо гуй? Мы все им наигрались
при устаноке системы. Оставим его на новый год лампочки переключать. А выбор режима запуска
мы можем с легкостью перепоручить самой программе. Лишние телодвижения это не линукс вэй.
Алгоритм работы программы будет слудующим.
Запускаем скрипт, программа проверяет доступен ли интерфейс tap0. Если доступен, запускаем
одну группу команд, если нет другую. Добавим в наш скрипт следующую конструкцию

Код: Выделить всё

if (sudo ifconfig | grep -o tap0) then
	"Строка запуска машины без создания канала"
else
	"Строки создания канала и запуска машины"	
fi
exit 0

И более того предлагаю вообще оторвать запуск скрипта от терминала.
Заходим в "параметры" выбираем "клавиатура" преходим на вкладку "комбинации клавиш",
добавляем название и команду (путь до нашего скрипта) и привяжем это действие к
комбинации Alt+Ctrl+1, а из скрипта уберем значек выполнения в фоне. Есть смысл повесить
запуск других машин на Alt+Ctrl+2... Помимо удаления значка амперсанда, отвечающего за
запуск программы в фоне, нам нужно обязательно прописать в скрипте sh все абсолютные пути
используемых файлов и программы. Наш скрипт в конечном итоге приобретет следующий вид

Код: Выделить всё

#!/usr/bin/env bash
macaddress=$(printf 'DE:AD:BE:EF:%02X:%02X\n' $((RANDOM%256)) $((RANDOM%256)))
if (sudo ifconfig | grep -o tap0) then #доверим программе выбирать режимы запуска
	/usr/bin/kvm -hda /home/nezabudka/kvm/Deb1.img -cdrom /home/gnom/kvm/debian.iso -net nic,model=e1000,macaddr=${macaddress},vlan=0 -net tap,vlan=0,ifname=tap0,script=no
else
	sudo  tunctl -b -u gnom
	sudo ifconfig tap0 up
	sudo brctl addif br0 tap0
	/usr/bin/kvm -hda /home/nezabudka/kvm/Deb1.img -cdrom /home/gnom/kvm/debian.iso -net nic,model=e1000,macaddr=${macaddress},vlan=0 -net tap,vlan=0,ifname=tap0,script=no
fi
exit 0
Ну и на последок для любителей мышек создадим ярлык запуска нашего скрипта на
рабочем столе. У нас есть очень интересный каталог. В нем находятся ярлыки
установленных в системе программ. Если мы зайдем туда и воспользуемся для просмотра
редактором vim или утилитой cat | more
то мы можем просмотреть их содержимое для ознакомления, а через наутилус с помощью мыши
позапускать их. По их подобию можно создать аналогичный ярлык. Попробуем.
К стати сказать я пользуюсь оболочкой gnome-shell так что делайте поправки на свое окружение.

Код: Выделить всё

cd desktop
vim script.desktop
Скопируем туда ниже приведенный текст

Код: Выделить всё

[Desktop Entry]
Name=KVM_1
Comment=Скрипт запуска виртуальной машины
GenericName=Эмулятор процессора
Keywords=эмулятор;виртуалка;машина
Exec=/home/nezabudka/kvm/1vm.sh
Terminal=false
Type=Application
Icon=/usr/share/pixmaps/faces/dice.jpg
Categories=qemu-kvm;kvm;qemu
StartupNotify=false
Сохраняемся и выходим. Картинку естественно можно поменять через свойства в контекстном
меню. И конечно же не забываем добавить права на выполнение

Код: Выделить всё

chmod 755 script.desktop
Теперь нам остается помнить что в скрипте мы убрали занчек запуска в фоне и по сему скрипт
запущенный из терминала обязательно захватит весь терминал. Если вы работаете только в эмуляторе консоли и вы противник использования хот кеев верните амперсанд на место.
В следующих постах мы начнем то ради чего настраивали этого спрута, начнем создавать соединения, тестировать сетевые утилиты и инструменты, настраивать службы, а так же работать над безопасностью
системы, но это уже будут отдельные истории.
Последний раз редактировалось nezabudka 12 май 2015, 18:58, всего редактировалось 4 раза.
"I invented the term Object-Oriented and I can tell you I did not have C++ in mind." - Alan Kay
Аватара пользователя
Oleg65
Местный говорун
Местный говорун
Сообщения: 859
Зарегистрирован: 18 янв 2015, 10:56
Откуда: г.Коломна Моск.обл.

Re: Установка qemu-kvm и настройка локальной виртуальной сет

Сообщение Oleg65 »

Теперь при вызове команды с префиксом sudo ifconfig пароль вводить нам больше не потребуется
ИМХО, это плохо: лень враг безопасности! Хотя, если только на время установки...
а правильный кейс
А правда, почему без case? Короче и быстрее... Да и вообще, меня смущает масса sudo в сценариях, почему не сделать запуск сценариев от root, а не вносить изменения в sudoers? Может ошибаюсь, все воедино посмотреть бы (имею ввиду код, все, что делаем по пунктам) :roll: Может проще написать сценарий на полную установку? :?
Аватара пользователя
nezabudka
Местный говорун
Местный говорун
Сообщения: 618
Зарегистрирован: 18 апр 2015, 06:13
Откуда: Ростов на Дону

Re: Установка qemu-kvm и настройка локальной виртуальной сет

Сообщение nezabudka »

Oleg65 писал(а):меня смущает масса sudo в сценариях, почему не сделать запуск сценариев от root, а не вносить изменения в sudoers?
Потому что саму машину нужно запускать от имени пользователя, я это отмечала в статье.
Иначе придется делать два скрипта и запускать от рута и пользователя по отдельности.
Остальные вопросы я не совсем поняла. "Правильный кейс" я имела ввиду правильный
порядок.
Последний раз редактировалось nezabudka 08 май 2015, 17:14, всего редактировалось 2 раза.
"I invented the term Object-Oriented and I can tell you I did not have C++ in mind." - Alan Kay
Sunderland93

Re: Установка qemu-kvm и настройка локальной виртуальной сет

Сообщение Sunderland93 »

Почему у тебя даже echo от рута выводится? Чёто дыр многовато.
Аватара пользователя
nezabudka
Местный говорун
Местный говорун
Сообщения: 618
Зарегистрирован: 18 апр 2015, 06:13
Откуда: Ростов на Дону

Re: Установка qemu-kvm и настройка локальной виртуальной сет

Сообщение nezabudka »

Sunderland93 писал(а):Почему у тебя даже echo от рута выводится? Чёто дыр многовато.
Это же муляж. А не конечная программа. Это я имитировала команды с запуском через sudo.
Впрочем здесь ты прав, в одной строчке я уберу sudo, а во второй оставлю для наглядности.
"I invented the term Object-Oriented and I can tell you I did not have C++ in mind." - Alan Kay
Sunderland93

Re: Установка qemu-kvm и настройка локальной виртуальной сет

Сообщение Sunderland93 »

[мелкая придирка]gnome-shell - не окружение[/мелкая придирка] Вот это смутило
Но вот зачем нам взрослым людям гуй и тем более псевдо гуй?
Вот взрослые люди как раз и пользуются гуем тогда, когда время и удобство важнее. А школьники будут хвастаться какие они хацкеры. Сколько раз уже замечал такое. Консоль крутая вещь, но в каждую щель её пихать не стоит.
Аватара пользователя
nezabudka
Местный говорун
Местный говорун
Сообщения: 618
Зарегистрирован: 18 апр 2015, 06:13
Откуда: Ростов на Дону

Re: Установка qemu-kvm и настройка локальной виртуальной сет

Сообщение nezabudka »

Sunderland93 писал(а):[мелкая придирка]gnome-shell - не окружение
Спасибо за замечание. Приду с работы, поработаю над текстом.
Sunderland93 писал(а):Вот взрослые люди как раз и пользуются гуем тогда, когда время и удобство важнее. А школьники будут хвастаться какие они хацкеры. Сколько раз уже замечал такое. Консоль крутая вещь, но в каждую щель её пихать не стоит.
На счет взрослых людей я пошутила, я совсем не чувствую себя взрослой.
Эта статья просто выход увлеченного человека а не профессионала. Мне не важно
время. Мне был важен мой интерес и он меня провел вот по этой кривой.
А на счет шуток, без них жизнь была бы пресной. Впредь прошу не отностся к моим
строчкам слишком серьезно, пропустите капельку шутки в свою жизнь.
"I invented the term Object-Oriented and I can tell you I did not have C++ in mind." - Alan Kay
Шпак Дмитрий
Местный говорун
Местный говорун
Сообщения: 579
Зарегистрирован: 19 янв 2015, 15:56
Откуда: Russian_federation, какой то

Re: Установка qemu-kvm и настройка локальной виртуальной сет

Сообщение Шпак Дмитрий »

Sunderland93 писал(а):[мелкая придирка]gnome-shell - не окружение[/мелкая придирка] Вот это смутило
Но вот зачем нам взрослым людям гуй и тем более псевдо гуй?
Вот взрослые люди как раз и пользуются гуем тогда, когда время и удобство важнее. А школьники будут хвастаться какие они хацкеры. Сколько раз уже замечал такое. Консоль крутая вещь, но в каждую щель её пихать не стоит.
Она идёт совершенно правильной дорогой, разбирается в самой сути проблем, а не юзает сразу гуй. Из админов уже на работу некого брать, все только мышкой привыкли тыкать, или враемворками пользоваться, а чуть проблема и надо ручками покопаться, уже ни кто не может.
Аватара пользователя
ALEXX
Администратор
Администратор
Сообщения: 1350
Зарегистрирован: 21 дек 2014, 14:59
Откуда: Королёв
Контактная информация:

Re: Установка qemu-kvm и настройка локальной виртуальной сет

Сообщение ALEXX »

Шпак Дмитрий писал(а):Из админов уже на работу некого брать, все только мышкой привыкли тыкать, или враемворками пользоваться, а чуть проблема и надо ручками покопаться, уже ни кто не может.
Нужно готовить кадры, а не искать их со стороны. Набери группу "Мышкарей", посади за терминал и учи. Так и только так кадровиков можно набрать, а не искать на "большой дороге".
Ответить

Вернуться в «Установка программ»