В прошлой серии я расписывал как запускать команды внутри tmux, и как запустить сам tmux при логине в систему.
Сейчас я решил пойти ещё дальше и сделать чтобы всё выглядило так:
- Система загружается
- Автологин root’а в tty1
- Запуск tmux
- Что за хакер запускает команды в моём tmux???
Для того, чтобы при логине автоматически стартовал tmux, нужно в ~/.bash_profile добавить
autorun_tmux () {
tmux_exec="$(/usr/bin/env which tmux)"
bash_exec="$(/usr/bin/env which bash)"
if $tmux_exec has-session 1>/dev/null 2>/dev/null; then
:
else
$tmux_exec start-server
$tmux_exec new-session -d "$bash_exec -l"
$tmux_exec new-session -d "$bash_exec -l -c ~/.tmux.autorun"
$tmux_exec attach -d -t 0
$tmux_exec attach
fi
}
autorun () {
autorun_tmux
}
autorun
В данном случае запускается сервер tmux, затем запускается сессия по-умолчанию с именем 0, а так же запускается ещё одна сессия с именем 1, – вторая сессия нужна для того, чтобы запустить скрипт в фоновом режиме, затем мы переключаемся обратно на основную сессию 0 и подключаем tmux уже будучи залогинены в tty1.
Далее мы напишем скрипт, который создаёт эффект присутствия.
Назовём его ~/.tmux.script
#!/bin/bash
tmux_push () {
tmux_exec="$(/usr/bin/env which tmux)"
tmux_pane="0:0"
$tmux_exec send -t $tmux_pane Enter
unset tmux_pane
unset tmux_exec
}
tmux_pass () {
tmux_exec="$(/usr/bin/env which tmux)"
tmux_pane="0:0"
tmux_text="$(cat -)"
while ! test "${#tmux_text}" = "0"; do
tmux_char="${tmux_text:0:1}"
tmux_text="${tmux_text:1}"
$tmux_exec send -t $tmux_pane "$tmux_char"
sleep .2
done
unset tmux_char
unset tmux_text
unset tmux_pane
unset tmux_exec
}
Просто две функции, одна отправляет любой текст в активное окно tmux с задержкой 200мс, создавая эффект печати текста человеком, вторая команда просто отправляет Enter.
Теперь напишем простой сценарий.
#!/bin/bash
. ~/.tmux.script
echo "ssh-keygen -t ed25519" | tmux_pass
sleep 1 ; tmux_push
sleep 1 ; tmux_push
sleep 1 ; tmux_push
sleep 1 ; tmux_push
sleep 3
echo "rm -r ~/.ssh" | tmux_pass
sleep 1 ; tmux_push
Мы подгружаем две функции из скрипта, а затем пишем сценарий, при котором выполняется команда ssh-keygen и 4 раза нажимается клавиша Enter для подтверждения всех параметров по-умолчанию.
Мы оживили наш tmux!