dotfiles/shell/source/netns.sh

34 lines
713 B
Bash

netns.enter () {
ip netns exec $1 $SHELL
}
alias nse=netns.enter
function _complete_nse
{
local word=${COMP_WORDS[1]}
COMPREPLY=($(compgen -W "$(ip netns list | awk '{print $1}' | xargs)" -- ${word}))
}
complete -F _complete_nse netns.enter
complete -F _complete_nse nse
netns.current () {
ip netns identify $$
# netns=$(lsns -p $$ -t net -no NSFS)
# [[ -n $netns ]] && basename $netns
}
netns.ps () {
ps ef $(ip netns pids $(netns.current))
}
netns.docker_mount () {(
set -e
name=$1
pid=$(docker inspect -f '{{.State.Pid}}' $name)
[[ ! -d /var/run/netns/ ]] && mkdir -p /var/run/netns/
ln -sfT /proc/$pid/ns/net /var/run/netns/$name
netns.enter $name
)}