First run
This commit is contained in:
parent
4204c65b52
commit
5f7765cf95
2
.dockerignore
Normal file
2
.dockerignore
Normal file
@ -0,0 +1,2 @@
|
||||
./data/students/
|
||||
|
||||
32
Dockerfile
Normal file
32
Dockerfile
Normal file
@ -0,0 +1,32 @@
|
||||
# Built with arch: amd64 flavor: lxde image: ubuntu:20.04
|
||||
#
|
||||
################################################################################
|
||||
# base system
|
||||
################################################################################
|
||||
|
||||
FROM debian
|
||||
RUN apt update
|
||||
RUN apt install openssh-server vim net-tools sudo openssl -y
|
||||
RUN apt install expect openssl perl python2 psutils net-tools -y
|
||||
|
||||
RUN groupadd isen -g 1000
|
||||
|
||||
RUN useradd -rm -d /home/isen -s /bin/bash -g 1000 -G sudo -u 1000 -p "$(/usr/bin/openssl passwd -1 isen)" isen
|
||||
RUN echo "root:root" | chpasswd
|
||||
RUN echo "isen:isen" | chpasswd
|
||||
|
||||
#RUN echo '%sudo ALL=(ALL:ALL) ALL' >> /etc/sudoers
|
||||
RUN sed -i "/%sudo/s/ALL$/NOPASSWD: ALL/" /etc/sudoers
|
||||
|
||||
RUN apt install manpages-dev man-db shc gcc build-essential -y
|
||||
COPY ./data/bin/firstconnect /usr/bin/firstconnect
|
||||
RUN chmod 755 /usr/bin/firstconnect
|
||||
RUN chown root:root /usr/bin/firstconnect
|
||||
RUN touch /etc/first
|
||||
RUN touch /etc/new
|
||||
|
||||
|
||||
RUN service ssh start
|
||||
EXPOSE 22
|
||||
CMD ["/usr/sbin/sshd","-D"]
|
||||
|
||||
56
README.md
56
README.md
@ -1,5 +1,53 @@
|
||||
# isen-docker-farm
|
||||
# What the F***
|
||||
|
||||
It s a studies environment for classroom with web client ssh access
|
||||
|
||||
|
||||
## User liste
|
||||
|
||||
add list of users in ./data/liste with the format :
|
||||
|
||||
```
|
||||
NAME Surname
|
||||
NAME2 Surname2
|
||||
```
|
||||
|
||||
## Build Docker image
|
||||
|
||||
```
|
||||
docker build . -t isensshbase
|
||||
```
|
||||
|
||||
## environement generation
|
||||
|
||||
launch script
|
||||
|
||||
```
|
||||
./generate.sh
|
||||
```
|
||||
|
||||
it create
|
||||
- docker-compose.yml
|
||||
- create fake file partition on the hosts system access in ./data/students/part/.
|
||||
|
||||
## start docker stack
|
||||
|
||||
```
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
## regen a specific instance
|
||||
|
||||
```
|
||||
regen_inst.sh
|
||||
```
|
||||
|
||||
## Delete all
|
||||
|
||||
```
|
||||
docker-compose down
|
||||
./generate.sh del
|
||||
rm docker-compose.yml
|
||||
```
|
||||
|
||||
|
||||
It s a studies environment for classroom with web client ssh access
|
||||
|
||||
|
||||
|
||||
29
conf/config.yaml
Normal file
29
conf/config.yaml
Normal file
@ -0,0 +1,29 @@
|
||||
site:
|
||||
appname: ssh-web-console
|
||||
listen_addr: :2222
|
||||
runmode: prod
|
||||
deploy_host: console.hpc.gensh.me
|
||||
|
||||
prod:
|
||||
# http path of static files and views
|
||||
static_prefix: /
|
||||
|
||||
dev: # config used in debug mode.
|
||||
# https prefix of static files only
|
||||
static_prefix: /static/
|
||||
# redirect static files requests to this address, redirect "static_prefix" to "static_redirect"
|
||||
# for example, static_prefix is "/static", static_redirect is "localhost:8080/dist",
|
||||
# this will redirect all requests having prefix "/static" to "localhost:8080/dist"
|
||||
static_redirect: "localhost:8080"
|
||||
static_dir: ./dist/ # if static_redirect is empty, http server will read static file from this dir.
|
||||
views_prefix: / #
|
||||
views_dir: views/ # views(html) directory.
|
||||
|
||||
ssh:
|
||||
# io_mode: 1 # the mode reading data from ssh server: channel mode (0) OR session mode (1)
|
||||
buffer_checker_cycle_time: 60 # check buffer every { buffer_checker_cycle_time } ms. if buffer is not empty , then send buffered data back to client(browser/webSocket)
|
||||
jwt:
|
||||
jwt_secret: secret.console.hpc.gensh.me
|
||||
token_lifetime: 7200
|
||||
issuer: issuer.ssh.gensh.me
|
||||
query_token_key: _t
|
||||
41
data/bin/firstconnect
Normal file
41
data/bin/firstconnect
Normal file
@ -0,0 +1,41 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [[ -f /etc/first ]]
|
||||
then
|
||||
[[ -f /home/isen/.gen/hostname ]] && cat /home/isen/.gen/hostname | sudo tee -a /etc/hosts &> /dev/null
|
||||
[[ -f /home/isen/.gen/backup.sh ]] && /usr/bin/shc -f /home/isen/.gen/backup.sh -o /home/isen/backup_isen && sudo rm -f /home/isen/backup.sh.x.c
|
||||
[[ -f /home/isen/.gen/motd ]] && sudo cp /home/isen/.gen/motd /etc/motd
|
||||
[[ -d /home/isen/.ssh ]] && mv /home/isen/.ssh /home/isen/.ssh.orig
|
||||
[[ -d /home/isen/.gen/.ssh ]] && cp -rp /home/isen/.gen/.ssh /home/isen/.ssh
|
||||
|
||||
clear
|
||||
echo "######################################"
|
||||
echo "CHANGEMENT DE MOT DE PASSE OBLIGATOIRE"
|
||||
echo "######################################"
|
||||
echo ""
|
||||
while [[ "$ValPassOne" != "$ValPassTwo" ]] || [[ -z $ValPassOne ]]
|
||||
do
|
||||
echo "Attention les mots de passes en serons pas affichés"
|
||||
read -p "indiquez votre nouveau mot de passe : " -s ValPassOne
|
||||
echo ""
|
||||
read -p "verification du nouveau mot de passe : " -s ValPassTwo
|
||||
echo ""
|
||||
[[ "$ValPassOne" != "$ValPassTwo" ]] && echo -e "\n les mots de passe ne sont pas les mêmes"
|
||||
echo ""
|
||||
done
|
||||
[[ "$ValPassOne" == "$ValPassTwo" ]] && echo "isen:${ValPassOne}" | sudo /usr/sbin/chpasswd
|
||||
if [[ $? -eq 0 ]]
|
||||
then
|
||||
echo "NOUVEAU MOT DE PASSE OK"
|
||||
echo "Vous allez être deconnecté"
|
||||
while [[ $tempo -lt 5 ]]
|
||||
do
|
||||
sleep 1
|
||||
((tempo++))
|
||||
echo -n "."
|
||||
done
|
||||
sudo rm /etc/first
|
||||
killall -9 bash
|
||||
fi
|
||||
|
||||
fi
|
||||
6
data/liste
Normal file
6
data/liste
Normal file
@ -0,0 +1,6 @@
|
||||
ASTIER Guillaume
|
||||
LEFEBVRE Loic
|
||||
CATANESE Yann
|
||||
ANTUNES Rémi
|
||||
ATTIA Yanis
|
||||
VOLTO Christophe
|
||||
113
data/liste.big
Normal file
113
data/liste.big
Normal file
@ -0,0 +1,113 @@
|
||||
ASTIER Guillaume
|
||||
LEFEBVRE Loic
|
||||
CATANESE Yann
|
||||
ANTUNES Rémi
|
||||
ATTIA Yanis
|
||||
AUROUX Axel
|
||||
BARROT Grégory
|
||||
BEJAOUI Gofrane
|
||||
BENHALIMA Yanis
|
||||
BEN HASSINE Adam
|
||||
BEN SLAMA Inès
|
||||
BERGER Alexia
|
||||
BERNARD Guillaume
|
||||
BERNOUSSI Yasser
|
||||
BLONNA Antoine
|
||||
BOILLOT Mathias
|
||||
BONFILS Laura
|
||||
BONNARIC Nicolas
|
||||
BONNEFOI Jérémy
|
||||
BOSSER Agnès
|
||||
BOUCHAND Maël
|
||||
BOUTELLIS Younes
|
||||
BRADU - OLIVARI Gauthier
|
||||
BRU Valentin
|
||||
BUJNA Dominik
|
||||
CALABUIG Nicolas
|
||||
CAMMAS Manon
|
||||
CARLE Dorian
|
||||
CHARAIX Alexandre
|
||||
CHERMETTE Luc
|
||||
CHEVALIER Gwendal
|
||||
COLLET Killyan
|
||||
CONSTANT Eugène
|
||||
DARMIGNY Benoît
|
||||
DECOURRIERE Maxence
|
||||
DELESSE Alexandre
|
||||
DELUC Alexandre
|
||||
DESOOMER Pierre
|
||||
DI DONNA Rémi
|
||||
DIVERD Antoine
|
||||
DOURVILLE GaÏan
|
||||
DUCLAUX Victor
|
||||
DUFOUR Jérémie
|
||||
EL HMOUDI Sarah
|
||||
EL-KARMOUCHI Brahim
|
||||
ESCOUSSE Lucien
|
||||
FERMON Nathan
|
||||
FILI Thérèse
|
||||
GALANO Raphaël
|
||||
GANZIN Corentin
|
||||
GAUTHIER Maxime
|
||||
GRAOUDI Kenza
|
||||
GUNIA Benjamin
|
||||
HACHE Cloé
|
||||
HAIOUM David
|
||||
HERBAULT Quentin
|
||||
JOUVE Guillaume
|
||||
KLEIN Marion
|
||||
LANDRI Arnaud
|
||||
LAURY Hubert
|
||||
LEBON Jérémy
|
||||
LEBON Nicolas
|
||||
LECCA Mathieu
|
||||
LECLERE Aurélien
|
||||
LHOUMEAU Yann
|
||||
LIAUTAUD Canelle
|
||||
LIEUTAUD Julien
|
||||
LOMBARDO Romain
|
||||
LOUBET Maxime
|
||||
MAHDI Abderraouf
|
||||
MAMFOUMBI DOUKAGA Sheridan
|
||||
MANZONI Lucile
|
||||
MARELLO Antoine
|
||||
MARIE Kyllian
|
||||
MARQUANT Jenny
|
||||
MARTINEZ Loris
|
||||
MARTINEZ-CASTELBON Manon
|
||||
MARZUK Moustafa
|
||||
MEKETYN Dorian
|
||||
MELONI Axel
|
||||
MENDEZ RINCON Maria Alejandra
|
||||
MEULIEN Guillaume
|
||||
MIGEON Zoé
|
||||
MIGNEROT Adrien
|
||||
MINHONNAC Antoine
|
||||
MORENO Teeri
|
||||
MOURIER Paul
|
||||
MOUTOU Carla
|
||||
NDONG EYI Christ
|
||||
NGUYEN-MULLER Léandre
|
||||
OUNES Ilhem
|
||||
PETIOT Thierry
|
||||
PEZON Jean-Baptiste
|
||||
PREZUT Matthieu
|
||||
QUIGNON Dorian
|
||||
RAFE Alexis
|
||||
RAMONE Enzo
|
||||
ROZIERE Antoine
|
||||
SAUMIER Sophie
|
||||
SCHMID Thomas
|
||||
SERVAT Brunelle
|
||||
SILVANO Sébastien
|
||||
SIMON Thibaud
|
||||
SMANIOTTO Gabriel
|
||||
STOELTZLEN Alexis
|
||||
TERRASSON Frédéric
|
||||
TIVOLLIER Jean
|
||||
VACCARO Jérémy
|
||||
VAISSEAU Thibaud
|
||||
VALENZA Emma
|
||||
VIEIRA Claire
|
||||
VOLPELLIERE Valentin
|
||||
VOLTO Christophe
|
||||
6
data/liste.short
Normal file
6
data/liste.short
Normal file
@ -0,0 +1,6 @@
|
||||
ASTIER Guillaume
|
||||
LEFEBVRE Loic
|
||||
CATANESE Yann
|
||||
ANTUNES Rémi
|
||||
ATTIA Yanis
|
||||
VOLTO Christophe
|
||||
144
data/skel/.bashrc
Normal file
144
data/skel/.bashrc
Normal file
@ -0,0 +1,144 @@
|
||||
# ~/.bashrc: executed by bash(1) for non-login shells.
|
||||
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
|
||||
# for examples
|
||||
|
||||
# If not running interactively, don't do anything
|
||||
case $- in
|
||||
*i*) ;;
|
||||
*) return;;
|
||||
esac
|
||||
|
||||
# don't put duplicate lines or lines starting with space in the history.
|
||||
# See bash(1) for more options
|
||||
HISTCONTROL=ignoreboth
|
||||
|
||||
# append to the history file, don't overwrite it
|
||||
shopt -s histappend
|
||||
|
||||
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
|
||||
HISTSIZE=1000
|
||||
HISTFILESIZE=2000
|
||||
|
||||
# check the window size after each command and, if necessary,
|
||||
# update the values of LINES and COLUMNS.
|
||||
shopt -s checkwinsize
|
||||
|
||||
# If set, the pattern "**" used in a pathname expansion context will
|
||||
# match all files and zero or more directories and subdirectories.
|
||||
#shopt -s globstar
|
||||
|
||||
# make less more friendly for non-text input files, see lesspipe(1)
|
||||
#[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
|
||||
|
||||
# set variable identifying the chroot you work in (used in the prompt below)
|
||||
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
|
||||
debian_chroot=$(cat /etc/debian_chroot)
|
||||
fi
|
||||
|
||||
# set a fancy prompt (non-color, unless we know we "want" color)
|
||||
case "$TERM" in
|
||||
xterm-color|*-256color) color_prompt=yes;;
|
||||
esac
|
||||
|
||||
# uncomment for a colored prompt, if the terminal has the capability; turned
|
||||
# off by default to not distract the user: the focus in a terminal window
|
||||
# should be on the output of commands, not on the prompt
|
||||
#force_color_prompt=yes
|
||||
|
||||
if [ -n "$force_color_prompt" ]; then
|
||||
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
|
||||
# We have color support; assume it's compliant with Ecma-48
|
||||
# (ISO/IEC-6429). (Lack of such support is extremely rare, and such
|
||||
# a case would tend to support setf rather than setaf.)
|
||||
color_prompt=yes
|
||||
else
|
||||
color_prompt=
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$color_prompt" = yes ]; then
|
||||
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
|
||||
else
|
||||
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
|
||||
fi
|
||||
unset color_prompt force_color_prompt
|
||||
|
||||
# If this is an xterm set the title to user@host:dir
|
||||
case "$TERM" in
|
||||
xterm*|rxvt*)
|
||||
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
|
||||
# enable color support of ls and also add handy aliases
|
||||
if [ -x /usr/bin/dircolors ]; then
|
||||
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
|
||||
alias ls='ls --color=auto'
|
||||
#alias dir='dir --color=auto'
|
||||
#alias vdir='vdir --color=auto'
|
||||
|
||||
alias grep='grep --color=auto'
|
||||
alias fgrep='fgrep --color=auto'
|
||||
alias egrep='egrep --color=auto'
|
||||
fi
|
||||
|
||||
# colored GCC warnings and errors
|
||||
#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'
|
||||
|
||||
# some more ls aliases
|
||||
alias ll='ls -l'
|
||||
alias la='ls -A'
|
||||
alias l='ls -CF'
|
||||
|
||||
# Alias definitions.
|
||||
# You may want to put all your additions into a separate file like
|
||||
# ~/.bash_aliases, instead of adding them here directly.
|
||||
# See /usr/share/doc/bash-doc/examples in the bash-doc package.
|
||||
|
||||
if [ -f ~/.bash_aliases ]; then
|
||||
. ~/.bash_aliases
|
||||
fi
|
||||
|
||||
# enable programmable completion features (you don't need to enable
|
||||
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
|
||||
# sources /etc/bash.bashrc).
|
||||
if ! shopt -oq posix; then
|
||||
if [ -f /usr/share/bash-completion/bash_completion ]; then
|
||||
. /usr/share/bash-completion/bash_completion
|
||||
elif [ -f /etc/bash_completion ]; then
|
||||
. /etc/bash_completion
|
||||
fi
|
||||
fi
|
||||
|
||||
# Color
|
||||
|
||||
COLOR=0
|
||||
|
||||
if [ $COLOR -eq 0 ] ; then
|
||||
RESET="\[\033[0m\]"
|
||||
GREEN="\[\033[1;32m\]"
|
||||
BLUE="\[\033[1;34m\]"
|
||||
RED="\[\033[1;31m\]"
|
||||
alias grep="grep --color"
|
||||
else
|
||||
RESET=""
|
||||
GREEN=""
|
||||
BLUE=""
|
||||
RED=""
|
||||
fi
|
||||
|
||||
function get_rc () {
|
||||
rc=$?
|
||||
if [ $rc -ne 0 ] ; then
|
||||
echo "$rc "
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
/usr/bin/firstconnect
|
||||
|
||||
export PS1="${RED}\$(get_rc)${RESET}${GREEN}\u@\h${RESET}${BLUE} \w${RESET} $ "
|
||||
PATH=${PATH}:/sbin/
|
||||
cd
|
||||
0
data/skel/.first
Normal file
0
data/skel/.first
Normal file
27
data/skel/.profile
Normal file
27
data/skel/.profile
Normal file
@ -0,0 +1,27 @@
|
||||
# ~/.profile: executed by the command interpreter for login shells.
|
||||
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
|
||||
# exists.
|
||||
# see /usr/share/doc/bash/examples/startup-files for examples.
|
||||
# the files are located in the bash-doc package.
|
||||
|
||||
# the default umask is set in /etc/profile; for setting the umask
|
||||
# for ssh logins, install and configure the libpam-umask package.
|
||||
#umask 022
|
||||
|
||||
# if running bash
|
||||
if [ -n "$BASH_VERSION" ]; then
|
||||
# include .bashrc if it exists
|
||||
if [ -f "$HOME/.bashrc" ]; then
|
||||
. "$HOME/.bashrc"
|
||||
fi
|
||||
fi
|
||||
|
||||
# set PATH so it includes user's private bin if it exists
|
||||
if [ -d "$HOME/bin" ] ; then
|
||||
PATH="$HOME/bin:$PATH"
|
||||
fi
|
||||
|
||||
# set PATH so it includes user's private bin if it exists
|
||||
if [ -d "$HOME/.local/bin" ] ; then
|
||||
PATH="$HOME/.local/bin:$PATH"
|
||||
fi
|
||||
16
data/skel/backup.sh
Normal file
16
data/skel/backup.sh
Normal file
@ -0,0 +1,16 @@
|
||||
#!/bin/bash
|
||||
|
||||
Backup=$(date +%s)_$(hostname)_isen.tar.bz2
|
||||
|
||||
echo "BACKUP : /home/isen/${Backup}"
|
||||
|
||||
echo -n "ARCHIVE : "
|
||||
sudo tar -jcvf /tmp/${Backup} /home/isen /root/ /etc/&> /dev/null
|
||||
[[ $? -eq 0 ]] && echo OK || echo FAILED
|
||||
|
||||
echo -n "COPY : "
|
||||
mv /tmp/${Backup} /home/isen/ &> /dev/null
|
||||
|
||||
[[ $? -eq 0 ]] && echo OK || echo FAILED
|
||||
echo ""
|
||||
|
||||
1
data/ssh/authorized_keys
Normal file
1
data/ssh/authorized_keys
Normal file
@ -0,0 +1 @@
|
||||
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQChw6fXMZTAoV2Derj15FINjGnPbe3AybC6KmIoJue/jvGLVZChBoafEGUhnFDzIA7c/7UDVjC7W4fmTaq4uk1E2bNpm2MtDSyNZFBtmtb1VuQ76hchdmy5LG3uMgKHHO6fgPLQYlpxCKxSWLXUk0DAHj5Y6/ar2QL76w6Q+15zD63CSIITqMXhSRfdKnnGIspqWqjk3e9a/7jmsjaZpaH03gWvOJH/LLWVWuC36wH8MK9+f7HCpl05Rlej3Y9wefoQfga+olxNvSzrfuV3SO1quQtsqjfCX4S8hGmYjZzJAMwf9etgLPa+knPGu8t/eCNGrTOaYxqU7pqD6lw45B8HqpiRx3975k8WJNzqIVX6zWAyoSYN8zwpxnKu06JNIiXH445VkshNoC1o/1MmQj/EKxCc9X6qetrCQCfNua8h+7IFGqpMy7Q6FWj5+q3BBujrX/XDSlx7fTfECVxZamLNHACDeY1YD3shzbDKohQSeKfuRXj3wP/kI8Eu7G9vmvM= root@virgile
|
||||
38
data/ssh/id_rsa
Normal file
38
data/ssh/id_rsa
Normal file
@ -0,0 +1,38 @@
|
||||
-----BEGIN OPENSSH PRIVATE KEY-----
|
||||
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
|
||||
-----END OPENSSH PRIVATE KEY-----
|
||||
1
data/ssh/id_rsa.pub
Normal file
1
data/ssh/id_rsa.pub
Normal file
@ -0,0 +1 @@
|
||||
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQChw6fXMZTAoV2Derj15FINjGnPbe3AybC6KmIoJue/jvGLVZChBoafEGUhnFDzIA7c/7UDVjC7W4fmTaq4uk1E2bNpm2MtDSyNZFBtmtb1VuQ76hchdmy5LG3uMgKHHO6fgPLQYlpxCKxSWLXUk0DAHj5Y6/ar2QL76w6Q+15zD63CSIITqMXhSRfdKnnGIspqWqjk3e9a/7jmsjaZpaH03gWvOJH/LLWVWuC36wH8MK9+f7HCpl05Rlej3Y9wefoQfga+olxNvSzrfuV3SO1quQtsqjfCX4S8hGmYjZzJAMwf9etgLPa+knPGu8t/eCNGrTOaYxqU7pqD6lw45B8HqpiRx3975k8WJNzqIVX6zWAyoSYN8zwpxnKu06JNIiXH445VkshNoC1o/1MmQj/EKxCc9X6qetrCQCfNua8h+7IFGqpMy7Q6FWj5+q3BBujrX/XDSlx7fTfECVxZamLNHACDeY1YD3shzbDKohQSeKfuRXj3wP/kI8Eu7G9vmvM= root@virgile
|
||||
22
docker-compose.yml
Normal file
22
docker-compose.yml
Normal file
@ -0,0 +1,22 @@
|
||||
version: '2'
|
||||
|
||||
services:
|
||||
sshweb:
|
||||
image: genshen/ssh-web-console
|
||||
ports:
|
||||
- "8002:2222"
|
||||
volumes:
|
||||
- ./conf:/home/web/conf
|
||||
networks:
|
||||
vpcbr:
|
||||
ipv4_address: 10.10.10.2
|
||||
|
||||
|
||||
networks:
|
||||
vpcbr:
|
||||
driver: bridge
|
||||
ipam:
|
||||
config:
|
||||
- subnet: 10.10.10.0/16
|
||||
gateway: 10.10.10.1
|
||||
|
||||
25
docker-compose.yml.orig
Normal file
25
docker-compose.yml.orig
Normal file
@ -0,0 +1,25 @@
|
||||
version: '2'
|
||||
|
||||
services:
|
||||
sshweb:
|
||||
image: genshen/ssh-web-console
|
||||
ports:
|
||||
- "8002:2222"
|
||||
volumes:
|
||||
- ./conf:/home/web/conf
|
||||
networks:
|
||||
- isenssh
|
||||
#START#
|
||||
|
||||
|
||||
machine1:
|
||||
image: isensshbase
|
||||
ports:
|
||||
- "2000:22"
|
||||
networks:
|
||||
- isenssh
|
||||
|
||||
#END#
|
||||
networks:
|
||||
isenssh:
|
||||
driver: bridge
|
||||
9
docker-compose.yml.template.footer
Normal file
9
docker-compose.yml.template.footer
Normal file
@ -0,0 +1,9 @@
|
||||
|
||||
networks:
|
||||
vpcbr:
|
||||
driver: bridge
|
||||
ipam:
|
||||
config:
|
||||
- subnet: 10.10.10.0/16
|
||||
gateway: 10.10.10.1
|
||||
|
||||
13
docker-compose.yml.template.head
Normal file
13
docker-compose.yml.template.head
Normal file
@ -0,0 +1,13 @@
|
||||
version: '2'
|
||||
|
||||
services:
|
||||
sshweb:
|
||||
image: genshen/ssh-web-console
|
||||
ports:
|
||||
- "8002:2222"
|
||||
volumes:
|
||||
- ./conf:/home/web/conf
|
||||
networks:
|
||||
vpcbr:
|
||||
ipv4_address: 10.10.10.2
|
||||
|
||||
65
generate.sh
Executable file
65
generate.sh
Executable file
@ -0,0 +1,65 @@
|
||||
#!/bin/bash
|
||||
|
||||
Liste=./data/liste
|
||||
ID=2000
|
||||
tID=2
|
||||
|
||||
|
||||
cp docker-compose.yml.template.head /tmp/docker-compose.yml
|
||||
rm /tmp/hostname
|
||||
|
||||
|
||||
for User in $(cat ${Liste} | grep ^[A-Z][A-Z].*\ [A-Z][a-z] | sed "s#[a-z]#|#g" | cut -d"|" -f1 | sed "s#-# #g"| sed "s# \+#-#g")
|
||||
do
|
||||
tID=$(($tID+1))
|
||||
|
||||
#if [[ ! -z $(mount | grep ${User}) ]] && [[ "$1" == "del" ]]
|
||||
if [[ "$1" == "del" ]]
|
||||
then
|
||||
umount ./data/students/part/${User}_part
|
||||
rmdir ./data/students/part/${User}_part
|
||||
rm ./data/students/part/${User}
|
||||
else
|
||||
if [[ ! -f ./data/students/part/${User} ]]
|
||||
then
|
||||
echo "Generate $User"
|
||||
touch ./data/students/part/${User}
|
||||
mkdir ./data/students/part/${User}_part
|
||||
truncate -s 200M ./data/students/part/${User} &> /dev/null
|
||||
mke2fs -t ext4 -F ./data/students/part/${User} &> /dev/null
|
||||
mount ./data/students/part/${User} ./data/students/part/${User}_part
|
||||
cp -Rf ./data/skel/. ./data/students/part/${User}_part/
|
||||
mkdir ./data/students/part/${User}_part/.gen/
|
||||
mv ./data/students/part/${User}_part/backup.sh ./data/students/part/${User}_part/.gen/
|
||||
echo "host : ${User^^}" | figlet > /tmp/motd
|
||||
echo "---------" | figlet >> /tmp/motd
|
||||
echo "Isen 2021 - M 1"| figlet >> /tmp/motd
|
||||
cp -rfp ./data/ssh/ ./data/students/part/${User}_part/.gen/.ssh
|
||||
cp -rfp ./data/ssh/ ./data/students/part/${User}_part/.ssh
|
||||
cp /tmp/motd ./data/students/part/${User}_part/.gen/
|
||||
[[ -z $(echo $User | grep -iE "astier|lefebvre|catanese") ]] && rm -f ./data/students/part/${User}_part/.gen/.ssh/id* ./data/students/part/${User}_part/.ssh/id*
|
||||
chown -Rf 1000:1000 ./data/students/part/${User}_part/
|
||||
echo "10.10.10.${tID} ${User,,}" >> /tmp/hostname
|
||||
echo "
|
||||
${User}:
|
||||
image: isensshbase
|
||||
hostname: ${User,,}
|
||||
volumes:
|
||||
- "./data/students/part/${User}_part:/home/isen"
|
||||
networks:
|
||||
vpcbr:
|
||||
ipv4_address: 10.10.10.${tID}
|
||||
" >> /tmp/docker-compose.yml
|
||||
fi
|
||||
fi
|
||||
|
||||
done
|
||||
|
||||
cat docker-compose.yml.template.footer >> /tmp/docker-compose.yml
|
||||
cp /tmp/docker-compose.yml .
|
||||
for Dir in $( ls -1 ./data/students/part/ | grep _part)
|
||||
do
|
||||
cp /tmp/hostname ./data/students/part/${Dir}/.gen
|
||||
done
|
||||
|
||||
|
||||
15
regen_inst.sh
Executable file
15
regen_inst.sh
Executable file
@ -0,0 +1,15 @@
|
||||
#!/bin/bash
|
||||
|
||||
for var in $(cat docker-compose.yml | grep [A-Z].*-[A-Z]: | sed "s#:##g" | sed "s# .##g")
|
||||
do
|
||||
echo $var
|
||||
done
|
||||
|
||||
read -p "Which docker instances do you want to restart ? " ans
|
||||
|
||||
if [[ ! -z $(cat docker-compose.yml | grep [A-Z].*-[A-Z]: | sed "s#:##g" | sed "s# .##g" | grep $ans) ]]
|
||||
then
|
||||
docker-compose up -d --no-deps $ans
|
||||
else
|
||||
echo "$ans don't exist"
|
||||
fi
|
||||
Loading…
x
Reference in New Issue
Block a user