[12:54 AM] Ilya Sarbash

Здравствуйте, Кирилл. Не могли бы Вы ДЛЯ ВСЕХ уточнить, что нужно сделать к следующему уроку? У Вас написано "Установить Apache, Pазместить страничку HOMEPAGE (предварительная версия N04)", но не понятно, как предоставить сделанную работу. И какие файлы внутри архива использовать — их там жутко много обо всём. Спасибо за ответ!

Здравствуйте ВСЕ! :)

Поскольку не совсем понятно, на сколь широкую аудиторию мне следует разослать ответ, помещу его в публичном секторе на http://kirill.tpt.edu.ee. Кроме того, я уже забыл, как выглядела моя страничка в день нашей последней встречи (аббревиатура N04 наталкивает на мысль, что это было 4-го декабря). Что ж, сделаю какую-нибудь демку, и покажу как ее установить.

Дано:

  1. Демка
  2. Виртуальная машина с Debian 11

Задание:

  1. Установить apache2.
  2. Cкачать и распаковать демо страничку (из дано п.1).
  3. Убедить меня что она работает и доступна с IP вашей виртуальной машины.

Решение:

  1. Пишу скрипт, выполняющий всю требуемую в задании работу (nano kirill-hw.sh)
#!/bin/bash

set -x # echo on

if [ "$UID" -eq "0" ]
then
  echo
  "You are root. script command wouldn't work. Exiting.."
  exit 1
fi

# remove old installation if any..

sudo apt autoremove --purge -y \
  apache2 p7zip-full wget tree > /dev/null
if [ $? -eq 0 ] ; then echo "Success with purge" ; fi
sudo rm -rf /var/www/html/* > /dev/null

# preinstall necessary stuff

sudo apt-get update
sudo apt-get -y upgrade > /dev/null
if [ $? -eq 0 ] ; then echo "Success with apt upgrade " ; fi
sudo apt install -y apache2 p7zip-full wget tree > /dev/null
if [ $? -eq 0 ] ; then echo "Success with apt install " ; fi
sudo mv /var/www/html/index.html /var/www/html/index.html.0

# extract and publish the demo homepage

cd ~
wget -c http://kirill.tpt.edu.ee/src/demohomepage.7z
7z x demohomepage.7z
sudo mv demohomepage/* /var/www/html
sudo chmod 755 /var/www/html/images
rm -f demohomepage.7z

# check the results:

sudo systemctl status apache2
sudo tree /var/www/html/
sudo ip a

echo "I should manually add resulting screenshot here"
echo
  1. не хочу fork'ать bash когда буду запускать свой скрипт
chmod +x kirill-hw.sh
  1. Запускаю logger (script kirill-hw.log). Пока идет запись в лог kirill-hw.log показываю:
  2. Выхожу из сеанса записи (exit).

Свою работу прикрепил к последнему заданию в Teams:

Для удобства скопировал tip N0E сюда:


проверка/подача домашних работ (wsl debian):

cd ~
git clone https://github.com/pixelb/scripts
sudo cp scripts/scripts/ansi2html.sh /usr/local/bin
sudo apt install -y coreutils gawk git highlight \
  python3-pygments python3 python-is-python3 apache2
cat my.log | sudo ansi2html.sh --bg=light | \
  sudo dd of=/var/www/html/my.html

в .bashrc

    alias hicat='highlight -O ansi --force'
    alias pycat='pygmentize -g'

анонимный prompt, узкая печать:

PS1="$ "
echo $PATH | fold -w 64

собственно, работа к сдаче:

nano hw.sh # сочиняем скрипт
chmod +x hw.sh
script hw.log
./hw.sh
exit
cat hw.log | ansi2html.sh --bg=light | sudo dd of=/var/www/html/hw.html

теперь в Chrome: localhost/hw.html, сохранить как pdf, отправить в Teams.

* * *

P.S. Еще вот нашел одно письмо касательно этой же проблемы:

Paзберем подробнее на примере:

Дано: доступ к консоли Debian 11, с возможностью получения прав администратора root (sudo -i, sudo -s, su, su-, и т.п.)

Требуется: Создать, выполнить и уничтожить скрипт, выводящий на консоль текст "Здравствуй, Мир".

Решение: Заходим в консоль. Создаем папку и заходим в нее (чтобы не мусорить вокруг). Пишем скрипт doit, выполняющий все задание одним нажатием клавиши (enter):

#! /bin/bash

echo 'Убираем мусор, если что осталось от прошлого запуска'
sudo rm -f /usr/local/bin/hello
cd ~
rm -rf example

echo "=== Поехали.. ==="
mkdir -p example
cd example
cat << STOP! > hello
#! /bin/bash
echo -e "\033[33mЗдравствуй, Мир\033[0m"
STOP!
chmod +x hello
sudo cp hello /usr/local/bin/
hello
echo "=== Печать себя ==="
cat $0
cd ~

выполняем задание:

script me.log
bash doit
exit

посылаем ответ в виде лог файла (me.log)