Benjamin Collet 5 years ago
parent
commit
f5ed5353ec
2 changed files with 21 additions and 6 deletions
  1. 18 6
      README.md
  2. 3 0
      if-pre-up.d/netns

+ 18 - 6
README.md

@@ -20,7 +20,7 @@ On invocation of `ifup`:
   * if it does and the interface is configured, the script will invoke `ifup`
     for this interface inside the namespace.
 
-## `zsh` functions to run commands and start a shell in a namespace
+## `zsh` functions to run commands and start a shell in a namespace with a custom prompt
 ```
 nse () {
   if [ $# -lt 2 ]; then
@@ -30,11 +30,8 @@ nse () {
   fi
   NS=${1}
   shift
-  unshare -m /bin/sh <<-EOF
-mount --make-rprivate /
-mount --bind /run/network.${NS} /run/network
-ip netns exec ${NS} ${@}
-EOF
+  ARGS=${@}
+  ip netns exec ${NS} unshare -m /bin/sh -c "mount --make-rprivate /;mount --bind /run/network.${NS} /run/network; ${ARGS}"
 }
 
 nss () {
@@ -45,4 +42,19 @@ nss () {
   fi
   nse $1 zsh -i
 }
+
+alias nsr="nsenter -t 1 -n"
+
+NS=`ip netns identify $$`
+
+if [ "$NS" ]; then;
+  NS="/$NS"
+fi
+
+if [ "`id -u`" -eq 0 ]; then
+  export PS1="%{%}%T%{%} %{%}%n%{%}@%{%}%m${NS} %{%}%~%{%}%#%{%} "
+else
+  export PS1="%{%}%T%{%} %{%}%n%{%}@%{%}%m${NS} %{%}%~%{%}%#%{%} "
+fi
+
 ```

+ 3 - 0
if-pre-up.d/netns

@@ -11,6 +11,9 @@ then
     if [ ! -f /etc/netns/$IF_NETNS/network/interfaces ]; then
       touch /etc/netns/$IF_NETNS/network/interfaces
     fi
+    if [ ! -f /etc/netns/$IF_NETNS/resolv.conf ]; then
+      touch /etc/netns/$IF_NETNS/resolv.conf
+    fi
     mkdir -p /run/network.${IF_NETNS}
     rm -rf /run/network.${IF_NETNS}/*
     ip netns add ${IF_NETNS}