init(): initial commit
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
FROM ubuntu:22.04
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
RUN apt update && \
|
||||
apt install -y --no-install-recommends \
|
||||
ca-certificates \
|
||||
curl \
|
||||
bash \
|
||||
zsh \
|
||||
vim \
|
||||
git \
|
||||
bind9-dnsutils \
|
||||
bridge-utils \
|
||||
conntrack \
|
||||
ethtool \
|
||||
ipset \
|
||||
iptables \
|
||||
openssh-server \
|
||||
strace \
|
||||
jq \
|
||||
netcat-openbsd \
|
||||
ipython3 \
|
||||
scapy \
|
||||
iproute2 \
|
||||
iputils-ping \
|
||||
iputils-arping \
|
||||
mtr \
|
||||
traceroute \
|
||||
tcptraceroute \
|
||||
net-tools \
|
||||
tcpdump \
|
||||
tshark \
|
||||
bird2-doc \
|
||||
bird2 && \
|
||||
mkdir /run/bird && \
|
||||
apt clean && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
USER root
|
||||
WORKDIR /root
|
||||
ENV HOSTNAME=sch57
|
||||
|
||||
# ZSH Themes
|
||||
RUN curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh | sh
|
||||
RUN git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
|
||||
RUN git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
|
||||
COPY ./configs/zshrc .zshrc
|
||||
COPY ./configs/motd motd
|
||||
|
||||
RUN chmod -R g=u /root
|
||||
RUN chown root:root /usr/bin/dumpcap
|
||||
|
||||
CMD [ "sleep", "infinity" ]
|
||||
@@ -0,0 +1,8 @@
|
||||
_ ___
|
||||
| | |__ \
|
||||
| | ) |
|
||||
| | / /
|
||||
| |____ / /_
|
||||
|______|____|
|
||||
|
||||
Networks Demo
|
||||
@@ -0,0 +1,140 @@
|
||||
# If you come from bash you might have to change your $PATH.
|
||||
# export PATH=$HOME/bin:/usr/local/bin:$PATH
|
||||
|
||||
# Path to your oh-my-zsh installation.
|
||||
export ZSH=$HOME/.oh-my-zsh
|
||||
|
||||
# Set name of the theme to load. Optionally, if you set this to "random"
|
||||
# it'll load a random theme each time that oh-my-zsh is loaded.
|
||||
# See https://github.com/robbyrussell/oh-my-zsh/wiki/Themes
|
||||
#export TERM="xterm-256color"
|
||||
ZSH_THEME="powerlevel10k/powerlevel10k"
|
||||
|
||||
ZSH_DISABLE_COMPFIX="true"
|
||||
|
||||
# Set list of themes to load
|
||||
# Setting this variable when ZSH_THEME=random
|
||||
# cause zsh load theme from this variable instead of
|
||||
# looking in ~/.oh-my-zsh/themes/
|
||||
# An empty array have no effect
|
||||
# ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" )
|
||||
|
||||
# Uncomment the following line to use case-sensitive completion.
|
||||
# CASE_SENSITIVE="true"
|
||||
|
||||
# Uncomment the following line to use hyphen-insensitive completion. Case
|
||||
# sensitive completion must be off. _ and - will be interchangeable.
|
||||
# HYPHEN_INSENSITIVE="true"
|
||||
|
||||
# Uncomment the following line to disable bi-weekly auto-update checks.
|
||||
# DISABLE_AUTO_UPDATE="true"
|
||||
|
||||
# Uncomment the following line to change how often to auto-update (in days).
|
||||
# export UPDATE_ZSH_DAYS=13
|
||||
|
||||
# Uncomment the following line to disable colors in ls.
|
||||
# DISABLE_LS_COLORS="true"
|
||||
|
||||
# Uncomment the following line to disable auto-setting terminal title.
|
||||
# DISABLE_AUTO_TITLE="true"
|
||||
|
||||
# Uncomment the following line to enable command auto-correction.
|
||||
# ENABLE_CORRECTION="true"
|
||||
|
||||
# Uncomment the following line to display red dots whilst waiting for completion.
|
||||
# COMPLETION_WAITING_DOTS="true"
|
||||
|
||||
# Uncomment the following line if you want to disable marking untracked files
|
||||
# under VCS as dirty. This makes repository status check for large repositories
|
||||
# much, much faster.
|
||||
# DISABLE_UNTRACKED_FILES_DIRTY="true"
|
||||
|
||||
# Uncomment the following line if you want to change the command execution time
|
||||
# stamp shown in the history command output.
|
||||
# The optional three formats: "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd"
|
||||
# HIST_STAMPS="mm/dd/yyyy"
|
||||
|
||||
# Would you like to use another custom folder than $ZSH/custom?
|
||||
# ZSH_CUSTOM=/path/to/new-custom-folder
|
||||
|
||||
# Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*)
|
||||
# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/
|
||||
# Example format: plugins=(rails git textmate ruby lighthouse)
|
||||
# Add wisely, as too many plugins slow down shell startup.
|
||||
plugins=(
|
||||
git
|
||||
zsh-autosuggestions
|
||||
yarn
|
||||
web-search
|
||||
jsontools
|
||||
macports
|
||||
node
|
||||
sudo
|
||||
docker
|
||||
)
|
||||
|
||||
source $ZSH/oh-my-zsh.sh
|
||||
# User configuration
|
||||
cat motd
|
||||
|
||||
# export MANPATH="/usr/local/man:$MANPATH"
|
||||
|
||||
# You may need to manually set your language environment
|
||||
# export LANG=en_US.UTF-8
|
||||
|
||||
# Preferred editor for local and remote sessions
|
||||
# if [[ -n $SSH_CONNECTION ]]; then
|
||||
# export EDITOR='vim'
|
||||
# else
|
||||
# export EDITOR='mvim'
|
||||
# fi
|
||||
|
||||
# Compilation flags
|
||||
# export ARCHFLAGS="-arch x86_64"
|
||||
|
||||
# ssh
|
||||
# export SSH_KEY_PATH="~/.ssh/rsa_id"
|
||||
|
||||
# Set personal aliases, overriding those provided by oh-my-zsh libs,
|
||||
# plugins, and themes. Aliases can be placed here, though oh-my-zsh
|
||||
# users are encouraged to define aliases within the ZSH_CUSTOM folder.
|
||||
# For a full list of active aliases, run `alias`.
|
||||
#
|
||||
# Example aliases
|
||||
# alias zshconfig="mate ~/.zshrc"
|
||||
# alias ohmyzsh="mate ~/.oh-my-zsh"
|
||||
|
||||
# test -e "${HOME}/.iterm2_shell_integration.zsh" && source "${HOME}/.iterm2_shell_integration.zsh"
|
||||
|
||||
# Reload the plugin to highlight the commands each time Iterm2 starts
|
||||
#source /usr/local/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
|
||||
|
||||
### VISUAL CUSTOMIZATION ###
|
||||
# Elements options of left prompt (remove the @username context)
|
||||
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(host dir rbenv)
|
||||
# Elements options of right prompt
|
||||
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=()
|
||||
# Add a second prompt line for the command
|
||||
POWERLEVEL9K_PROMPT_ON_NEWLINE=false
|
||||
|
||||
# Add a space in the first prompt
|
||||
POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX=''
|
||||
|
||||
# Visual customization of the second prompt line
|
||||
#local user_symbol="$"
|
||||
#if [[ $(print -P "%#") =~ "#" ]]; then
|
||||
# user_symbol = "#"
|
||||
#fi
|
||||
#POWERLEVEL9K_MULTILINE_LAST_PROMPT_PREFIX="%{%B%F{black}%K{yellow}%} $user_symbol%{%b%f%k%F{yellow}%} %{%f%}"
|
||||
|
||||
# Change the git status to red when something isn't committed and pushed
|
||||
POWERLEVEL9K_VCS_MODIFIED_BACKGROUND='red'
|
||||
|
||||
# Add a new line after the global prompt
|
||||
POWERLEVEL9K_PROMPT_ADD_NEWLINE=true
|
||||
|
||||
# Colorize the top Tabs of Iterm2 with the same color as background
|
||||
# Just change the 18/26/33 which are the rgb values
|
||||
echo -e "\033]6;1;bg;red;brightness;18\a"
|
||||
echo -e "\033]6;1;bg;green;brightness;26\a"
|
||||
echo -e "\033]6;1;bg;blue;brightness;33\a"
|
||||
Executable
+68
@@ -0,0 +1,68 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -eux pipefail
|
||||
|
||||
# containerlab needs some time to setup links
|
||||
sleep $CONTAINERLAB_TIMEOUT
|
||||
|
||||
if [ "$ROLE" = "switch" ]; then
|
||||
echo "Configuring as switch with MAC=$MAC"
|
||||
|
||||
if [ "$VLAN" = "yes" ]; then
|
||||
ip link add name br0 type bridge vlan_filtering 1
|
||||
else
|
||||
ip link add name br0 type bridge
|
||||
fi
|
||||
|
||||
ip link set dev br0 address $MAC
|
||||
ip link set br0 up
|
||||
for i in eth1 eth2 eth3 eth4; do
|
||||
ip link set $i master br0
|
||||
ip link set $i up
|
||||
done
|
||||
|
||||
if [ "$VLAN" = "yes" ]; then
|
||||
bridge vlan add dev eth1 vid 10 pvid untagged
|
||||
bridge vlan add dev eth2 vid 20 pvid untagged
|
||||
bridge vlan add dev eth4 vid 10,20
|
||||
fi
|
||||
|
||||
echo "Switch setup complete"
|
||||
|
||||
elif [ "$ROLE" = "bridge" ]; then
|
||||
echo "Configuring as bridge with MAC=$MAC"
|
||||
|
||||
if [ "$VLAN" = "yes" ]; then
|
||||
ip link add name br0 type bridge vlan_filtering 1
|
||||
else
|
||||
ip link add name br0 type bridge
|
||||
fi
|
||||
|
||||
ip link set dev br0 address $MAC
|
||||
ip link set br0 up
|
||||
ip link set eth1 master br0
|
||||
ip link set eth2 master br0
|
||||
ip link set eth1 up
|
||||
ip link set eth2 up
|
||||
|
||||
if [ "$VLAN" = "yes" ]; then
|
||||
bridge vlan add dev eth1 vid 10,20
|
||||
bridge vlan add dev eth2 vid 10,20
|
||||
fi
|
||||
|
||||
echo "Bridge setup complete"
|
||||
|
||||
elif [ "$ROLE" = "host" ]; then
|
||||
echo "Configuring as host with MAC=$MAC"
|
||||
|
||||
ip link set dev eth1 down
|
||||
ip link set dev eth1 address $MAC
|
||||
ip link set dev eth1 up
|
||||
|
||||
echo "Host setup complete"
|
||||
|
||||
else
|
||||
echo "Unknown ROLE: $ROLE"
|
||||
fi
|
||||
|
||||
sleep infinity
|
||||
Reference in New Issue
Block a user